C# 地址、端点和绑定
用于服务的地址类型取决于所使用的协议。前面介绍的3个协议(不包括MSMQ)都需要格式化的服务地址:
• HTTP: HTTP协议的地址是URL,其格式很常见:卿M<server>:<poti>/<servic冷。对于TLS连接, 也可以使用https://<server>:<pori>f<service>。如果在US中驻留服务,<servictf>就是扩展名为.svc的文件。IIS地址可能包含比这个示例更多的子目录,即.svc文件之前有更多使用/字符分隔的部分。
• TCP: TCP 的地址采用 net.tcp://<server>:<port>/<service>形式。
• UDP: UDP 的地址采用 soap.udp://<server>:<port>/<service>。对于多播通信,需要为<setver>使用—些特定值。
• 命名管道:命名管道连接的地址与上述类似,但没有端口号。其形式是net.pipe://<server>/<service>。服务的地址是一个基地址,它可用于为表示操作的端点创建地址。例如,在net.tcp://<sm;er>: <port>/<service>/operationl上有一个操作。
例如,假定创建一个WCF服务,它有一个操作,绑定了前面介绍的3个协议,就可以使用下面的基地址:
http://www.mydomain.com/services/ainazingservices/mygreatservice.svc
net.tcp://myhugeserver:8080/mygreatservice
net.pipe://localhost/mygreatservice
接着就可以给操作使用下面的地址:
http://www.mydomain.com/services/amazingservices/mygreatservice,svc/greatop
net.tcp://myhugeserver:8080/mygreatservice/greatop
net.pipe://localhost/mygreatservice/greatop
从.NET4开始,可给操作使用默认端点,而不必明确地配置它们。这简化了配置,如果需要使用标准端点地址(如上例所示),这表现得尤其明显。
如前所述,绑定不仅指定了操作使用的传输协议,还可以指定在传输协议上通信的安全要求、端点的事务处理功能和消息编码等。
绑定提供了极大灵活性,所以.NETFramework提供了一些可用的预定义绑定。还可将这些绑定用作起点,修改它们,得到需要的绑定类型。预定义绑定有一些必须遵循的原则。每种绑定类型都用System.ServiceModel名称空间中的一个类表示。下表列出了最常用的绑定及其基本信息。
绑 定 | 说 明 |
BasicHttpBinding | 最简单的HTTP绑定,Web服务使用的默认绑定,它的安全功能有限,不支持事务处理 |
WSHttpBinding | HTTP绑定的一种较高级形式,可以使用WSE中引入的所有额外功能 |
WSDualHttpBinding | 扩展了WSHttpBinding功能,包含双向通信功能。在双向通信中,服务器可以启动与客户端的 通信,还可以进行一般的消息交换 |
绑 定 | 说 明 |
WSFederationHttp Binding | 扩展了 WSHttpBinding功能,包含联合功能。联合功能允许第三方实现单点登录(single sign-on) 和其他专用安全措施。这是一个高级主题,本章不予讨论 |
NetTcpBinding | 用于TCP通信,允许配罝安全性、事务处理等 |
NetNamedPipeBinding | 用于命名管道的通信,允许配盟安全性、事务处理等 |
NetMsmqBinding | 这些绑定用于MSMQ,本章不予讨论 |
NetPeerT cpBinding | 用于对等绑定,本竞不予讨论 |
WebHttpBinding | 用于使用HTTP请求(而不是SOAP消息)的Web服务 |
UdpBinding | 允许绑定到UDP协议 |
这个表中的许多绑定类拥有可用于其他配置的类似属性。例如,它们有可用于配置超时值的属性。
端点的默认绑定因所用协议而异。这些默认绑定如表所示。
协 议 | 默认绑定 |
HTTP | BasicHttpBinding |
TCP | NetTcpBinding |
UDP | UdpBinding |
命名管道 | NetNamedPipeBinding |
点击加载更多评论>>