你爱上的微软陷阱“它只是网络服务” :-)
它实际上很多更:
- 它是关于面向服务的编程一般(不只是网络服务 - 你也可以编写基于TCP/IP的服务,MSMQ基于队列的消息传递等等)
- 这是关于统一到目前为止存在的所有不同的编程模型(ASMX,企业服务,DCOM,.NET远程处理)
- 它是关于提供大量现成的和即用型管道系统它可以处理可靠的消息传递,事务支持,任何形状或任何形式的安全,服务发现,以及更多
- 它是关于将服务实现与客户端将如何调用它的细节分开,并使其成为一个可配置的协议栈,编码等
当然 - 这些东西大部分可以在ASMX或.NET远程处理 - 但尝试将ASMX Web服务转换为可调用在您的Intranet中使用TCP/IP和传输安全性......许多这些“旧”技术与他们如何使用它们有着非常复杂和直接的联系 - 在不更改整个服务代码的情况下,您不能轻易更改。
WCF将所有这些“管道细节”分离出来,例如要调用哪个端点,使用什么协议调用它,如何处理安全等,然后将其配置为可组合的“WCF堆栈”,以便您轻松切换服务XYZ使用允许匿名用户调用它的HTTP,使用需要Windows凭据的TCP/IP - 您的服务代码不会改变 - 它只是管道配置。
这对我来说是WCF最引人注目的原因 - 我完全可以专注于我的实际服务代码,并且不会污染大量管道工具 - 如何处理传输和文本编码等等。而且,我可以轻松更改并适应部署中的新需求和需求,而无需触摸我的实际服务代码。
另外,第二个重点是可扩展性 - 大多数旧技术只有他们自己的一种设置方式,许多都不适用于扩展。你必须要么按照他们的方式来使用它,要么就忘了它。 WCF有一个庞大而复杂的系统来扩展几乎任何东西 - 你可以创建自己的传输协议(人们已经创建了基于UDP或SMTP的绑定),你可以创建自己的消息编码器(就像我必须做的与网络交谈服务只能理解ISO-8859-1编码的消息),并且您可以扩展WCF中的其他任何内容 - 所有这些都是以有组织,记录完备,非常稳定和安全的方式进行的。
因此,这两件事情 - 将管道分解为可配置的层,并且最大限度地扩展 - 是我使用WCF的最有说服力的理由。
http://stackoverflow.com/questions/924756/what-am-i-missing-about-wcf – Kobi 2009-09-06 07:06:20