天天看点

什么是wcf

Wcf是分布式、可扩展、可配置、统一的编程模型,是多种既有技术的综合。在wcf身上,你可以找到ASP.NET Web Service、WSE、.Net Remoting、COM/DCOM、MSMQ等技术的身影。

ASP.NET Web Service

跨平台,基于开放的标准,包括XML、XSD、SOAP和WSDL等。

WSE(Enhancement)

对ASP.NET Web Service的增强,使ASP.NET Web Service正式成为一个适合企业级应用的通信框架。MS推出了WSE1.0、2.0和3.0,分别实现对不同的WS-*标准的支持,如WS-Security、WS-Routing、WS-Addressing、WS-MTOM等。

.Net Remoting

第一个基于.NET的分布式通信技术。Wcf和.Net Remoting最为类似。两者都采用基于信道栈的“管道式”消息处理机制,且可扩展。两者还都使用相同的服务寄宿和调用方式。.Net Remoting最大的不足在于无法跨平台。

COM/DCOM

COM组件基于相同的规范进行相互通信。一个组件包含一个接口和一个唯一标识(GUID)对外提供服务。COM的优点是支持不同语言编写的组件的互操作。DCOM是实现了分布式远程调用的COM技术,支持可靠、安全传输。

MSMQ

MSMQ的优点:异步消息发送、离线通信的支持、消息发送方和接收方完全解耦、支持可靠传输、支持事务。

要是没有wcf,开发人员必须学习不同的通信技术,还需要使用不同的开发模型,学习成本和开发成本都很高。使用wcf,开发人员便可以只需要掌握一种技术就可以完成Web Service、.Net Remoting、COM/DCOM、MSMQ等技术具有的全部功能。

Wcf与asp.net web service的区别

首先,单纯的web service只是一个行业标准,它使用xml来表示数据,这是跨平台和跨语言的基础,web service的核心是soap、wsdl和uddi。而asp.net web service是它的一种实现。Wcf一定程度上就是asp.net web service,因为它支持web service的标准WS-*。asp.net web service和wse能完成的事情,wcf也能完成。除此之外,wcf还是ms其他通信技术的集大成者,它可以跨进程、跨机器、跨子网、企业网乃至于 Internet来进行通信,是ms提供的用于通信的“瑞士军刀”。相较于asp.net web service,wcf有以下不同。

  • WCF 支持多种通信协议 Http/Https 、TCP/UDP、MSMQ、命名管道、对等网、消息可达性、事务流等。
  • WCF可以与ASP.NET 集成、共享一个上下文(HttpContext)。
  • WCF 支持多种消息传输格式:text,binary,mtom,Json 等。
  • WCF 安全性要强:支持对称安全、非对称安全、消息安全、传输安全、SSL流安全、Windows 流安全等。
  • WCF 支持REST 。
  • WCF支持多种格式化方式。DataContractSerializer、XmlSerializer、DataContractJsonSerializer等。
  • WCF 支持 WAS Hosting、Windows Hosting、Self-Hosting、IIS Hosting等。
  • WCF支持多种并发模式:单例、单调、会话。

继续阅读