內容簡介
本書關注隱藏在特殊設計決策之後的根本原理,這些原理包括soa開發中極度匱乏的文檔,以及難以理解的特性等。通過本書,開發者與架構師不僅能夠了解如何進行wcf程式設計,還能夠掌握相關的設計準則、最佳實踐以及wcf存在的缺陷。
本書包括50多個工具和輔助類,以及70多個設計圖,它們都設計用來提高我們的生產力,保障wcf服務的質量,同時能彌補wcf自身存在的一些缺陷,並幫助簡化和自動化特定任務。
除了介紹面向服務的基礎知識外,本書涵蓋了以下內容:
·服務契約分解。
·事務與錯誤處理。
·數據契約版本控制與封送。
·並發管理。
·可伸縮性策略。
·佇列服務。
·操作、調用與事件。
·面向服務安全性。
·本書從軟體工程的角度出發,深入探索了wcf的每個主題。本書能夠使您如虎添翼,從而設計出可維護的、可擴展的、可重用的soa應用程式。
作譯者
張逸,正大軟體集團高級技術管理人員、系統架構師。先後在中興通訊、HP等國內外大型軟體企業任職,參與了AAA、BOE—CIMS、NCIC—CRM和EAS等項目的管理、設計與開發。他主要專注的技術領域為,他熟悉C#、Web Service、 Remoting和WCF等技術,參與了大型項目的分散式架構設計以及企業信息化解決方案的實施。他是《軟體設計精要與模式》一書的作者,在面向對象領域具有一定造詣,精通設計模式、測試驅動開發、極限編程與UML等技術或思想的運用。此外,他還擔任公司的軟體項目管理工作與技術團隊的建立。
目錄
序
前言
第1章 wcf基礎
什麼是wcf
服務
地址
契約
託管
綁定
終結點
元數據交換
客戶端編程
編程方式配置與管理方式配置
wcf體系架構
使用通道
可靠性
第2章 服務契約
操作重載
契約的繼承
服務契約的分解與設計
. 契約查詢
第3章 數據契約
序列化
數據契約特性
數據契約層級
數據契約等效性
版本控制
枚舉
委託與數據契約
數據集與數據表
泛型
集合
第4章 實例管理
行為
單調服務
會話服務
單例服務
分步操作
實例停用
限流
第5章 操作
請求-應答操作
單向操作
回調操作
事件
流操作
第6章 錯誤
錯誤與異常
錯誤契約
錯誤處理擴展
第7章 事務
恢復的挑戰
事務
事務傳播
事務協定和管理器
事務類
事務型服務編程
顯式事務編程
服務狀態管理
實例管理與事務
回調
第8章 並發管理
實例管理與並發
服務併發模式
實例與並發訪問
資源與服務
資源同步上下文
服務同步上下文
定製服務同步上下文
回調與客戶端安全
回調與同步上下文
異步調用
第9章 佇列服務
離線服務與客戶端
佇列調用
事務
實例管理
並發管理
傳遞故障
回放失敗
佇列調用與在線上調用
回響服務
http橋
第10章 安全
身份驗證
授權
傳輸安全
身份管理
總體策略
場景驅動方式
區域網路應用程式
網際網路應用程式
b2b應用程式
匿名應用程式
無安全
場景總結
聲明式安全框架
安全審核
附錄a 面向服務概述
附錄b 發布-訂閱服務
附錄c wcf編碼規範
序言
對於分散式系統,或者說業界不斷提及的互聯繫統的設計與構建,我與本書作者Juval可謂志同道合。我們經歷了相似的技術歷程,雖然我們效力於不同的公司,負責不同的項目,工作在不同的地方,但我們卻有著共同的目標。.
20世紀90年代早期,我們開始了對一種新技術理念的探索,即實現計算機之間的通信與互動。這種被稱為分散式系統應用程式的平台技術也逐漸為世人所了解。隨著工作站與伺服器硬體的逐漸普及,經濟因素不再成為制約發展的瓶頸,構建不依賴於單事務網路中心的大型系統就成為了技術熱點。對於大範圍的數據交換系統而言,同樣如此。在過去,我的電話公司如果要求每秒鐘傳遞超過1200位的數據幾乎是不可能的,而在如今看來連這都達不到簡直不可思議。在同樣的線路上,今天的傳輸速度已經達到了6Mbit/s。這真是一個激動人心的時代啊。
隨著分散式計算技術的逐漸成熟,在90年代早期分屬兩大陣營的大型分散式系統技術漸露崢嶸,即數字設備公司(最終被康柏兼併,併入惠普)主導的DCE技術,以及OMG組織(主要由IBM支持)倡導的CORBA技術。然而在1996~1997期間,所有這些傑出的工程學成果卻突然停滯不前。因為此時是網際網路的世界,整個世界都瘋迷於HTML、HTTP、風險投資以及IPO(Initial Public Offerings,首次公開募股)。整個行業花費了整整10年的時間才逐漸從泡沫經濟帶來的崩潰中恢復過來。不僅是經濟的復甦,技術的發展也重新走回正軌。隨之獲益的是分散式系統技術由此打破了過去由兩大陣營各占半壁江山的局面,多達數十種新的分散式技術如雨後春筍一般展現在人們眼前,使我們擁有了更多的抉擇權。
直到2007年,整個行業仍然在為分散式系統的正確編碼方式爭論不休。Sun公司或者BEA力主Java;而我在微軟的同事(包括我)則堅定地主張C#或者Visual Basic才是最佳的實現方式。無論是Sun、BEA、IBM還是微軟,都希望機器之間的通信標準能夠達成一致。試想昔日的DCE與CORBA之爭,正是因為達成了一致的標準規範才為如今的SOAP 1.1奠定了基礎,從而開創了分散式技術的盛大場面。..
自從SOAP 1.1作為技術說明(Technical Note)被提交給W3C,到現在已有超過6年的歷史。期間,多家行業合作商共同開發與協定了眾多基於SOAP的規範,從包括定址以及眾多安全選項的基礎規範,到諸如原子事務協作的企業協定。我在微軟的團隊,仍然非正式地稱呼我們的產品為“Indigo”,它代表了整個開發與協商過程中耗費的所有心血。如果沒有IBM、微軟以及其他合作夥伴對創建通用標準集的大力支持,在競爭如此激烈的企業領域幾乎不可能存在開放標準的框架,更不可能具有支持多個開發商以及各種平台的多種實現。
誠然,WCF的實現超出了預計需要花費的時間。標準的協定耗費了大量時間,畢竟我們不能只顧著發布自己的軟體(Windows Communication Foundation, WCF),而不考慮它與我們的行業合作夥伴以及競爭者之間的互操作性。設計同樣如此,對於那些具有分散式系統開發經驗的客戶而言,他們花費了大量時間學習以及掌握了我們之前提供的分散式系統技術,包括Web服務增強(WSE)、.NET Remoting、訊息傳輸/MSMQ以及企業服務/COM+,我們在發布軟體的同時必須考慮這些客戶。
在我剛才引用的技術清單中,包含了五種技術。如果使用非託管代碼,則還有更多的技術平台。WCF的其中一個最重要的設計目標就是通過簡單的方式將這些技術集合起來,以一種方式進行編程。不管是構建一個佇列應用程式、事務型的N層應用程式、P2P客戶端、RSS種子伺服器,還是構建自己的企業服務匯流排,都不再需要掌握那些只能解決部分問題的多種技術。我們只需要學習和使用WCF即可。這就是以一種方式編程的魅力所在。
本書展示了大量微軟已經構建好的技術細節,它們可以作為您的應用程式與服務的基礎。在本書中,作者以享有盛譽的寫作技巧,深入淺出而又準確細緻地介紹了WCF的體系架構。作為微軟互聯框架團隊成員的我們,也為自己構建的這一產品深感自豪。我們為開發者提供了一個統一的分散式技術體系架構,它具有廣泛的互操作性,全面提升了面向服務的特性。同時它還是易於學習的,有利於提高構建面向服務應用程式的生產力。作為當今最傑出的分散式系統專家之一,Juval願意傾盡心血全力介紹WCF,我們不禁深感榮幸。我們有足夠的信心相信,Juval的著作能夠幫助您理解人們為什麼會對這一產品的問世以及它將創造的新的機遇而激動不已。這些人也包括我們、Juval以及早期的用戶社區。享受本書,開始構建您的第一個WCF服務吧。
—— Clemens Vasters
程式經理,微軟互聯框架團隊