圖文演示W(wǎng)CF體系架構(gòu)運行流程
想要很好的運用一門語言你就要深入的理解它的體系架構(gòu),就拿我們想在用的WCF類庫,你知道WCF體系架構(gòu)嗎?知道它是怎么運行的嗎?這里就為你解開這個謎團。如果從宏觀的角度來分析WCF的運行機制,它的實現(xiàn)并不復(fù)雜。
#T#WCF體系架構(gòu)是基于一種攔截機制來實現(xiàn)的,負(fù)責(zé)傳遞和攔截消息的組件為通道,在客戶端發(fā)出對服務(wù)端服務(wù)的調(diào)用時,首先會通過一個服務(wù)代理對象,將調(diào)用方提供的對象序列化到消息中,然后該消息則通過通道進行傳遞。通道不只是包括一個,而是多個通道對消息進行處理,包括傳輸、消息編碼、管理會話、傳播事務(wù)等,但***層的通道總是傳輸通道。這些通道的構(gòu)成形成了一個通道堆棧。由于對象已經(jīng)被序列化,因而此時通道傳遞的消息可以跨進程或機器進行傳遞,利用傳輸通道傳遞到服務(wù)端。服務(wù)端的構(gòu)成與客戶端基本相似,仍然是通過通道棧中***層的傳輸通道接收消息,然后解析消息編碼,并一層層地往上傳輸。在服務(wù)端的通道棧之上,則是一個分發(fā)器(Dispatcher,或者說是調(diào)度器),它會首先對消息進行檢查,然后選擇一個客戶端要調(diào)用的操作。在這個過程中,消息會被反序列化。
下圖說明了整個WCF體系架構(gòu)運行過程:

由于WCF通過通道的方式傳遞消息,整個通道同時擔(dān)當(dāng)了偵聽器和攔截器的功能,它可以根據(jù)服務(wù)的定義,在方法執(zhí)行的前或后執(zhí)行不同的操作,例如事務(wù)、會話管理、安全等。這些操作在WCF中,大多數(shù)都可以以Attribute的方式應(yīng)用到服務(wù)契約上,這樣的實現(xiàn)方式,就類似于采用了AOP(面向服務(wù)編程)的方法為服務(wù)提供了大量的基礎(chǔ)功能,有助于簡化服務(wù)開發(fā)者的工作。


















