WCF專題系列(5):深入WCF尋址Part 5—邏輯地址和物理地址

作者: TerryLee  來源: 博客園  發布時間: 2008-11-07 14:07  閱讀: 2132 次  推薦: 0   原文鏈接   [收藏]  
 

概述

在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所示:

TerryLee_WCF_13

圖1

0
0
 
 
 

文章列表

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()