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