WCF中有一种叫做地址的应用技术。通过学习我们知道,WCF地址包括两种,一种为逻辑地址而另一种就是我们今天要为大家重点介绍的WCF物理地址。希望朋友们可以从中获得一些帮助。
设定WCF物理地址
前面我们输出的结果逻辑地址和物理地址是相同的,我们可以通过代码或者配置文件来设定终结点的物理地址。
- WSHttpBinding wsbinding = new WSHttpBinding();
- calculatorServiceHost.AddServiceEndpoint(
- typeof(ICalculator),
- wsbinding,
- "urn:calcservice", // 逻辑地址
- new Uri("http://localhost:8887/CalculatorService") // 物理地址
- );
又或者通过配置文件来设置ListenUri,如下代码所示:
- < endpoint address="urn:calcservice"
- binding ="wsHttpBinding"
- contract="TerryLee.WCFAddressing.Contract.ICalculator"
- listenUri="http://localhost:8887/CalculatorService"
- bindingConfiguration="securityBinding">
- < /endpoint>
这里我们只需要注意的是在指定物理地址时,仍然可以使用相对地址,这一点与设置逻辑地址时是一样的。 #t#
WCF物理地址模式
了解了物理地址和逻辑地址之间的关系,我们再看一下在设置监听地址时的两种模式,通过ListenUriMode枚举来指定,它定义了两个枚举值:
Explicit:完全原样使用 ListenUri,默认值。
Unique:指定传输是否应使用特定传输机制,以确保 ListenUri 是***的
根据传输所采用的协议不同,WCF会采用不同的策略来保证ListenUri***,具体的策略如下所示:
1.非TCP传输,在ListenUri的末尾附加一个GUID。
2.对于独占模式下的 TCP(PortSharingEnabled 为 false),绑定到一个***可用端口号。
3.对于端口共享模式下的 TCP(PortSharingEnabled 为 true),在ListenUri的末尾附加一个GUID。