我对WCF和其他Web服务(例如asp.net ASMX,.net Remoting)感到困惑,任何人都可以告诉我与WCF和其他人有什么区别,我应该何时使用它,谢谢!
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的优势在于减轻了学习曲线的负担.
希望有所帮助.