WCF技術剖析之一:通過一個ASP.NET程式類比WCF基礎架構

來源:互聯網
上載者:User

細算起來,已經有好幾個月沒有真正的寫過文章了。近半年以來,一直忙於我的第一本WCF專著《WCF技術剖析》的寫作,一直無暇管理自己的Blog。到目前為止《WCF技術剖析(卷1)》的寫作暫告一段落,初步預計於下個月由武漢博文視點出版。在《WCF技術剖析》寫作期間,對WCF又有了新的感悟,為此以書名開始本人的第三個WCF系列。本系列的目的在於對《WCF技術剖析》的補充,會對書中的一些內容進行展開講述,同時會囊括很多由於篇幅的原因忍痛割棄的內容。

本系列的第一篇,我將會對WCF的基本架構作一個大致的講解。不過,一改傳統對WCF的工作流程進行平鋪直敘,我將另闢蹊徑,藉助於我們熟悉的ASP.NET作為請求處理平台,通過一個簡單的託管程式類比整個WCF用戶端和服務端的架構。

WCF架構處理流程和涉及的組件

我們的類比程式將你搭建一個迷你版的WCF架構,為了展示WCF整個處理流程中使用到一些特殊組件。我們首先來簡單介紹一下對於一個簡單的WCF服務調用,WCF的用戶端和服務端架構的處理流程,和該流程的每一個階段都使用那些重要組件。

下面的列表列出了WCF服務端架構對於處理一個簡單的WCF服務調用請求所提供的功能,以及相應的功能承載的組件:

請求訊息的接收和回複訊息的發送:服務端在傳輸層監聽與接收來自客戶的請求,並將經過編碼後的回複訊息通過傳輸層發送到用戶端

請求訊息的解碼和回複訊息的編碼:將接收到的位元組數組通過解碼產生請求訊息對象,並將回複訊息通過編程轉化成位元組組。訊息的編碼和解碼通過MessageEncoder完成,而MessageEncoderFactory負責建立該對象

請求訊息的還原序列化和回複訊息的序列化:對請求訊息進行還原序列化,為服務作業的執行產生相應的輸入參數,以及將服務作業執行的結果(傳回值或者ref/out參數)序列化,並產生回複訊息。序列化和還原序列化通過DispatchMessageFormatter完成

服務物件的建立:建立或者啟用服務物件執行個體,InstanceProvider用於服務物件的建立或擷取

服務作業的執行:調用建立的服務物件的操作方法,並傳入經過還原序列化產生的輸入參數。OperationInvoker完成對服務作業的最終執行

較之服務端的流程,用戶端的流程顯得相對簡單,僅僅包含以下三個必需的階段:

請求訊息的序列化和回複訊息的還原序列化:產生請求訊息並將輸入參數序列化到請求訊息中,以及對回複訊息進行還原序列化,轉化成方法調用的傳回值或者ref/out參數。序列化和還原序列化通過ClienthMessageFormatter完成

請求訊息的編碼和回複訊息的解碼:對請求訊息進行編碼產生位元組數組供傳輸層發送,以及將傳輸層接收到的位元組數組解碼產生恢複訊息。訊息的編碼和解碼通過MessageEncoder完成,而MessageEncoderFactory負責建立該對象

請求訊息的發送和回複訊息的接收:在傳輸層將經過編碼的請求訊息發送到服務端,以及將接收來自服務端的恢複訊息

圖1 精簡版WCF用戶端與服務端組件

圖1反映了進行服務調用的必要步驟和使用到的相關WCF組件。在本案例示範中,我們需要做的就是手工建立這些組件,並通過我們自己的代碼利用它們搭建一個簡易版的WCF架構。如果讀者能夠對本案例的實現有一個清晰的理解,相信對於整個WCF的架構就不會感到陌生了。

圖2顯示了本結案方案的基本結構,總共分三個項目。Contracts用於定義服務契約,被服務端和用戶端引用。用戶端通過一個Console應用類比,而服務端則通過一個ASP.NET Website實現。

圖2 WCF架構類比案例應用結構

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.