“全書之寫印,實系初稿。有時公私瑣務蝟集,每寫一句,三擱其筆;有時興會淋漓,走筆疾書,絮絮不休;有時意趣蕭索,執筆木坐,草草而止。每寫一段,自助覆閱,輒搖其首,覺有大不妥者,即貼補重書,故剪刀漿糊乃不離左右。個中甘苦,只自知之。”
在某個陽光明媚的早晨,我在去上班的公交車上翻看岳南先生的《南渡北歸》的時候,看到上面這段董作賓描述自己寫作《殷歷譜》之甘苦的文字,回想起我寫作這本書的經歷,不禁感慨萬千。我無意將《WCF全面解析》自比煌煌巨著《殷歷譜》,只是覺得人同此心,這段文字正好描述我寫作此書的狀態。
《WCF技術剖析(卷1)》(以下稱《卷1》)於2009年7月正式出版,在此不久我就開始了《卷2》的創作。對於《卷1》的寫作,我還算是游刃有余,但是寫作《卷2》的難度是我始料未及的。如果像市面上大部分專著一樣只涉及WCF編程,我想《卷2》早在一年之前就已經完成了。但是我在寫作之初就沒有將本書定位為一本純粹的WCF編程書籍,而是決心寫一本“深入肌理”,對WCF進行“庖丁解牛”式剖析的書籍。在沒有任何現成資料可供參考的情況下,我只能通過對源碼的分析來了解其底層的實現原理。為了能夠確保這部分內容的正確性,我編寫了很多的測試程序來證實我的想法。
“探究之深”是本書難以在較短的時間之內交付出版的一個主要原因,而另一個因素則是“涉及之廣”。WCF不是微軟在Windows平台下的閉門造車,而是在設計之初就考慮到了針對開放標准的支持。《卷2》涉及到太多的WS-*規范,比如“異常處理”一章涉及到SOAP;“元數據”一章涉及到WS-Policy、WS-Transfer、WS-MEX和WSDL;“事務”一章涉及到WS-Coordination和WS-AT;“可靠會話”一章涉及到WS-RM;“傳輸安全”一章涉及到WS-Security、WS-Trust 、WS-Secure Conversation和WS-Security Policy;“WCF 4.0新特性”一章涉及到WS-Discovery。對於這一系列的WS-*規范,單單從頭到尾看一遍都需要花費不少時間,而我已經不太記得自己究竟看多少遍了。
《卷1》的整個內容基本上都圍繞着WCF本身,但《卷2》卻涉及到不少的背景知識。為了讓讀者對WCF有一個全面而深刻的了解,我在書中涉及到很多背景知識的介紹。比如“事務”一章中花費了很多文字介紹MSDTC和System.Transactions事務;“並發與限流”一章中有針對同步上下文的介紹;為了讓讀者能夠深入認識可靠會話的實現原理,我將其同TCP協議的機制進行類比;“隊列服務”一章中對MSMQ進行了系統的介紹;“傳輸安全”一章中更是涉及到針對非對稱加密以及NTLM和Kerberos認證原理的介紹。
由於寫作難度不小,加上寫作和資料收集只能在工作之余進行,所以很多次都有中途放棄的念頭。很有意思的是,每次在我下定決心放棄寫作后沒幾天總是會收到《卷1》的讀者給我的留言,這些留言體現了對《卷1》的肯定,充滿了對《卷2》的期待。讀者的肯定和期待一次次給了我堅持下去的力量,前后經歷了兩年的時間終於完成了《卷2》,這算是對讀者的交代,也是對我自己的交代。
《卷2》完稿之后我開始為《卷1》的再版進行修訂。對於出版后的《卷1》我基本上很少翻看,因為我個人基本上不太喜歡翻看自己寫的東西,包括自己寫的400多篇博客文章。針對《卷1》的修訂讓我第一次完整地閱讀自己寫的東西,經過了寫作《卷2》的“折磨”,讓我對WCF有了更加深刻的認識,於是我基於對WCF最新的理解開始對《卷1》的內容進行大刀闊斧的修改。雖然《卷1》大體上還是保留着原來的結構,但是內容已經發生了巨大的改變。據我粗略估計,改動內容的比率基本上達到一半。
最后我將《卷2》和修訂后的《卷1》給李建忠和呂建偉(阿朱)老師幫忙審閱,李建忠老師建議增加關於WCF REST的內容,於是我在《卷1》中新加了“REST服務”一章。由於新的《卷1》已經難現往日模樣,在本書的策划編輯張春雨老師的建議下我決定將原《卷1》和《卷2》作為一個整體分上、下冊出版,於是才有了你手中的這本《WCF全面解析》。
內容簡介
本書特點
本書讀者
推薦序一 [李建忠 祝成科技創始人]
推薦序二 [阿朱 暢銷書《走出軟件作坊》作者]
媒體評論
《WCF全面解析》(上冊)- 目錄
《WCF全面解析》(下冊)- 目錄
《WCF全面解析》-章節內容簡介
內容簡介
《WCF全面解析》是作者多年潛心研究wcf技術的心血之作,也是這些年來從事wcf開發的經驗總結。書如其名,《wcf全面解析》涵蓋了wcf幾乎所有的知識點,並對其底層框架進行了“庖丁解牛”式的剖析,力求將wcf的整個運行機制完整而清晰地呈現在讀者面前。
《WCF全面解析》上冊的前四章在對wcf進行總體介紹的基礎上,對構成終結點的三要素(地址、綁定和契約)進行了系統說明;隨后的兩章則着重剖析序列化和消息編碼在wcf中的實現;第7、8章講述了在服務寄宿和操作調用過程中,wcf的服務端和客戶端框架分別為我們做了什么;第9、10章將介紹的重點落在實例化、會話和rest服務上面;在最后一章中采用wcf構建了一個具體的電子商務網站vm,它將指導你如何將理論應用於實踐。
《WCF全面解析》下冊主要涉及一些所謂的“高級”話題,主要包括如何在分布式環境中處理異常(第1章);元數據的導入與導出、發布與獲取如何實現(第2章);如何利用wcf對事務的支持將分布式事務引入服務(第3章);如何利用並發與限流機制提高服務的吞吐量和可用性(第4章);如何利用可靠會話機制確保消息的“使命必達”(第5章);如何利用隊列服務提供離線通信的支持(第6章);第7、8章主要涉及安全的相關內容,包括傳輸安全、授權與審核;第9章全景展示wcf服務端和客戶端的運行時框架,以及在此基礎上的所有擴展可能;最后一章為你帶來wcf 4.0幾個獨立的新特性。
《WCF全面解析》不僅適合尚未接觸過wcf,希望盡快入門並進行深入研究的開發人員使用,同樣也適合對wcf有一定了解的開發設計人員和架構師閱讀。相信不同層次的讀者都能從《wcf全面解析:全2冊》中找到自己希望了解的部分。
本書特點
如果要說出《WCF全面解析》具有哪些市面上其他WCF圖書不具備的特點的話,我覺得可以通過以下三個“注重”來概括。
- 注重原理:“知其然,且知其所以然”,對一項技術實現原理的把握能夠幫助你更加有效地利用這項技術。WCF建立在.NET平台下,提供基於托管代碼的應用編程接口(API),在編程層面不會太復雜,也很容易入手。但是如果希望通過WCF構建一個具有高性能、高可維護性、高可擴展性的分布式應用,就要求架構師、設計師和開發者對WCF的實現機制,以及面向服務的設計原理具有正確、全面而深入的理解。當然,對於WCF編程的介紹對於任何一本關於WCF的圖書都是必需的,《WCF全面解析》也不例外,不過它和那些完全介紹WCF編程的書不同的是,本書中此類內容僅占全部內容的一半左右。
- 注重細節:“細節決定成敗”,如果將2/8原則應用到編程領域,它將體現在:花20%的時間編寫出80%程序主體,而80%的時間用於編寫剩下20%核心程序並糾錯和解決Bug。這些Bug的產生往往是由於對細節不夠重視所導致的。《WCF全面解析》會介紹一些常被人們忽視而導致產品Bug的細節,這些細節多源自於我這些年來實踐的積累和總結。
- 注重實踐:“實踐出真知”,不斷地在具體應用中進行實踐是學習WCF最有效的手段。實踐是檢驗真理的唯一標准,通過將所學的WCF知識應用到一個真正的應用之中,才能確保我們掌握的知識的正確性。實踐不但可以鞏固我們的所學,還會讓我們意識到不足。《WCF全面解析》在每一章節都會提供一系列的實例演示,讀者可以單獨下載這163個實例的源代碼。
本書讀者
本書的內容不僅適合尚未接觸過WCF,希望盡快入門並進行深入研究的開發人員,同樣適合對WCF具有一定了解的開發設計人員和架構師。相信不同層次的讀者都能從本書中找到自己希望了解的部分。閱讀本書的讀者需要對.NET,包括對C#和.NET Framework具有一定的了解。如果讀者具備了DCOM、Enterprise Library Service、.NET Remoting、Web Service、MSMQ及SOA相關的基礎,對閱讀此書盡快掌握WCF將大有裨益。
推薦序一 [李建忠 祝成科技創始人]
由於從事IT技術教育行業,我對金楠在技術教育傳播方面的付出有着格外一層敬意。對國內IT技術出版歷史有所了解的朋友應該不會忘記,我們曾經的IT技術出版是多么的貧瘠和劣質。大量的非專業人士在翻譯、編著一些粗制濫造的圖書來“教育”從事一線IT技術工作的專業人士,一如食品行業的“三聚氰胺”和“地溝油”,侵蝕着技術人員的知識供應系統——這段荒誕的歷史,是中國IT行業一段時間以來技術水平低下的一個重要原因。
我一直有一個觀念:IT教育、出版、傳播必須由一線專業的技術人來做內容的生產者——其實這是一個常識,可惜的是在我們這個雜草叢生的時代,這些常識常常被忘記。
所幸,每個行業總有一些進步的力量在推動改變。金楠就是推動國內技術教育進步力量的一分子。首先,金楠是一位工作在一線的優秀的WCF技術人員,這符合我對閱讀技術圖書的第一個要求和期待;其次,金楠的寫作文筆、專業責任也給人以充分信任,這在金楠的文字中讀者可以體會。
另一方面,我也相信讀者的覺醒是中國技術出版環境改善的土壤基礎。“閱讀圖書前仔細調研作譯者,了解作譯者的背景和經驗,看作譯者是否持續地在某一領域有長期積累和耕耘,大家用買書作為選票來鼓勵那些優秀、負責任的作譯者……”這是我在很多場合鼓動“讀者覺醒”的“啟蒙言論”。
我相信隨着覺醒的讀者越來越多,像金楠這樣的教育同道越來越多,假以時日,國內的技術教育和出版環境就會得到大幅度改善,中國技術產業也會有質的飛躍。
這是我為金楠的嘔心力作《WCF全面解析》出版感到欣喜的原因。了解WCF的朋友我想很多都知道“國內有個叫蔣金楠,網名Artech的在搞WCF”——這也是我對金楠的初始印象。通過接觸金楠的技術博客,以及金楠09年的作品《WCF技術剖析》,我以及我的技術團隊都曾從金楠那里得到過技術營養。作為繼DCOM、Remoting、Web Services、Enterprises Services之后微軟的分布式組件通信與服務框架,WCF無疑是微軟技術平台構建網絡應用的首選。特別是在添加了REST支持之后,WCF在面向新一代移動互聯應用方面也成為很多技術架構的選擇。金楠的《WCF全面解析》全面剖析了構建WCF應用所需要的各方面技術,剝絲抽繭,由淺入深,也是我非常欣賞的技術講述方式。我相信《WCF全面解析》一書是搞WCF朋友的案頭必備。
李建忠,祝成科技與Boolan.com創始人,兼高級講師,國內知名.NET技術專家。對於技術教育有異乎尋常的熱情,由於在.NET社區的特殊貢獻,於2010年獲微軟區域技術總監榮譽稱號。專注於面向對象、.NET、C++、設計模式。微軟MSDN中國C++、.NET、設計模式專欄講師。四度連任微軟最有價值專家(MVP);微軟MSDN中文網絡廣播最受歡迎講師。譯作:《Microsoft .NET框架程序設計(修訂版)》、《Effective C#中文版》。曾成功培訓過西門子、SAP、HP、CA、騰訊、東軟、諾基亞等著名企業。
推薦序二 [阿朱 暢銷書《走出軟件作坊》作者]
組件式開發是每個開發人員的夢想。前有CORBA、COM+、EJB前赴后繼,進化到如今又演變成了SOA。而微軟體系內的SOA解決方案就是WCF。微軟的技術似乎入門、易用性一直都不錯,VS.NET隨便一個向導就能產生一個WCF應用代碼骨架。而且微軟一直號稱底層他們給搞定,大家只要專注業務實現即可。但事實真的如此嗎?如果你曾經經歷了過往的組件式開發技術在商用產品中的實踐,那么你就會知道,不了解底層機理,你做的東西只能作為原型,一到真實的商用生產環境中接受數據、並發、事務、安全、網速的考驗,不足立馬顯現。這也就是組件技術經歷了多種技術,流行多年,但真正能在市面上看到的成功的組件式應用軟件卻少之甚少的原因。
但我們仍然不乏夢想,組件式開發仍然是我們每個開發人員的追求境界。我們想做好它掌控它,怎么入手?龐雜的技術規范和技術演進,又雜合了各家廠商的實現不同、理念不同,讓我們亂花迷眼。我經歷了COM時代,一直把Don Box的《COM本質論》奉為我的指路明燈。在SOA時代,我想學習WCF,我曾經購買過大量關於SOA和WCF的書籍,但能把SOA機理和WCF這種特定廠商實現的技術講得如《COM本質論》一樣完美透徹的,那必屬Artech這本經過自己深研、實踐而著作成功的心血結晶——《WCF全面解析》。
Artech對WCF的研究歷來已久,早在2009年就已經出版了廣受歡迎的《WCF技術剖析》(卷1),因為我關注Artech的博客已經很久,所以卷1一出版我就趕快入手了一本。很快這本書就成為我學習WCF的主要讀物,每每重讀都有新的啟發和認識。但卷1對WCF的高級技術如事務、異常保護、元數據、可靠會話、傳輸安全等主題並沒有談得很透徹,所以Artech又專門著作了卷2來專題論述。WCF技術發展日新月異,回過頭來看卷1內容,很多細節已經發生了改變,而且一些新的技術特性也需要增補,Artech對WCF技術的認識和實踐在這么多年一線研發工作中更深入了一層,所以Artech決定修訂卷1,並且和卷2構成更完整、更流暢、更清晰的體系,兩卷合並出版,這就是《WCF全面解析》的來由。這本書歷經5年打磨,絕對和它的名字“全面解析”名副其實。能讀到此書,幸哉!
國內在技術圖書這個領域大多崇拜國外翻譯的書籍,當然也有國內害群之馬不在一線開發實踐工作就大講技術,厚厚的一本書盡貼的是大段完整的Demo代碼和Next Step之類的截圖。但卷1已經用事實證明,這本書都是干貨。盡管這次卷1、卷2合二為一,厚厚一個大部頭容易讓人嚇一跳,但這確實是因為WCF這個體系太龐大,要想真正把它層層解析透徹,就需要這么多的筆墨力量。
而且Artech有着程序員慣有的嚴謹、細致、踏實、追本求源、動手驗證、力求完美代碼的精神品質。所以此書的字里行間也處處透着這種實踐、實證、機理的氛圍。能把如此復雜、龐大的技術體系講明白,這需要有非常高超的文字架構能力和描述能力。但Artech層層剖析,從入門實例到技術規范原理,再到WCF實現與代碼驗證,Artech這種寫作風格非常符合開發人員的理解習慣,而Artech本身就是一直戰斗在一線的開發人員,因此這就是一本開發人員寫給開發人員的書。
如果你想成為SOA和WCF方面的專家,那么這本書就是你的最好法寶。想想你作為專家而獲得的回報,那么你對這本書購買所付出的,簡直是太值了。
阿朱,本名呂建偉,暢銷書《走出軟件作坊》作者,CSDN名博,現任深圳明源軟件CTO。10年以上商業軟件從業經驗,10余年來一直專注行業管理信息化領域,7年職業經理人生涯,在商業分析、產品體系規划、研發人才體系搭建、研發過程管理、技術架構、貫通售前/研發/售后方面多有經驗。
媒體評論
我經歷了COM時代,一直把Don Box的《COM本質論》奉為我的指路明燈。能把SOA機理和WCF這種特定廠商實現的技術講得如《COM本質論》一樣完美透徹的,那必屬Artech這本經過自己深研、實踐而著的心血結晶——《WCF全面解析》。如果你想成為SOA和WCF方面的專家,那么這本書就是你的最好法寶。想想你作為專家而獲得的回報,那么你對這本書購買所做的付出,那簡直是太值了。
——《走出軟件作坊》作者 明源軟件CTO 阿朱
金楠是一位工作在一線的優秀的WCF技術人員,這符合我對閱讀技術圖書的第一個要求和期待。其次,金楠的寫作文筆、專業責任也給人以充分信任,這在金楠的文字中讀者可以體會。這本《WCF全面解析》全面剖析了構建WCF應用所需要的各方面技術,剝絲抽繭,由淺入深,也是我非常欣賞的技術講述方式。我相信《WCF全面解析》一書是搞WCF朋友的案頭必備。
——祝成科技與Boolan.com創始人 .NET技術專家 李建忠
知識全面、論述准確、邏輯嚴密是本書的特點。這是一本各層次開發人員都可以從中受益的書:對於初、中級開發人員,它可以幫助你獲得WCF全方位的知識,系統地梳理WCF的知識結構,提升動手實踐能力;對於高級開發人員,它既可以有效彌補你WCF相關知識中的盲點,又可以讓你在自己熟悉的知識點上領略作者的看法和理解。
——資深架構師 曲春雨