C# 地址、端點和綁定
用于服務(wù)的地址類型取決于所使用的協(xié)議。前面介紹的3個協(xié)議(不包括MSMQ)都需要格式化的服務(wù)地址:
? HTTP: HTTP協(xié)議的地址是URL,其格式很常見:卿M<server>:<poti>/<servic冷。對于TLS連接, 也可以使用https://<server>:<pori>f<service>。如果在US中駐留服務(wù),<servictf>就是擴展名為.svc的文件。IIS地址可能包含比這個示例更多的子目錄,即.svc文件之前有更多使用/字符分隔的部分。
? TCP: TCP 的地址采用 net.tcp://<server>:<port>/<service>形式。
? UDP: UDP 的地址采用 soap.udp://<server>:<port>/<service>。對于多播通信,需要為<setver>使用—些特定值。
? 命名管道:命名管道連接的地址與上述類似,但沒有端口號。其形式是net.pipe://<server>/<service>。服務(wù)的地址是一個基地址,它可用于為表示操作的端點創(chuàng)建地址。例如,在net.tcp://<sm;er>: <port>/<service>/operationl上有一個操作。
例如,假定創(chuàng)建一個WCF服務(wù),它有一個操作,綁定了前面介紹的3個協(xié)議,就可以使用下面的基地址:
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開始,可給操作使用默認(rèn)端點,而不必明確地配置它們。這簡化了配置,如果需要使用標(biāo)準(zhǔn)端點地址(如上例所示),這表現(xiàn)得尤其明顯。
如前所述,綁定不僅指定了操作使用的傳輸協(xié)議,還可以指定在傳輸協(xié)議上通信的安全要求、端點的事務(wù)處理功能和消息編碼等。
綁定提供了極大靈活性,所以.NETFramework提供了一些可用的預(yù)定義綁定。還可將這些綁定用作起點,修改它們,得到需要的綁定類型。預(yù)定義綁定有一些必須遵循的原則。每種綁定類型都用System.ServiceModel名稱空間中的一個類表示。下表列出了最常用的綁定及其基本信息。
綁 定 | 說 明 |
BasicHttpBinding | 最簡單的HTTP綁定,Web服務(wù)使用的默認(rèn)綁定,它的安全功能有限,不支持事務(wù)處理 |
WSHttpBinding | HTTP綁定的一種較高級形式,可以使用WSE中引入的所有額外功能 |
WSDualHttpBinding | 擴展了WSHttpBinding功能,包含雙向通信功能。在雙向通信中,服務(wù)器可以啟動與客戶端的 通信,還可以進行一般的消息交換 |
綁 定 | 說 明 |
WSFederationHttp Binding | 擴展了 WSHttpBinding功能,包含聯(lián)合功能。聯(lián)合功能允許第三方實現(xiàn)單點登錄(single sign-on) 和其他專用安全措施。這是一個高級主題,本章不予討論 |
NetTcpBinding | 用于TCP通信,允許配罝安全性、事務(wù)處理等 |
NetNamedPipeBinding | 用于命名管道的通信,允許配盟安全性、事務(wù)處理等 |
NetMsmqBinding | 這些綁定用于MSMQ,本章不予討論 |
NetPeerT cpBinding | 用于對等綁定,本競不予討論 |
WebHttpBinding | 用于使用HTTP請求(而不是SOAP消息)的Web服務(wù) |
UdpBinding | 允許綁定到UDP協(xié)議 |
這個表中的許多綁定類擁有可用于其他配置的類似屬性。例如,它們有可用于配置超時值的屬性。
端點的默認(rèn)綁定因所用協(xié)議而異。這些默認(rèn)綁定如表所示。
協(xié) 議 | 默認(rèn)綁定 |
HTTP | BasicHttpBinding |
TCP | NetTcpBinding |
UDP | UdpBinding |
命名管道 | NetNamedPipeBinding |
點擊加載更多評論>>