程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> 關於.NET >> 《WCF技術內幕》翻譯19:第1部分_第4章_WCF101:從內部剖析WCF和本章小結

《WCF技術內幕》翻譯19:第1部分_第4章_WCF101:從內部剖析WCF和本章小結

編輯:關於.NET

從內部剖析WCF

當檢查WCF程序(地址、綁定和契約)外部的時候,很自然的就會想知道WCF 如何使用地址、綁定和契約來發送和接收消息。從目前為止我們看到的代碼,很 少有代碼與發送和接收消息有直接關系。事實上,地址、綁定和契約本身不會做 太多的實際工作。當我們仔細研究WCF程序的時候,我們看到另外一個使用地址 、綁定和契約發送和接收消息的基礎結構。從大的層次考慮,本書的剩余部分會 專注於解釋這個底層基礎結構,所以我們將會在本章裡介紹這個底層基礎結構的 主要部分。

當我們看完整個地址、綁定和契約的內容,發現實際只有2個主要的架構層的 基礎結構。這2個層次的名字分別為服務模型層(ServiceModel layer)和通道 層(Channel layer)。服務模型層是用戶代碼和通道層之間的橋梁。換句話說 ,它是標准API的一部分。通道層,換句話說,做了真正的消息相關的工作。通 道層是知道特定傳輸方式和WS-*消息編排的層。WCF擁有豐富的通道層功能。通 常來說,通道層是底層基礎結構開發人員的編程領域,所以完全可以不使用通道 層代碼寫出完整功能的WCF程序。

注釋:雖然這種劃分有一點簡單,但是我把開發人員分為2類:應用程序開發 人員和基礎結構開發人員。應用程序開發人員編寫應用程序代碼,而基礎結構開 發人員編寫應用程序開發人員使用的代碼。一個應用程序開發人員或許開發訂單 處理系統,而基礎結構開發人員也許會開發一個被訂單處理系統使用的可復用的 組件。在WCF裡,應用程序開發人員編寫消息應用,但是基礎結構開發人員編寫 自定義通道。

圖4-2說明了服務層和通道層如何協同工作

圖4-2:服務層和通道層

注意到服務模型層調用發送者上的代理(Proxy,也被稱為Client)和接受者 上的分發器(Dispatcher)。代理和分發器有不同的作用,盡管它們是相同架構 層的不同部分。代理負責創建消息,並發送給通道層。分發器,換句話說,負責 反序列化接收到的消息、實例化對象並分發反序列化的消息內容到此對象。代理 和分發器與其它對象相比承擔了更多的工作,我們會再第10章裡詳細描述它們的 作用。

服務模型層和通道層與地址、綁定和契約的范圍不同。作用上說,地址、綁 定和契約式應用程序開發人員API的一部分,它們可以影響這2個層。最初接觸 WCF層的時候,弄清楚地址、綁定和契約作用的層次非常有用。在消息接收者上 ,地址告訴通道偵聽請求消息的地址。在發送者上,地址告訴通道消息接收者的 地址。綁定,換句話說,是創建通道層的工廠對象的集合。契約是消息序列化和 反序列化使用的,它們同樣會被用來確定接受程序的消息交換模式(MEP)。通 常來說,契約是一個服務模型層的結構。行為(Behaviors),換句話說,可以 影響服務模型層和通道層。圖4-3如圖所示:

圖4-3:ABC如何影響服務模型層和通道層

本章小結

在這一章裡,我們構建了一個簡單的WCF程序,並分解為幾個主要的運行時組 件。我們看到面向開發者的WCF API,簡單而又不失靈活性。我們同樣看到地址 、綁定、契約和行為,提供了WCF2個主要架構層:服務模型層和通道層,使用的 API。此書的剩余部分將會詳細介紹這2個層次。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved