参考:
什么是WCF?WCF都干什么用?
简而言之WCF是微软为了取代Web Service创建的一套编程模式。他与Web Service一样做出来的东西只是提供一种服务。
Web Service是一种技术,在网络上提供数据服务而并不关心数据的显示方式。服务器只提供数据,别的网站可以调用这个服务进行数据的显示。
WCF是.NET框架的一部分, WCF并不能脱离.NET框架而单独存在。WCF就是专门用于服务定制、发布与运行以及消息传递和处理的一组专门类的集合,也就是所谓的“类库”。这些类通过一定方式被组织起来,共同协作,并为开发者提供了一个统一的编程模式。WCF之所以特殊,是在于它所应对的场景与普通的.NET类库不同,它主要用于处理进程间乃至于机器之间消息的传递与处理,同时它引入了SOA的设计思想,以服务的方式公布并运行,以方便客户端跨进程和机器对服务进行调用。实际上,WCF就是微软对于分布式处理的编程技术的集大成者,它将DCOM、Remoting、Web Service、WSE、MSMQ集成在一起,从而降低了分布式系统开发者的学习曲线,并统一了开发标准。
SOA: 面向服务的体系结构(service-oriented architecture,SOA)
WCF的性能在使用tcp/ip协议时优于Web Service 又不像Remoting 完全不能跨语言。所以才使用WCF.Windows Communication Foundation(WCF)是由微软发展的一组数据通信的应用程序开发接口,是Microsoft为构建面向服务的应用程序而提供的统一编程模型,可以翻译为Windows通讯接口,它是.NET框架的一部分。由 .NET Framework 3.0 开始引入。它整合.NET平台下所有和分布式系统有关的技术。
WCF的最终目标是通过进程或不同的系统、通过本地网络或是通过Internet收发客户和服务之间的消息。
WCF合并了Web服务、.net Remoting、消息队列和Enterprise Services的功能并集成在Visual Studio中。
WCF专门用于面向服务开发
WCF本质是面向服务的。主要分为服务端和客户端两部分。服务端和客户端进行通信的过程如下图所示:
在上图中,主机进程就是服务端,在其中需要创建服务,然后将服务通过EndPoint(终结点)与客户端进行通信。客户端在使用服务时,需要首先创建一个代理服务,然后调用这个代理服务。
EndPoint(终结点)在WCF中是非常重要的部分。它包含了服务地址(Address)、绑定格式(Binding)和契约(Contract)。其中,地址定义了服务的位置,绑定定义了服务通信的方式,契约定义了服务所提供的功能。为了便于记忆,我们将终结点的这三个要素简称为服务的ABC
。
服务端提供了什么服务,都具备什么功能,这被称为WCF服务的契约。
WCF服务不能凭空存在。每个WCF服务都必须托管(Hosting)在一个Windows进程中,该进程被称为宿主进程。
WCF服务宿主可以由IIS提供,可以由Windows服务提供,也可以由Windows Vista的Windows激活服务提供。其中,使用IIS托管只能使用HTTP协议。
宿主:Server 跑服务器的Server