本文的出發點
address是什麼?
address的組成?
如何在配置檔案中指定address?
如何通過程式設計方式設定address?
address有什麼特殊應用?
本文適合的讀者
適合wcf初學者,可以沒有任何soa和其他分布式開發經驗
address是什麼?
乙個要和服務端通訊的客戶端要做的第一件事情,就是搞清資料要發給誰?目的地在哪?而address正是通過乙個uri來唯一標示乙個wcf的終節點(endpoint)的,它標示了訊息傳送的目的地。在wcf 資料通訊中,它解決了服務在**的問題。
address的組成?
address在wcf中的用system.servicemodel.endpointaddress物件來表示的,它的結構如下:
組成部分
作用
uri指示endpoint的位址,是必須的
identity
能保證位址的唯一性,當uri一致的時候,可以用identity來區分endpoint,可有可無
headers
為位址提供了一些附加資訊,用於soap message filter,最後會新增到soap訊息的header中
此外,address還包括isanonymous屬性,用於指示終節點是否能匿名訪問。
如何在配置檔案中指定address?
在配置檔案中,有兩種方式可以指定address,一種是絕對位址方式,另外是相對位址方式,分別如下:
絕對位址
相對位址
在網上有人說絕對位址是通過將httpgetenabled設定為true,並且設定httpgeturl為絕對位址是在設定endpoint的說法有些不準確,因為在wcf中有兩種位址,一種是訪問endpoint時候用到位址,另外一種是服務描述的位址,服務描述在wcf中被稱作servicemetadata,通過它能夠產生**類,比如,我們做如下的設定:
只代表在http://localhost:8731/service/?wsdl上能找到服務描述,可以通過http://localhost:8731/service/?wsdl生成**類,而不是將endpoint的位址設定為了http://localhost:8731/service,這點一定要注意,不要受有些說法的誤導。
如何通過程式設計方式設定address?
除了能在配置中設定address外 ,還可以通過程式設計的方式來設定address,具體方法請參參見下面的**示例:
static
void
main(
string
args)
上面的**就是將endpoint的位址設定為了
address有什麼特殊應用?
在wcf中,能夠將服務同時發布到幾個位址上面,只要這些位址採用的都是一種訪問方式。這種乙份程式,多個發布位址的做法,在以往的技術中是沒有的。
示例專案:
通過配置檔案設定address:/files/jillzhang/wcf_address_config.rar
通過**方式設定address:/files/jillzhang/wcf_address.rar
本文參考資料
WCF從理論到實踐 4 路在何方
本文的出發點 address是什麼?address的組成?如何在配置檔案中指定address?如何通過程式設計方式設定address?address有什麼特殊應用?本文適合的讀者 適合wcf初學者,可以沒有任何soa和其他分布式開發經驗 address是什麼?乙個要和服務端通訊的客戶端要做的第一件事...
WCF從理論到實踐 1 揭開神秘面紗
引子 wcf是 windows communication foundation 的縮寫,原來的代號為 indigo 它是ms為soa service oriented architecture 而設計的一套完整的技術框架。利用它能夠開發出分布式 distributed 應用程式,而且開發難度相比以...
WCF從理論到實踐 3 八號當鋪之黑色契約
本文的出發點 通過閱讀本文,能解決以下的問題 什麼是契約?契約有幾種?他們都有什麼用途 如何定義契約?契約是獨立於平台的麼?契約和以往哪種技術比較相像,又有什麼不同?本文適合的讀者 wcf的初學者,可以沒有任何soa或者其他分布式技術經驗 什麼是契約?任何乙個分布式應用程式,它之所以能夠互相傳遞訊息...