WCF架構基于攔截特性分析
到目前為止,對WCF了解的人越來越多,我也不是個例外,對它的體系結構我也是很了解的,下面的內容就是講解WCF架構的。WCF為可靠性、事務、安全和實例激活等提供了極其寶貴的支持,所有這些都依賴于WCF基于攔截的架構。讓客戶端與代理交互意味著,WCF總是介于服務和客戶端之間來攔截調用并且執行預調用和調用后處理。當代理把調用堆棧幀串行化為一條消息并且沿著一個通道鏈發送消息時,該解釋即開始。
#T#每一個客戶端通道都要做消息的預調用處理。這個鏈的正確結構和組成在很大程度上依賴于綁定。例如,其中一個通道負責編碼該消息(二進制,文本或MTOM),一個通道負責傳遞安全調用上下文,一個通道負責傳播客戶端事務,一個通道負責管理可靠的會話,一個通道負責加密消息正文(如果這樣配置的話),等等??蛻舳说淖詈笠粋€通道是傳輸通道,它負責把消息由經配置的傳輸傳送到宿主。
在宿主端,該消息也經過一個通道鏈,從而實現宿主端消息的預調用處理。在宿主端的第一個通道是傳輸通道,它接收來自傳輸的消息。隨后的通道執行各種任務,例如解密消息正文、譯解消息、把傳播的事務設置到執行線程、設置安全主管、管理會話和激活服務實例。最后一個通道在宿主端把該消息傳遞到調度器。由調度器把該消息值的轉換成一個堆棧幀并且調用服務實例。圖描述了這一順序。
圖:WCF架構看上去的樣子。
在客戶端和服務端的攔截都要確??蛻舳撕头盏玫剿鼈兯蟮倪\行時刻環境以便正確運行。由服務實例執行該調用并且把控制返回到調度器,由它把返回值和錯誤信息(如果有的話)轉換成一條返回消息。現在,整個過程被顛倒:調度器通過宿主端通道傳送消息以執行調用后處理,例如管理事務、撤銷實例、編碼應答信息、加密它,等等。返回的消息轉到傳輸通道,在此把消息發送到客戶端通道以便客戶端調用后處理:解密,編碼,提交或取消事務,等等。
由代理把返回的消息轉換成一個堆棧幀并且把控制返回到客戶端。最值得注意的是,在這個WCF架構中的幾乎所有的點都提供了可擴展性鉤子-你可以為專利性行為提供定制通道,定制實例管理或定制安全。事實上,WCF提供的這些標準工具都是使用相同的可擴展性模型實現的。