WCF的位址說明

2022-02-02 18:50:37 字數 2658 閱讀 4645

本文的出發點

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中,能夠將服務同時發布到幾個位址上面,只要這些位址採用的都是一種訪問方式。這種乙份程式,多個發布位址的做法,在以往的技術中是沒有的。

wcf配置引數說明

5.maxbufferpoolsize 524288 從通道接收訊息的最大快取數量為2147483647 6.maxbuffersize 65536 從通道接收訊息的快取大小為2147483647 7.maxconnections 10 最大連線數目 8.maxreceivedmessagesize...

MAC位址說明

size large 近來在網上經常見有人問起mac位址的問題,那麼究竟mac位址是什麼?在現行的網路中,扮演什麼角色呢?下面我們就一同來 一下關於mac位址的知識。什麼是mac位址?mac位址就是在 接入層上使用的位址,通俗點說就是網絡卡的實體地址,現在的mac位址一般都採用6位元組48bit 在...

WCF服務怎麼獲得宿主的ip位址

很多時候我們將wcf服務寄宿在windows視窗應用程式或控制台應用程式中,那麼實現契約的類怎樣才能確定寄宿的應用程式所在計算機的ip位址呢?其實方法和獲得客戶端ip位址的方法差不多,仍然是採用了operationcontext類。主要 如下 private function gethostip a...