您的位置:知识库 »

WCF专题系列(5):深入WCF寻址Part 5—逻辑地址和物理地址

作者: TerryLee  来源: 博客园  发布时间: 2008-11-07 14:07  阅读: 2324 次  推荐: 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

热门文章

    最新文章

      最新新闻

        热门新闻