WCF 学习笔记一 (wcf 基础)

 

 

.摘要

 

     WCF基于Windows 平台下开发和部署服务的SDK,WCF为服务提供了运行时环境,使得开发者能够将CLR类型公开为服务,又能够以CLR类型的方式使用服务。

 

.前言

    

     Service是公开的一组功能的集合。从软件设计的角度考虑,软件设计思想经历了从函数发展到对象,从对象发展到组件,再从组件发展到服务的几次变迁,最后发展到面向服务,SO是一组原则的抽象。

   服务内部包含了诸如语言,技术,平台,版本与框架等诸多概念,而服务之间的交互,则只允许指定的通信模式。

     客户端与服务通过消息的发送与接收进行交互。WCF 中的消息通常是SOAP消息,与Web服务不同,这些消息与传输协议无关,因此,WCF服务可以在不同的协议之间传输,而不仅限与HTTPWCF客户端可以与非WCF服务完成操作,WCF服务也可以与非WCF客户端交互。如果需要同时开发客户端和使用服务,则创建的应用程序两端都要求支持WCF,如此才能利用WCF的特定优势。

     

服务的组成

 

     地址:wcf的每一个服务都具有一个唯一的地址(Address)。地址包含两个重要元素:服务位置与传输协议(transport protocol),或者是用于服务通信的传输样式(transport  schema)服务位置包括目标机器名,站点或网络,通信端口,管道或队列,以及一个可选的特定路径或者是URL. Wcf 支持HTTP  TCP  Peer network(对等网)  IPC(内部进程通信)  MSMQ

契约: wcf的所有服务都会公开为契约(Contract)。契约与平台无关,是描述服务功能的标准方式。Wcf定义了四种类型的契约

  服务契约 Service Contract

       服务契约描述了客户端能够执行的服务操作。

  数据契约 Data Contract

       数据契约定义了与服务交互的数据类型,WCF 为内建类型如intstring隐式地定义了契约;我们也可以非常便捷地将定制类型定义为数据契约。

 错误契约 Fault Contract

       错误契约定义了服务抛出的错误,以及服务处理错误和传递错误到客户端得方式。

消息契约 Message Contract

      消息契约允许服务直接与消息交互,在互操作性的场景下,消息契约非常有用。

托管:WCF 服务都必须托管host windows进程中,该进程被称为宿主进程 Host Process ,单个宿主进程可以托管多个服务,而相同的服务类型也能够托管在多个宿主进程中。宿主可以由Internet 信息服务 windows 服务,或者是应用程序的一部分。

绑定:服务之间的通信方式是多种多样的,有多种可能的通信模式。

 基本绑定: Basic Binding

          BasicHttpBinding类提供。基本绑定能够将WCF服务公开为传统的ASMX Web服务,使得旧的客户端与新的服务协作。如果客户端使用了基本绑定,那么新的WCF客户端就能够与旧的ASMX服务协作。基本绑定使得你的服务看起来像是一个传统的web服务,能够基于基本的Web服务信息进行通讯。

TCP 绑定:

        NetTcpBinding类提供。TCP绑定使用了TCP 协议实现在intranet中跨机器的通信。TCP 绑定支持多种特性,包括可靠性,事务性,安全性以及WCF之间通信的优化。需要客户端与服务都必须使用WCF

IPC 绑定:

       NetNamedPipeBinding类提供。

WEB服务(WS) 绑定:

       WSHttpBinding类提供。WS绑定使用HTTP HTTPS进行传输,为基于internet的通信提供了多种特性(诸如可靠性,事务性与安全性) 这些特性均遵循WS标准 该绑定被设计用来与支持WS标准的系统进行互操作。

WS双向绑定 Duplex WS Binding

       WSDualHttpBinding类提供。WS双向绑定与WS绑定相识,但它还支持从服务到客户端的双向通信。

MSMQ绑定

       NetMsmqBinding类提供。它使用MSMQ进行传输,用以提供对断开的队列调用的支持。

 

终结点:

      服务与地址,绑定以及契约有关。其中,地址定义了服务的位置,绑定定义了服务通信的方式,契约则定义了服务的内容,为便于记忆,我们可以将这种类似于三权分立一般管理服务的方式简称为服务的ABCWCF用终结点表示这样一种组成关系。终结点就是地址,契约与绑定的混成品。

 

    

 

 

 

 

posted @ 2011-04-11 23:45  jackyong  阅读(370)  评论(1编辑  收藏  举报