WCF專題系列(5):深入WCF尋址Part 5—邏輯地址和物理地址
[1] WCF專題系列(5):深入WCF尋址Part 5—邏輯地址和物理地址
[2] WCF專題系列(5):深入WCF尋址Part 5—邏輯地址和物理地址
[3] WCF專題系列(5):深入WCF尋址Part 5—邏輯地址和物理地址
[2] WCF專題系列(5):深入WCF尋址Part 5—邏輯地址和物理地址
[3] WCF專題系列(5):深入WCF尋址Part 5—邏輯地址和物理地址
概述
在WCF中,每個服務終結點都與兩個地址相關聯,一個邏輯地址和一個物理地址,邏輯地址就是SOAP消息的目標地址,即前面不止一次提到的“To”地址,而物理地址是WCF偵聽器真正監聽的地址。在WCF中,邏輯地址稱之為終結點地址Endpoint Address,而物理地址則稱之為監聽地址ListenUri。
本文將詳細介紹WCF中的物理地址和邏輯地址,以及如何使用tcpTrace來進行SOAP消息的跟蹤。
兩種地址
WCF中,物理地址負責使用特定的傳輸協議在特定的位置接收傳入的消息,除非特別指定,否則邏輯地址將被用來做物理地址,換句話說,在以前我們對于終結點所配置的EndpointAddress都是指定了邏輯地址,如我們的服務端配置如下:
<endpoint address="http://localhost:8887/CalculatorService1" binding ="wsHttpBinding" contract="TerryLee.WCFAddressing.Contract.ICalculator"> endpoint> <endpoint address="http://localhost:8887/CalculatorService2" binding ="basicHttpBinding" contract="TerryLee.WCFAddressing.Contract.ICalculator"> endpoint>
現在我們輸出一下,就可以看到兩個地址是同樣的值,如下代碼所示:
using (ServiceHost calculatorServiceHost = new ServiceHost(typeof(CalculatorService))) { calculatorServiceHost.Opened += delegate { Console.WriteLine("Service begin to listen via the Address:{0}", calculatorServiceHost.BaseAddresses[0].ToString()); }; calculatorServiceHost.Open(); foreach (ServiceEndpoint se in calculatorServiceHost.Description.Endpoints) { Console.WriteLine("Endpoint details:"); Console.WriteLine("Logical address: \t{0}", se.Address); Console.WriteLine("Physical address: \t{0}", se.ListenUri); Console.WriteLine("Binding: \t{0}", se.Binding.Name); Console.WriteLine(); } Console.Read(); }
輸出結果如圖1所示:
圖1
全站熱搜