WCF基础介绍

 WCF基础介绍

什么是WCF:

      WCF的全称是:Windows通信基础(Windows Communication Foundation)。本质上说,它是一套软件开发包。WCF的设计目的是为分布式计算机提供可管理的方法,提供广泛的互操作性,并为服务定位提供直接的支持。WCF帮助程序员在.NET的环境中开发服务,或是开发访问服务的客户端,基于SOA的技术平台无关性,WCF并不要求整个系统的服务都由WCF来开发。

       WCF为程序员提供了丰富的功能,其中包括:托管、服务实例管理、异步、安全、事务管理、离线队列。并且WCF对产业中的标准协议进行了封装和定义,它把程序员从繁琐的通信、格式编码中解放出来,使得程序员能够专注于业务逻辑的实现。同时,WCF统一了微软公司之前推出的多种分布式技术,其中包括:

1. Web服务和WSE
2. .NET Remoting
3. .NET 企业服务
4. 微软消息队列(MSMQ)
        WCF对这些技术的集成包括两个方面,首先WCF的架构本身吸取了这些技术的精华。在学习WCF的过程中会逐渐发现.NET Remoting、MSMQ等技术的痕迹。其次,使用WCF开发的服务/客户端可以和现有的Web服务、MSMQ程序进行交互,这符合SOA最基本的原则。

WCF体系框架:

WCF的体系基本上包含了四个方面,分别为契约、服务运行行为、消息和寄宿。
1.契约:从SOA的概念上来看,契约属于一个服务公开接口的一部分。一个服务的契约,定义了服务端公开的服务方法、使用的传输协议、可访问的地址、传输的消息格式等内容。基本上,契约的定义描述了该服务的功能和作用,它告诉SOA系统中的其他节点这个服务是“干什么”的。

2.服务运行:服务运行方面定义了服务在运行时的具体行为。如果说契约描述了服务是“干什么”的,那服务运行就在一定程度上描述了服务是“怎么干”的。需要注意的是,服务运行方面的内容跨越了服务边界。它不仅包含可对外公布的内容,也包含了服务内部的实现行为。

3.消息:消息方面包含了消息的传输方式、消息的编码与解码。消息方面的内容基本属于服务边界以内的具体实现。具体的传输实现,必须符合在契约中定义的绑定协议。

4.激活和宿主:一个WCF服务需要在一个可运行的程序中寄宿,这其中有多种选择。常用的寄宿方式包括自寄宿、IIS寄宿、Windows激活服务、Windows服务、COM+组件等。激活和宿主属于WCF程序的部署方式。根据SOA的原则,激活和宿主类型的变化不会影响服务本身的特性和外部对该服务的访问,而WCF在这一方面也确实做的非常出色。

WCF基础概念介绍

       WCF框架中包含了大量的基础概念

        1.地址:在WCF框架中,每个服务都具有唯一的地址。在SOA系统中,其他服务和客户端通过服务的地址对服务进行访问。一个服务的地址由一个统一资源表示符(URl)来表示。下面是几个地址示例。

http://localhost:8080/Service
net.tcp://dc3web1.9023/MyService
net.msmq://localhost/MyMsMqService

        一个地址包含了通信所使用的协议,协议指的是传输使用的协议,常见的有:http(采用HTTP协议)、net.tcp(使用TCP协议)、net.msmq(使用MSMQ协议)。读者需要注意的是,地址并不负责定义服务传输所使用的协议,而只是提供一个和通信协议兼容的地址。

说明:地址是组成一个服务终结点的三要素之一。

        2.绑定:绑定定义了服务与外部通信的方式。它由一组称为绑定元素的元素构造而成,这些元素组合在一起以形成通信基础结构。一个绑定可以包含以下内容。

              (1)通信所使用的协议,如HTTP、TCP、P2P等。
              (2)消息编码方式,如纯文本、二进制编码、MTOM等。
              (3)消息安全保障策略。
              (4)通信对战的其他任何要素。

说明:绑定是组成一个服务终结点的三要素之一。

        3.契约:在WCF中一共包含了四种契约,分别是服务契约、数据契约、错误契约和消息契约。
               (1)服务契约:服务契约将多个相关的操作练习在一起,组成单个功能单元。契约可以定义服务级设置,如服务的命名空间、对应的回调契约以及其他此类设置。
               (2)数据契约:服务使用的数据类型必须在元数据中进行描述,以使其他各方可以与该服务进行交互操作。数据类型的说明成为数据契约,而这些类型可以在消息的任何部分使用(例如,作为参数或返回类型)。如果服务仅使用简单类型,则无需显式使用数据契约。
               (3)错误契约:可以将错误契约与服务操作进行关联。
               (4)消息契约:消息契约描述消息的格式。例如,它会声明消息元素应包含在消息头中还是包含在消息正文中,应该对消息的何种元素应用何种级别的安全等。

说明:契约是组成一个服务终结点的三要素之一。

           4.终结点

            正如前文中所阐述的,一个终结点由三个要素组成,分别是笔者已经介绍了的:地址、绑定和契约。终节点是用来发送或接收消息的构造。以SOA的思想来看,一个终结点就相当于服务的公共接口。每个服务可以拥有一个或者多个终结点。由于每个服务都只拥有一个地址,所以每个服务拥有的所有终结点都共享一个地址。需要读者注意的是,终结点的配置或者编程,并不属于业务逻辑的编程。所以,WCF设计目的之一就是分离终结点的定义和契约的具体实现。

           5.元数据

            服务的元数据描述服务的特征,外部实体需要了解这些特征以便与该服务进行通信。服务所公开的元数据包括XML架构文档(用于定义服务的数据协定)和WSDL文档(用于描述服务的方法)。启用元数据后,WCF通过检查服务及其终结点自动生成服务的元数据。若要发布服务的元数据,必须显示启用元数据行为。

注意:在WCF程序中 ,可以为元数据设置一个专用的终结点。

            6.宿主

           服务必须承载于某个进程中。宿主是控制服务的生存期的应用程序。服务可以是自寄宿的,也可以由现有的宿主进程进行管理。从内部实现来看,一个服务宿主进程,可以包含一个或者多个应用程序域,而每个应用程序域理论上又可以被放入任意个服务宿主。每个服务宿主可以拥有个上下文,每个上下文可以由0个或者1个服务实例。

           

待续......

posted @ 2012-03-13 21:23  Vincent_void  阅读(368)  评论(0)    收藏  举报