我对 WCF 和其他 Web 服务(例如 asp.net ASMX、.net Remoting)感到困惑,谁能告诉我 WCF 和其他的有什么区别,我应该什么时候使用它,谢谢!
3 回答
WCF 是一个通信堆栈,允许通过 HTTP(如 ASMX)和 TCP(如 Remoting)以及命名管道(实际上是机器内跨进程调用)、MSMQ 和 .NET 3.5 REST 公开服务。
它允许这样做,因为它将服务的通信部分与业务逻辑分离。您需要做的就是使用适当的合同属性(分别为 [SeriviceContract]、[OperationContract] 和 [DataContract])装饰您的服务类、方法和 DTO。
这样做的好处是能够编写一次服务,并允许许多不同类型的客户端使用相同的服务(即 Java 客户端可以使用 HTTP,.NET 客户端可以使用 TCP,旧版客户端可以使用 MSMQ 等)。
WCF 仍将允许您使用每种传输的所有功能,包括安全性、事务、可靠消息传递等,但您需要谨慎使用。并非所有功能都适用于所有传输,您需要相应地进行设计。WCF 允许您在合同中指定需要哪些功能。这可以防止某人尝试以不支持所需功能集的方式公开您的服务(即,如果您的服务需要事务,WCF 运行时将不允许通过基本 HTTP 端点访问该服务)。
WCF 还可以通过自定义行为(影响 WCF 运行时的工作方式)和自定义通道(控制 WCF 服务与外界通信的方式)进行扩展。
与 ASMX 相比,WCF 有一点学习曲线,但好处绝对超过了这条学习曲线。
希望有帮助。
WCF 是通信库,它是 .NET 远程处理和“旧”ASMX Web 服务的超集,也是这两个库的继承者。
WCF Web 服务对 WS-* 标准有更好的支持,并且互操作性问题更少。
基本上,您应该使用 WCF,因为 .net Remoting 和 ASMX 可能被认为是遗留问题(而且,如果我没记错的话,一些 .NET 远程处理错误仅在 WCF 中修复,而从未在 .NET 远程处理本身中修复)
我认为可以公平地说 WCF 取代了 ASMX 和远程处理。您可以使用 ASMX 和远程处理以及使用 WCF 实现更多功能,但您拥有更多功能,并且通常可以更好地控制正在发生的事情。
所以我相信,如果可以的话,你应该使用 WCF。