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