圖文演示W(wǎng)CF體系架構(gòu)運(yùn)行流程
想要很好的運(yùn)用一門語(yǔ)言你就要深入的理解它的體系架構(gòu),就拿我們想在用的WCF類庫(kù),你知道WCF體系架構(gòu)嗎?知道它是怎么運(yùn)行的嗎?這里就為你解開(kāi)這個(gè)謎團(tuán)。如果從宏觀的角度來(lái)分析WCF的運(yùn)行機(jī)制,它的實(shí)現(xiàn)并不復(fù)雜。
#T#WCF體系架構(gòu)是基于一種攔截機(jī)制來(lái)實(shí)現(xiàn)的,負(fù)責(zé)傳遞和攔截消息的組件為通道,在客戶端發(fā)出對(duì)服務(wù)端服務(wù)的調(diào)用時(shí),首先會(huì)通過(guò)一個(gè)服務(wù)代理對(duì)象,將調(diào)用方提供的對(duì)象序列化到消息中,然后該消息則通過(guò)通道進(jìn)行傳遞。通道不只是包括一個(gè),而是多個(gè)通道對(duì)消息進(jìn)行處理,包括傳輸、消息編碼、管理會(huì)話、傳播事務(wù)等,但***層的通道總是傳輸通道。這些通道的構(gòu)成形成了一個(gè)通道堆棧。由于對(duì)象已經(jīng)被序列化,因而此時(shí)通道傳遞的消息可以跨進(jìn)程或機(jī)器進(jìn)行傳遞,利用傳輸通道傳遞到服務(wù)端。服務(wù)端的構(gòu)成與客戶端基本相似,仍然是通過(guò)通道棧中***層的傳輸通道接收消息,然后解析消息編碼,并一層層地往上傳輸。在服務(wù)端的通道棧之上,則是一個(gè)分發(fā)器(Dispatcher,或者說(shuō)是調(diào)度器),它會(huì)首先對(duì)消息進(jìn)行檢查,然后選擇一個(gè)客戶端要調(diào)用的操作。在這個(gè)過(guò)程中,消息會(huì)被反序列化。
下圖說(shuō)明了整個(gè)WCF體系架構(gòu)運(yùn)行過(guò)程:
由于WCF通過(guò)通道的方式傳遞消息,整個(gè)通道同時(shí)擔(dān)當(dāng)了偵聽(tīng)器和攔截器的功能,它可以根據(jù)服務(wù)的定義,在方法執(zhí)行的前或后執(zhí)行不同的操作,例如事務(wù)、會(huì)話管理、安全等。這些操作在WCF中,大多數(shù)都可以以Attribute的方式應(yīng)用到服務(wù)契約上,這樣的實(shí)現(xiàn)方式,就類似于采用了AOP(面向服務(wù)編程)的方法為服務(wù)提供了大量的基礎(chǔ)功能,有助于簡(jiǎn)化服務(wù)開(kāi)發(fā)者的工作。