第四章 Binding

第四章 Binding
 
    第三章讲解了Channels,Channel栈是一个分层的通信栈,它是由一个或多个Channel组成用来处理消息。Binding是Channel栈的预定义。它代表了在客户端和服务端间的线性规则。每个binding指定了参与通信的传输,编码,协议。WCF使用binding封装各种通信方案的配置。多数常用的通信方案,比如WebService,Rest/POXService,和Queue-based它们都是运行在基于ASP.Net WebService或WS-I基本规范1.1。ws2007HttpBinding、wsHttpBinding和basicHttpBinding十分相似,但是它俩支持更多的特性,比如可靠报文发送和事务,并使用了更新的标准比如WS-Addressing。ws2007HttpBinding由.Net3.5承载,并且采用了比wsHttpBinding更新的标准。表4.1列出了通信使用的12种binding和每个binding的细节。
表4.1 .NET3.5中的WCF通信binding
 

Binding名

描述

.Net Framework

basicHttpBinding

绑定基于WS-IBasicProfile 1.1 和 ASMX 的 Web 服务

3.0/3.5

wsHttpBinding

基于最新的WS*的WEB服务,比如WS-Security,WS-Transactions等

 

3.0/3.5

wsDualHttpBinding

使用双工契约绑定支持双向通信

3.0/3.5

webHttpBinding

支持REST/POS-based服务,并使用XMLJSON序列化

3.0/3.5

netTcpBinding

在两个基于.Net平台的系统间通信

3.0/3.5

netNamedPipeBinding

单机中一个或多个基于.net的系统间通信

 

3.0/3.5

netMsmqBinding

使用MSMQ进行异步通信

3.0/3.5

netPeerTcpBinding

用来构建点对点的网络程序

3.0/3.5

msmqIntegrationBinding

使用MSMQ发送和接受消息序列

3.0/3.5

wsFederationHttpBinding

使用联邦认证提供基于WS*web服务

3.0/3.5

ws2007HttpBinding

继承自wsHttpBinding并扩展支持了基于2007年标准的最新WS*

3.5

ws2007FederationHttpBinding

继承自wsFederationHttpBinding并扩展支持了基于2007年标准的最新WS*

3.5

Binding名

描述

.Net Framework

basicHttpBinding

绑定基于WS-IBasicProfile 1.1 和 ASMX 的 Web 服务

3.0/3.5

wsHttpBinding

基于最新的WS*的WEB服务,比如WS-Security,WS-Transactions等

 

3.0/3.5

wsDualHttpBinding

使用双工契约绑定支持双向通信

3.0/3.5

webHttpBinding

支持REST/POS-based服务,并使用XMLJSON序列化

3.0/3.5

netTcpBinding

在两个基于.Net平台的系统间通信

3.0/3.5

netNamedPipeBinding

单机中一个或多个基于.net的系统间通信

 

3.0/3.5

netMsmqBinding

使用MSMQ进行异步通信

3.0/3.5

netPeerTcpBinding

用来构建点对点的网络程序

3.0/3.5

msmqIntegrationBinding

使用MSMQ发送和接受消息序列

3.0/3.5

wsFederationHttpBinding

使用联邦认证提供基于WS*web服务

3.0/3.5

ws2007HttpBinding

继承自wsHttpBinding并扩展支持了基于2007年标准的最新WS*

3.5

ws2007FederationHttpBinding

继承自wsFederationHttpBinding并扩展支持了基于2007年标准的最新WS*

3.5

    表4.1列出的binding可在代码和配置文件中指定。清单4.1展示了在配置中指定basicHttpBinding。配置文件是开发人员可以灵活的改变和修改程序,从而不需要重新编译。
清单4.1 在配置中使用binding
----------------------------------------------
<?xml version="1.0" encoding="utf-8">
<configuration>
  <system.serviceModel>
     <client>
        <endpoint address="http://localhost/helloworld"
                  binding="basicHttpBinding"
                  contract="EssentialWCF.HelloWorld">
       </endpoint>
     </client>
  </system.serviceModel>
</configuration>
----------------------------------------------
    清单4.2展示了BasicHttpBinding的类。开发人员可以使用代码绑定,但以后就不能修改了。

清单4.2 代码中使用Binding
----------------------------------------------
 
----------------------------------------------

    通过一个binding元素集合,绑定构成了Channel栈,在Channel栈中的binding元素代表了一个channel对象。每个binding,比如basicHttpBinding,由许多binding元素组成,你可以认真查看示例化binding并枚举了binding元素集合的代码。清单4.3展示了这个。
清单4.3 检查BindingElementCollction
----------------------------------------------

----------------------------------------------

    图4.1 显示了清单4.3输出的四种绑定,我们将着重审视wsHttpBinding这样我们就能理解绑定的Binding元素结构。
    WSHttpBinding默认有四个binding元素:HttpTransportBindingElementTestMessageEncodingBindElement,SymmetricSecurityBindingElement,
TransactionFlowBindingElement。这些binding元素允许通过HTTP协议,基于文本的消息编码,安全,和事务的方式来通信。注意,这个binding元素列表是默认配置。绑定可以添加或删除binding元素。
 绑定输出
图4.1 绑定输出
    注意,由一个或多个binding元素组成的绑定,它们有些有相同的binding元素。比如,WSHttpBinding和BasicHttpBinding都使用了HttpTransportBindingElement。这两个绑定使用同样的传输机制,但是在功能上和他们的支持程度是不同的。本章我们讨论这些不同。
   本章的最后我们将关注WebService,多机,单机和基于队列的通信。开发人员应该知道如何用WCF创建这些通信。其中有些是基于REST/POX,peer networking,和联邦安全,这些东西的细节在第13章描述。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值