傳說中的WCF(3) 多個協定

2021-09-30 16:23:50 字數 1928 閱讀 9999

近幾天忙於一些事情,沒有更新部落格,灰常抱歉。

我們知道,wcf服務端是先定義服務協定,其實就是乙個介面,然後通過實現介面來定義服務類。那麼,有乙個問題,如果乙個服務類同時實現n個介面(也就是有n個協定)呢?結果會如何?

不必猜,我們還是通過實驗來說明吧。

首先,參照下面**寫好伺服器端,**中,我寫了三個協定,然後乙個服務類同時實現它們。

using system;

using system.collections.generic;

using system.linq;

using system.text;

using system.servicemodel;

using system.servicemodel.description;

namespace server

[servicecontract]

public inte***ce iservice2

[servicecontract]

public inte***ce iservice3

/// /// 實現服務協定介面的服務類

///

class myservice:iservice1,iservice2,iservice3

catch (exception ex)

console.readkey();

host.close();}}

string iservice1.sayhelloa()

string iservice2.sayhellob()

string iservice3.sayhelloc()}}

接著你試一下,在客戶端引用服務,看看是什麼樣的?

神了,這是怎麼回事呢?為什麼客戶端引用的服務中只有第乙個協定?

還記得剛才的伺服器端**嗎?請注意看我框起來的**。

如果你上圖中能找到原因,表明你悟性不錯,呵呵。

注意我們新增終結點的時候,addserviceendpoint方法的第乙個引數我們傳了啥玩意兒進去了?是不是只有第乙個服務協定的介面?

是啊,這上好理解了,

我們僅僅讓服務類實現多個協定的介面是不夠的,還要把希望對客戶端公開的協定新增為終結點,對,乙個協定乙個終結點,不新增終結點的協定就不公開。

好了,現在找到原因了,**知道怎麼改了。

}看看這回達到目的了沒?

嘿,這回全有了。

不過,注意啊,在生成的客戶端**類中,是按協定來劃分的,也就是說,我有三個協定,在客戶端**中就生成了三個客戶端類。

所以,在客戶端,我們應該這樣呼叫。

傳說中的MTU

通訊術語 最大傳輸單元 maximum transmission unit,mtu 是指一種通訊協議的某一層上面所能通過的最大資料報大小 以位元組為單位 最大傳輸單元這個引數通常與通訊介面有關 網路介面卡 串列埠等 網際網路協議允許ip分片,這樣就可以將資料報分成足夠小的片段以通過那些最大傳輸單元小...

傳說中的truncate html

學習用rails做blog的時候要用到rails的truncate功能。h truncate post.content,100,問題來了,將html截斷後出現不完整的tag,導致後續的文章排版都錯亂了。本來考慮是不是自己寫乙個,正在思考思路,結果祭起google,好嗎,已經有牛人寫了 簡單記錄一下 ...

傳說中的分頁6

set quoted identifier off goset ansi nulls on go 名稱 分頁儲存過程 使用示例 exec sp pageindex from stusources 2,10 注意 目前還沒有對輸入的引數進行嚴格的驗證 預設為輸入都是合法有效的 alter proc s...