与WCF和其他Web服务有什么区别?

leo*_*leo 5 asp.net wcf asmx

我对WCF和其他Web服务(例如asp.net ASMX,.net Remoting)感到困惑,任何人都可以告诉我与WCF和其他人有什么区别,我应该何时使用它,谢谢!

Jam*_*der 10

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有一点学习曲线,但ABSOLUTLY的优势在于减轻了学习曲线的负担.

希望有所帮助.


Yos*_*han 2

我认为可以公平地说 WCF 取代了 ASMX 和远程处理。您可以使用 ASMX 和远程处理以及 WCF 实现您能实现的一切,但您拥有更多的功能,并且通常对正在发生的事情有更多的控制。

所以我相信,如果可以的话,您应该使用 WCF。