WCF专题系列(5):深入WCF寻址Part 5—逻辑地址和物理地址2010-11-25 cnblogs terrylee概述在WCF中,每个服务终结点都与两个地址相关联,一个逻辑地址和一 个物理地址,逻辑地址就是SOAP消息的目标地址,即前面不止一次提到的 “To”地址,而物理地址是WCF侦听器真正监听的地址。在WCF中,逻 辑地址称之为终结点地址Endpoint Address,而物理地址则称之为监听地址 ListenUri。两种地址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: {0}", se.Address);
Console.WriteLine("Physical address: {0}", se.ListenUri);
Console.WriteLine("Binding: {0} ", se.Binding.Name);
Console.WriteLine();
}
Console.Read();
}
输出结果如图1所示:

图1