首先,WCF和WebService一些区别
1,WCF支持多中通信协议,http/https
tcp/udp/msmq.命名管道,对等网,消息可达性,事物流等.
2,WCF可以与ASP.NET集成,共享同一个上下文(HttpContext)
3,WCF支持多种消息传输格式,如text,binary,mtom,Json等等
4,WCF的安全性更强,支持对称安全,非对称安全,消息安全,传输安全,SSL安全,Windows流安全等.
5,WCF支持多种会话模式,单项
双向,请求相应.
6,WCF支持REST风格.
7,WCF支持多种序列化格式方式,DataContractSerializer,XmlSerializer
,DataContract,JsonSerializer等
8,WCF
支持多种并发模式:单例、单调、会话
1.WebService:严格来说是行业标准,不是技术,使用XML扩展标记语言来表示数据(这个是夸语言和平台的关键)。微
软的Web服务实现称为ASP.NET
Web Service.它使用Soap简单对象访问协议来实现分布式环境里应用程序之间的数据交互。
WSDL来实现服务接口相关的描述。此外Web
services 可以注册到UDDI中心.供其客户查找使用。
后来微软做了ASP.NET Web
Service的安全,性能,数据加密、解密,托管宿主等多方面的扩展,称为WSE系列,这个是过
度产品,最高到WSE3.0.后来就是WCF时代。
2.WCF:其实一定程度上就是ASP.NET Web Service,因为它支持Web Service的行业标准和核心协议,因此ASP.NET Web
Service
和WSE能做的事情,它几乎都能胜任,跨平台和语言更不是问题(数据也支持XML格式化,而且提供了自己的格式化器)。
但是WCF作为微软主推一个通讯组件或者平台,它的目标不仅仅是在支持和集成Web
Service,因为它还兼容和具备了微软
早期很多技术的特性。
根据微软官方的解释,WCF(之前的版本名为“Indigo”)是使用托管代码建立和运行面向服务(Service
Oriented)应用程
序的统一框架。它使得开发者能够建立一个跨平台的安全、可信赖、事务性的解决方案,且能与已有系统兼容协作。WCF
是微软分布式应用程序开发的集大成者,它整合了.Net平台下所有的和分布式系统有关的技术,如Enterprise
Sevices
(COM+).Net Remoting、Web
Service(ASMX)、WSE3.0和MSMQ消息队列。以通信(Communiation)范围而论,它可以跨进程、跨机器
、跨子网、企业网乃至于
Internet;以宿主程序而论,可以以ASP.NET,EXE,WPF,Windows Forms,NT
Service,COM+作为宿
主(Host)。WCF可以支持的协议包括TCP,HTTP,跨进程以及自定义,安全模式则包括SAML,
Kerberos,X509,用户/密码,
自定义等多种标准与模式。也就是说,在WCF框架下,开发基于SOA的分布式系统变得容易了,微软将所有与此相关的技术
要素都包含在内.
WCF之ABC
Address:
每一个WCF的Service都有一个唯一的地址。这个地址给出了Service的地址和传输协议(Transport
Protocol)
Binding:通信(Communication)的方式很多,同步的request/reply模式,非同步的fire-and-forget模式。消息可以单向或者双向的发送接收,可以立即发送或者把它放入到某一个队列中再处理。所供选择的传输协议也有Http,
Tcp,P2P,IPC等。当要考虑Client/Server如何进行通讯的时候,除了考虑以上提到的几点之外,还有其它很多需要考虑的因素,如安全,性能等。因此,简单来说,Binding只不过是微软提供的一组考虑比较周全、常用的封装好的通信方式。
Contract:Contract描述了Service能提供的各种服务。Contract有四种,包括Service Contract, Data
Contract, Fault Contract和Message Contract