您的位置:首页 > 其它

[WCF 学习笔记] 9. 端点绑定

2009-01-17 15:07 260 查看
Endpoints 包含了重要的地址信息,包括服务地址以及通讯协议,客户端只有获知这些信息才能与服务建立通讯。而 Binding
用于指定 WCF 两个端点(endpoint)之间的通讯细节,两个端点的 Binding
应该是一致的。端点和绑定对象合作,共同完成服务通讯和调用。服务面对的客户端是多样的,不同的客户端可能选择不同的通讯方式,不同的安全方案。WCF
允许我们为服务添加多个绑定和端点,这样我们就可以使用同一个服务为不同的客户需求提供解决方案,这是 WebServices 和 Remoting
所无法完成的。

Endpoints 格式:scheme://machine:port/path

如:
http://192.168.0.1:8080/IService1
net.tcp://202.100.100.1:123/IService2
net.pipe://localhost/MyPipe
net.msmq://localhost/MyService

Binding 的内容包括:

Protocols: 设置安全机制。如消息可靠接收,事务上下文等。

Encoding: 设置消息编码方式。如 Text/XML、Binary 或 MTOM。

Transport: 设置底层通讯协议。如 Http、TCP 等。

Binding
由一系列分工合作的 Element 组成,其中至少包括用于通讯和消息编码的两个 Element。WCF Framework
为我们提供了大量常用的 Binding,当然我们也可以自己开发专用的 Binding 类型。使用 Binding
很简单,创建系统提供或自己开发的 Binding
对象,调整或使用其默认属性,最后用该绑定对象作为参数创建端点即可。我们可以使用编码或者配置文件来调整绑定对象的属性,有关配置文件的信息可以参考
MSDN 或者雨痕后面撰写的章节。

WCF Framework 提供的 Binding

BasicHttpBinding: 最简单的绑定类型,通常用于 Web Services。使用 HTTP 协议,Text/XML 编码方式。

WSHttpBinding: 比 BasicHttpBinding 更加安全,通常用于 non-duplex 服务通讯。

WSDualHttpBinding: 和 WSHttpBinding 相比,它支持 duplex 类型的服务。

WSFederationHttpBinding: 支持 WS-Federation 安全通讯协议。

NetTcpBinding: 效率最高,安全的跨机器通讯方式。

NetNamedPipeBinding: 安全、可靠、高效的单机服务通讯方式。

NetMsmqBinding: 使用消息队列在不同机器间进行通讯。

NetPeerTcpBinding: 使用 P2P 协议在多机器间通讯。

MsmqIntegrationBinding: 使用现有的消息队列系统进行跨机器通讯。如 MSMQ。

Binding 基本信息





粗体表示其基本编码方式。我们注意到 NetTcpBinding、NetPeerTcpBinding、NetNamedPipeBinding、NetMsmqBinding 只能用于 .NET WCF-to-WCF。
(图片选自 《Programming WCF Services》)

Binding 选择策略





(图片选自 《Programming WCF Services》)

有关 Binding 的更详细信息请参考 ms-help://MS.MSSDK.1033/MS.NETFX30SDK.1033/WCF_con/html/2c243746-45ce-4588-995e-c17126a579a6.htm

Example

Server.cs

ServiceHost host = new ServiceHost(typeof(CalculateService));
host.AddServiceEndpoint(typeof(ICalculate), new WSHttpBinding(), "http://localhost:8080/calc");
host.Open();

Client.cs

CalculateClient client = new CalculateClient(new WSHttpBinding(), new EndpointAddress("http://localhost:8080/calc"));
client.Add(1, 2);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: