《WCF全面剖析》-章節內容簡介

ldzsl發表於2021-09-09

(上冊)

第1章 WCF簡介(WCF Overview)    
本章簡單講述了WCF產生的歷史背景,以及在微軟產品線中所處的地位。為了使讀者對基於WCF的程式設計模型有一個直觀的印象,我們將帶領讀者建立一個完整的WCF應用。本章例項應用涵蓋了構建一個基本WCF應用所需的所有步驟,包括服務契約的定義、服務的實現、服務的寄宿、後設資料的釋出和匯入、服務代理的建立和服務呼叫等。

第2章 地址(Address)    
作為終結點三要素之一的地址在WCF應用程式設計介面中透過EndpointAddress表示,本章會從程式設計的角度對該型別進行詳細的介紹。埠共享對於WCF服務的部署具有重要的意義,我們會分別介紹基於不同傳輸協議(HTTP/HTTPS和TCP)的埠共享機制在WCF中是如何實現的。終結點地址具有邏輯地址和實體地址之分,本章會詳細講述如何在客戶端和服務端實現兩者的分離。在本章的最後會對請求監聽和訊息分發機制進行深入解析。

第3章 繫結(Binding)    
WCF整個框架大體分為服務模型層和通道層,作為終結點三要素之一的繫結是整個通道層的締造者。為了全景展示整個繫結模型,涉及到的物件包括繫結元素、通道監聽器、通道工廠、通道等。繫結本質上是一系列相關繫結元素的有序組合,我們將從繫結元素的構成來分析常見系統繫結的本質區別,以及透過繫結元素重組來建立自定義繫結。

第4章 契約(Contract)    
契約是組成終結點的第三個元素,本章會從程式設計和服務描述的角度系統地介紹服務契約。組成服務契約的操作表示基於某種模式的訊息交換和訊息本身的結構,本章會著重介紹基於三種訊息交換模式的契約操作之間的差異,以及如何程式設計實現對客戶端的回撥。多執行緒在服務呼叫中具有普遍的意義,我們會全方面地介紹多種不同的非同步呼叫方法在WCF中的實現。在本章的結尾,我們會詳細討論操作選擇和執行機制。

第5章 序列化(Serialization)    
序列化/反序列化最終透過XmlSerializer和DataContractSerializer這兩個序列化器來實現,我們會詳細介紹它們參與序列化和反序列化採用的序列化規則。資料契約是WCF中定義資料的主要方式,本章會著重介紹如何透過DataContractAttribute和DataMemberAttribute這兩個特性來定義資料契約。確定物件的型別是保證序列化/反序列化成功的先決條件,我們會系統地介紹如何透過“已知型別”讓某些型別成為序列化器預先知道的型別。基於集合和泛型型別的資料契約比較特殊,我們會在專門的一節對它們進行詳細介紹。本章的最後會講述資料契約等效性的概念,以及針對請求訊息和回覆訊息的序列化/反序列化在WCF中是如何實現的。

第6章 訊息(Message)    
訊息是通訊的載體,本章專門介紹關於訊息的話題。我們首先會透過對SOAP的介紹讓讀者知道一個標準的訊息應該具有怎樣的結構。在WCF的應用程式設計介面中,訊息透過型別System.ServiceModel.Channels.Message表示,我們會針對該型別來介紹基於訊息的基本操作和狀態機。除了訊息主體外,我們可以透過訊息報頭和訊息屬性來攜帶額外的控制資訊,本章會詳細講述訊息報頭和訊息屬性是如何新增和讀取的。訊息契約可以將某個型別的屬性/欄位分別定義成訊息的主體成員和報頭成員,我們會系統地介紹基於訊息契約的程式設計。本章以訊息編碼作為結尾,透過介紹我們可以知道訊息在傳送前的編碼和接收後的解碼在WCF中是如何實現的。

第7章 服務寄宿(Hosting)    
我們透過宿主應用程式來承載服務旨在為服務提供一個執行環境。服務契約透過ServiceHost來實現,以終結點為核心的服務描述是建立ServiceHost的基礎,所以本章的開始會對服務描述進行系統的介紹。IIS/WAS寄宿是我們常用的服務寄宿方式,為了深刻地理解背後的執行機制,我們對不同版本的IIS和ASP.NET管道進行了詳細介紹。而IIS/WAS寄宿具有ASP.NET相容模式和並行模式之分,本章將從實現原理的角度深入剖析兩者的差別。我們將針對Windows服務的服務寄宿方式放在本章的結尾進行介紹。

第8章 客戶端(Client)    
我們透過服務代理進行服務呼叫,而服務代理可以直接透過ChannelFactory[TChannel]來建立,也可以透過匯入服務後設資料的方法直接生成繼承自ClientBase[TChannel]的服務代理類。本章會詳細講述ChannelFactory[TChannel]和ClientBase[TChannel]。透過本章的介紹我們會知道,從ChannelFactory[TChannel]被建立到被開啟,再到透過ChannelFactory [TChannel]建立服務代理,最後將服務代理開啟並進行服務呼叫的各個階段WCF在背後都為我們做了什麼。

第9章 例項化與會話(Instancing and Session)    
例項化和會話是WCF中兩個重要的概念,前者旨在實現服務例項物件的啟用,後者則實現對客戶端呼叫狀態的保持。本章將詳細介紹三種典型的例項化模式所表現的行為、實現的原理及各自適合的場景。在介紹會話的部分會深入剖析會話如何保持客戶端多次服務呼叫的狀態,以及會話、例項化模式、繫結和通道之間的關係。

第10章 REST服務(REST Service)    
REST是直接建立在Web上的一種面向資源的軟體架構風格,WCF透過Web HTTP程式設計模型對REST提供了很好的支援。本章會系統地講述組成Web HTTP程式設計模型的重要型別和元件。URI模板是WCF REST的一個重要的概念,讀者透過本章的介紹不僅會了解定義URI模板的基本語法,還會對基於URI模板的操作選擇機制有一個深刻的理解。較之SOAP,WCF REST採用更為複雜的訊息格式化機制,本章透過對訊息格式化的介紹讓讀者明白不同訊息格式和主體風格的訊息是如何格式化的。輸出快取、條件獲取和條件更新的介紹被放在本章的最後部分。

第11章 WCF例項研究(WCF in Practice)    
本章透過一個簡單的電子商務網站VideoMall指導讀者如何利用WCF構建一個完整的分散式應用。本例項不僅會體現WCF的基本程式設計方式,還會涉及一些軟體架構和設計方面的介紹,比如模組化、分層、IoC和AOP等。本例項還體現了很多針對WCF的擴充套件,比如透過擴充套件實現了與Unity、EntLib的整合。

(下冊)

第1章 異常處理(Exception Handling)    
本章首先會對WCF基本異常處理模式進行介紹,讀者藉此會了解到如何進行異常的丟擲與捕獲,異常詳細資訊如何傳遞,以及錯誤契約該如何定義。異常和訊息是錯誤資訊的兩種不同的載體,我們會詳細介紹透過兩種不同形式承載的錯誤資訊是如何進行轉換的。WCF的擴充套件性在異常處理方面具有較好的體現,本章的最後部分會透過例項演示的方式講述基於自定義ErrorHandler的異常處理擴充套件。

第2章 後設資料(Metadata)    
用於描述服務的後設資料幫助客戶端建立匹配的終結點進行服務呼叫,WCF具有一個完整的後設資料體系實現後設資料的匯出、釋出、獲取和匯入,本章會從這4個方面來深入剖析整個後設資料架構體系。不論是後設資料本身還是後設資料的釋出,都不是微軟在Windows平臺內部的閉門造車,而是遵循一系列的開放標準,這些標準包括WS-Policy、WS-Transfer、WSDL和WS-MEX等,本章同樣會涉及到對這些WS-*規範的介紹。

