WCF物理地址如何進(jìn)行正確設(shè)定
WCF中有一種叫做地址的應(yīng)用技術(shù)。通過(guò)學(xué)習(xí)我們知道,WCF地址包括兩種,一種為邏輯地址而另一種就是我們今天要為大家重點(diǎn)介紹的WCF物理地址。希望朋友們可以從中獲得一些幫助。
設(shè)定WCF物理地址
前面我們輸出的結(jié)果邏輯地址和物理地址是相同的,我們可以通過(guò)代碼或者配置文件來(lái)設(shè)定終結(jié)點(diǎn)的物理地址。
- WSHttpBinding wsbinding = new WSHttpBinding();
- calculatorServiceHost.AddServiceEndpoint(
- typeof(ICalculator),
- wsbinding,
- "urn:calcservice", // 邏輯地址
- new Uri("http://localhost:8887/CalculatorService") // 物理地址
- );
又或者通過(guò)配置文件來(lái)設(shè)置ListenUri,如下代碼所示:
- < endpoint address="urn:calcservice"
- binding ="wsHttpBinding"
- contract="TerryLee.WCFAddressing.Contract.ICalculator"
- listenUri="http://localhost:8887/CalculatorService"
- bindingConfiguration="securityBinding">
- < /endpoint>
這里我們只需要注意的是在指定物理地址時(shí),仍然可以使用相對(duì)地址,這一點(diǎn)與設(shè)置邏輯地址時(shí)是一樣的。 #t#
WCF物理地址模式
了解了物理地址和邏輯地址之間的關(guān)系,我們?cè)倏匆幌略谠O(shè)置監(jiān)聽(tīng)地址時(shí)的兩種模式,通過(guò)ListenUriMode枚舉來(lái)指定,它定義了兩個(gè)枚舉值:
Explicit:完全原樣使用 ListenUri,默認(rèn)值。
Unique:指定傳輸是否應(yīng)使用特定傳輸機(jī)制,以確保 ListenUri 是***的
根據(jù)傳輸所采用的協(xié)議不同,WCF會(huì)采用不同的策略來(lái)保證ListenUri***,具體的策略如下所示:
1.非TCP傳輸,在ListenUri的末尾附加一個(gè)GUID。
2.對(duì)于獨(dú)占模式下的 TCP(PortSharingEnabled 為 false),綁定到一個(gè)***可用端口號(hào)。
3.對(duì)于端口共享模式下的 TCP(PortSharingEnabled 為 true),在ListenUri的末尾附加一個(gè)GUID。