WCF是“Windows Communication Foundation"的缩写,原来的代号为"Indigo",它是MS 为 SOA(Service Oriented Architecture)而设计的一套完整的技术框架。利用它能够开发出分布式(Distributed)应用程序,而且开发难度相比以前的.Net Remoting 和 Asp.NetXml Web Service 等都有了大幅度的降低。可以说 WCF 是目前微软平台下最先进的 SOA框架,也是微软在今后一段时间内在该领域的主打产品。
WCF是什么?
WCF是一个用于创建和运行分布式系统的技术集合,使用它能创建安全的、可靠的、跨平台的分布式解决方案。它的面向服务的编程模型整合了.Net 平台下以往全部的分布式开发技术,例如.Net Remoting,Asp.Net Xml Web Service,MSMQ,WSE,和Enterprise Service 等,它可以支持跨应用程序域(AppDomain),进程(Process),网络(NetWork)的进行数据通讯,而且能寄宿在诸如 IIS,Windows Service,Console,Windows Application 等多种宿主(Host)中。
WCF能干什么?
在 win32 中,应用程序是运行在进程(Process)的线程(Thread)中的,.Net 平台出现之后,出现了 AppDomain,其实就相当于在进程和线程之间又有了一层包装,类似于子进程的概念,在一个进程(或者应用程序域)中的对象能进行直接的访问和控制,但超出这个范围,便不能进行直接的访问和控制了,所以说进程(或者应用程序域)有一定的隔离作用,如果是分布在不同网络,不同操作系统上的不同进程,他们进行通讯的难度就更大,而分布式应用程序要求的就是将原本被隔离的作用域通过一定的契约联系起来, 从而达成多个系统的沟通协作。
WCF服务框架模型
WCF服务基本结构如下图:
由三个部分构成:
1.服务类:采用 C# 或 VB.NET 或其他基于 CLR 的语言编写,实现一个或多个方法。通常包括服务契约、操作契约和数据契约。
2.宿主:一种应用程序域和进程,服务将在该环境中运行。ASP.NET,EXE,WPF,Windows Forms,NT Service,COM+作为宿主(Host) 。
3.终结点:服务暴露出来的地址,由客户端用于访问服务。通常提及的概念就是 ABC,即地址、绑定和契约的第一个字母的简称。 如图:
地址(Address):地址决定了服务的位置,解决了服务寻址的问题
绑定(Binding):绑定实现了通信的所有的细节,包括网络传输、消息编码,以及其他为实现某种功能(比如传输安全、可靠消息传输、事务等)对消息进行的响应处理。WCF中具有一系列的系统定义绑定,比如BasicHttpBinding /WSHttpBinding和NetTcpBinding等,
契约(Contract):契约是对服务操作的抽象,也是对消息交换模式及消息结构的定义。