第3章 事務(Transaction)    
基於WCF的分散式事務直接建立在現有的Windows事務管理體系之上,本章會對該事務處理模型進行詳細的介紹。WCF事務具有OleTx和WS-AT兩個基本協議,我們會對WS-AT以及相關的WS-Coordination規範進行相應的介紹。在針對事務程式設計模型的介紹中,我們會了解到如何透過服務契約定義事務流轉的策略,如何透過對繫結的設定實現事務的流轉,以及如何控制事務相關的行為。在本章的最後,我們會詳細講述事務流轉和事務自動登記在WCF框架體系中是如何實現的。

第4章 併發與限流(Concurrency and Throttling)    
併發指的是針對同一個封裝服務例項的例項上下文的並行呼叫,WCF具有Single、Multiple和Reentrant三種基本的併發模式,本章會詳細講述基於不同例項化方式的Single和Reentrant併發模式是如何實現的。執行緒的親和性表示針對服務呼叫請求的處理與服務寄宿時的同步上下文的繫結,本章會詳細介紹執行緒的親和性是如何產生的,以及如何解除執行緒的親和性。限流旨在控制相應的併發量以實現對資源的合理使用,進而確保服務的可用性,在本章的最後部分我們會詳細講述如何設定三個限流閾值,以及限流機制的實現原理。

第5章 可靠會話(Reliable Sessions)    
可靠會話透過訊息確認和超時重傳機制保證了通訊的可靠性,實現了訊息的接收保障、重複篩選和有序交付。可靠會話是對WS-RM的實現,本章的開始會進行關於WS-RM的相關介紹。可靠會話僅僅涉及到繫結,我們會透過例項演示的方式來介紹圍繞著繫結的可靠會話程式設計模型。在本章的最後,我們會從訊息交換的角度來深入剖析可靠會話是如何實現上述三個可靠通訊訴求的。

第6章 佇列服務(Queued Service)    
WCF是Windows平臺下傳統分散式技術集大成者,這裡被整合的一項分散式技術就包括MSMQ,我們把採用MSMQ作為通訊手段的服務稱為佇列服務。為了鞏固讀者針對MSMQ的相關知識,我們會對MSMQ以及針對System.Messaging的程式設計模型進行簡單的介紹。同樣是透過三要素組成的終結點,佇列服務對終結點有著不同的要求,我們會討論佇列服務終結點的獨特之處。佇列服務針對事務和會話有著完全不同的特性和實現方式,佇列服務下的事務和會話是本章的一個重點。本章的最後部分會講述在客戶端和服務端如何進行錯誤處理。

第7章 傳輸安全(Transfer Security)    
傳輸安全透過身認證讓服務和客戶端在進行功能性訊息互動之前確定對方的身份,透過對訊息的簽名和加密確保訊息的一致性和機密性。傳輸安全具有兩種基本模式,即Transport和Message安全模式,本章針對不同的繫結型別對這兩種安全模式的支援進行了系統的介紹。

第8章 授權與稽核(Authorization and Auditing)    
WCF提供了針對操作的宣告式授權讓某個訪問者只能執行被授權的操作。Windows使用者組和ASP.NET Roles這兩種現成的授權方式可以被直接使用,同時支援自定義的授權模式。本章著重介紹不同授權模式的程式設計方式和實現原理。所謂的安全稽核就是針對認證和授權所做的針對EventLog的日誌記錄,我們將透過具體的例項來講述如何稽核程式設計和實現稽核背後的故事。

第9章 擴充套件(Extension)    
整本書都在提及WCF的擴充套件性,本章對此進行專門的介紹。根據具體需要對WCF進行自由而靈活的擴充套件的前提是我們對整個WCF執行框架體系有一個深刻的認識,所以本章會為你帶來針對WCF客戶端和服務端執行框架的全景展示,並在此基礎上介紹WCF包含的幾乎所有的擴充套件點。

第10章 WCF 4.0新特性(New Feathures in WCF 4.0)    
其實整本書都是針對WCF 4.0的,關於WCF 4.0針對現有功能的一些小改動已經包含在各個章節中。本章著重介紹WCF 4.0提供的一些全新的特性,包括預設終結點、預設繫結和行為配置、標準終結點、無.svc檔案服務啟用、路由服務和服務發現等。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/2325/viewspace-2810170/,如需轉載,請註明出處,否則將追究法律責任。

相關文章