ASMX2.0、WSE3.0和WCF问题解答(一)

Microsoft® .NET Framework 2.0 版通过几个有趣但可能令人困惑的方式重塑了 Web 服务的前景。因此,本月我打算解答一些与 ASP.NET Web Services (ASMX) 2.0、Web Services Enhancements (WSE) 3.0 和 Windows® Communication Foundation (WCF)(WinFX® 的一部分)有关的最常见问题。

  问:WCF 为开发人员提供了哪些 ASMX 2.0 和 WSE 3.0 所没有的功能?

  答:ASMX 2.0 和 WSE 3.0 提供了许多重要功能,但某些开发人员错误地认为这些功能只属于 WCF。例如,它们的堆栈都提供了类似的基于属性的编程模型,其中,您可以根据 .NET 接口定义编写服务协定(参见本专栏的第一个问题和解答)。它们的堆栈都提供与传输方式无关的 SOAP 实现,可以随附多个传输信道和自定义传输挂钩。它们的堆栈都允许在任何基于 Windows 的应用程序中承载服务(通过 WSE 中的 SOAPReceivers 或 WCF 中的 ServiceHost)。它们的堆栈都提供多个消息编码方式,包括两个最广泛受支持的编码方式:XML 1.0 和消息传输优化机制 (MTOM)。它们的堆栈都支持基于消息的安全性,并且可通过简单的配置元素进行配置(能够立即启用的安全性配置文件)。图 4 中的表格总结了堆栈的比较方式。

Feature ASMX 2 .0 plus WSE 3. 0 WCF
Hosting IIS/ASP.NET (.asmx)
SoapReceivers
IIS/ASP.NET (.svc)
ServiceHost<T>
WAS
Programming Model [WebService], [WebMethod], and so on (supports interfaces, generics, and the like) [ServiceContract], [OperationContract], and so on (supports interfaces, generics, and so on)
Message Exchange Patterns (MEP) One-way
Request-response
Custom (using WSE API)
One-way
Request-response
First/last-operation
Duplex
Custom
XML Serialization System.Xml
.Serialization
System.Runtime
.Serialization
System.Xml.Serialization
(you can choose)
Encodings XML 1.0
MTOM
DIME
Custom
XML 1.0
MTOM
Binary
Custom
Transports HTTP
TCP
Custom
HTTP
TCP
Named pipes
MSMQ
P2P
Custom
Protocols Security Security
Reliable messaging
Transactions
Behaviors (enabled via attributes or configuration Local DTC transactions
HTTP buffering
HTTP caching
HTTP sessions
Custom (via SoapExtensions, WSE filters)
Concurrency
Instancing
Throttling
Thread-binding
Exception handling and faults
Impersonation
Session management
Transaction behaviors
Custom (via behavior types)

  堆栈的主要不同之处在于它们对各种 WS-* 规范的支持。WSE 3.0 仅支持安全框架,而 WCF 支持安全框架、可靠消息处理框架和事务框架。如表格所示,WCF 还提供更多的本地处理行为和自定义挂钩。实际上,WCF 对象模型中的每一层都可以通过代码、属性或配置进行扩展。

  最终,WCF 提供更完整的开发框架,该框架是围绕各种 Web 服务协议从头开始设计的。现在,如果使用 ASMX 2.0 和 WSE 3.0,您仍然可以获得非常类似的体验。此外,未来迁移的前景也很看好。

相关消息:
上一页12345下一页

责任编辑:叶江

关键字:WCF Web服务 SOAP XML WSDL

专家博文

白皮书