- WCF技術(shù)剖析(卷1)
- 蔣金楠
- 3606字
- 2018-12-27 11:32:31
編著往來

蔣金楠先生的處女作《WCF技術(shù)剖析(卷1)》即將出版,本書的策劃兼責(zé)任編輯Lisa和他以聊天的形式交流了一些話題,從這些交流中能看到一本優(yōu)秀的原創(chuàng)著作的問世,包含了作者多少殫精竭慮的思考。
博文Lisa
蔣先生:《WCF技術(shù)剖析(卷1)》馬上就要面市了,恭喜您!
蔣金楠
謝謝!Lisa,真的應(yīng)該好好地感謝你!《WCF技術(shù)剖析(卷1)》能夠順利出版,很大程度上得益于你的有力推動。
博文Lisa
您太客氣了,作為編輯,這些都是我們應(yīng)該做的。有讀者問,您在博客園里已經(jīng)積累了 100多篇原創(chuàng)技術(shù)博客,其中關(guān)于WCF的博客就有30多篇,他們想知道您關(guān)注和研究WCF技術(shù)多長時間了?當(dāng)時的WCF技術(shù)與現(xiàn)在有哪些不同呢?
蔣金楠
我應(yīng)該屬于國內(nèi)較早一批接觸WCF的人吧。我們知道,WCF是隨著.NET Framework 3.0一起發(fā)布的。.NET Framework 3.0在前一個版本的基礎(chǔ)上引入了三大基礎(chǔ)框架:Windows Communication Foundation(WCF)、Windows Presentation Foundation、Windows Workflow Foundation (WF)和Card Space。微軟正式發(fā)布.NET Framework 3.0是在2006年11月份,而我第一次接觸WCF的時間還要向前推一年。
我第一次接觸WCF是參加微軟舉辦的一場關(guān)于Windows Vista的技術(shù)推廣的培訓(xùn),時間大概是2005年10月份。從WCF整個結(jié)構(gòu)體系來講,經(jīng)過了這么多年,基本上沒有什么大變動。不知道大家是否注意到這一點:雖然很多人埋怨微軟推出新技術(shù)的頻率過快,導(dǎo)致大家跟不上節(jié)奏,但是一些根本性的東西卻很少變化。比如.NET Framework先后推出了V1.0、V1.1、V2.0、V3.0、V3.5和V4.0,其實對于最根本的運行時(CLR)來說,卻只有3個版本V1.0、V2.0和V4.0。再比如說,ASP.NET從誕生到現(xiàn)在,所有的版本都采用最初的基于管道的設(shè)計。
如何在軟件設(shè)計之初就充分考慮軟件的可擴展性,我覺得這是很值得我們學(xué)習(xí)的地方。軟件版本演進(jìn)的過程應(yīng)該是對現(xiàn)有設(shè)計進(jìn)行擴展的過程,而不是不斷對現(xiàn)有設(shè)計進(jìn)行否定與革新的過程。WCF就是這樣一個極具可擴展性的通信框架,在我看來,WCF吸引人的地方不在于WCF本身能夠提供多么強大的功能,而在于任何人可以通過擴展讓W(xué)CF實現(xiàn)自己所需的功能。如果有人問我WCF到底具有多大的可擴展性,我會說WCF的擴展無處不在。
如果要比較當(dāng)初的WCF和現(xiàn)在的不同之處,以及WCF今后的發(fā)展。我覺得有兩點值得一談,那就是對REST和WS-*的支持。REST是近年來非常火的一種通信方式,在基于SOAP消息通信大行其道的時候,又回到完全基于HTTP和POX(Plain Old XML)的方式上面,有點返璞歸真的感覺,在WCF.NET 3.5中,為REST提供原生的支持。另一個方面,WCF是基于SOA的通信框架,而SOA的一個重要的目標(biāo)就是促進(jìn)不同廠商的應(yīng)用能夠進(jìn)行互操作,所以必須依賴于一系列開放的標(biāo)準(zhǔn),這些標(biāo)準(zhǔn)通過WS-*規(guī)范的形式體現(xiàn)。WCF完全建立在WS-*之上,隨著WS-*的不斷完善,WCF勢必與之同步。比如在即將推出的WCF 4.0中,就將會對WS-Discovery提供支持。此外,WCF與WF直接的集成將是WCF 4.0又一個較大的改進(jìn)。
博文Lisa
那您后來堅持學(xué)習(xí) WCF 是工作之需還是因為個人興趣呢?深入學(xué)習(xí)這項技術(shù)在您以后的工作中有著怎樣的價值和意義?
蔣金楠
應(yīng)該說我很幸運,從事了一項我感興趣的工作,能夠把工作當(dāng)成一種樂趣。由于公司的特殊背景,接的項目規(guī)模都非常大,所以分布式架構(gòu)對于每一個項目開發(fā)都是必需的。在WCF正式發(fā)布之前,公司所有的.NET項目采用的都是基于.NET Remoting和XML Web Service+WSE的分布式架構(gòu)。所以我對微軟之前的通信技術(shù),包括上面提到的.NET Remoting和XML Web Service+WSE,以及MSMQ等都比較熟悉。
但是,你知道嗎?由于微軟推出的這一系列的分布式通信技術(shù)對所解決的問題和適用的場景各有側(cè)重,導(dǎo)致它們之間的API具有非常大的差異。一個對XML Web Service非常精通的人,可能對.NET Remoting一竅不通。如果能夠?qū)⑦@一切都統(tǒng)一起來,提供一個統(tǒng)一的編程接口,這可真是一項造福所有Windows平臺下分布式開發(fā)人員的工程。而WCF就是這么一項工程,所以當(dāng)我第一次接觸WCF的時候就對它“一見鐘情”了。
博文Lisa
嗯,能工作和興趣能統(tǒng)一起來真是一件幸福的事情。有些羨慕您?
蔣金楠
軟件開發(fā)是一件很有趣的事情,它是一項不斷抽象的過程。從微觀上看,所有的程序都在用0和1表示的機器語言運行。從宏觀上看,相隔萬里的應(yīng)用之間能夠互聯(lián)。所以,我常說做軟件的人應(yīng)該具有兩雙不同眼睛,一雙著眼于微觀,洞察每一句代碼的執(zhí)行;另一雙著眼于宏觀,高屋建瓴地分析整個互聯(lián)系統(tǒng)之間的協(xié)調(diào),而WCF屬于宏觀的范疇。余世維曾經(jīng)說過,成大事者從小就具有大的格局。對于軟件來說,SOA和WCF就是培養(yǎng)你的大局觀,使你具備大格局。
博文Lisa
不少人對于學(xué)習(xí)新知識還是很積極的,但能隨時把學(xué)習(xí)的感悟有條理地記錄下來,而且持續(xù)不斷,這樣的人目前尚屬少數(shù),我自己就常常做不到這一點,所以很想知道您為什么能堅持這么長時間,乃至于這些記錄下來的思考最終能成為一本書?
蔣金楠
Lisa,不知道你是否具有這樣的體會:當(dāng)你從一個朋友那里聽了一個故事,可能對方講得太引人入勝,使你聽完后會覺得對這個故事的每一個細(xì)節(jié)都了然于心。但是,當(dāng)你向另一個朋友轉(zhuǎn)述這個故事時,結(jié)果會發(fā)現(xiàn)很多情節(jié)都不記得了。
其實我們對知識的掌握也是這樣,我們聽了很多講座,看了很多書,自以為精通了獲取的知識。但是,當(dāng)要將掌握的東西寫成文檔,或者直接通過口述的方式向第三者傳授的時候,就會發(fā)現(xiàn)對于那些自認(rèn)為很精通的知識其實掌握得還很不夠。所以,不要把寫博客文章看成是單純的知識傳授過程,實際上,作者通過對文字的組織在梳理自己掌握的雜亂無章的知識結(jié)構(gòu),是對掌握知識的鞏固過程。在這個過程中,可以發(fā)現(xiàn)很多欠缺和模糊。此外,知識也只有通過傳播才能體現(xiàn)其價值,分享知識是一件快樂的事情。
在這兩年多里,有很多網(wǎng)友在我的博客上給我留言或直接寫信給我,建議我寫一本全面介紹WCF的書,很多出版商也向我發(fā)出合作出版WCF相關(guān)書籍的邀請。本著不誤人子弟的信條,我都婉言謝絕了。直到去年收到周筠老師的邀約時,覺得經(jīng)過了這些年對WCF的學(xué)習(xí)和實踐,已有了一些積淀,才真正萌發(fā)了寫書的念頭。
可能對于一般人來說,寫書和寫博客都是通過文字表達(dá)自己對某些問題的想法與感受,兩者并不會有本質(zhì)的區(qū)別。有的讀者或許會覺得我寫《WCF技術(shù)剖析》就是將本人的博客文章拼湊而成。我要說的是,《WCF技術(shù)剖析》具有全新的內(nèi)容,與我博客上WCF文章的相似度不會超過10%。
對于我來說,寫書和寫博客具有本質(zhì)的不同。很多人把讀書當(dāng)成一種愛好,對于我來說讀書已不再屬于愛好的范疇,它已經(jīng)成為我生命中的一部分。雖然,現(xiàn)在出書也不是件什么稀罕事,但是我依然對寫書充滿敬畏,我始終覺得通過正式渠道出版的白紙黑字是很神圣的。
而寫博客則不同,博客文章屬于隨筆。在寫作的時候,筆隨心動,心到筆到;筆之所觸,心之所至。雖然博客上的大部分文章也很長,但是每篇文章并不會花我太多的時間。很多情況下,都是對某些東西先有一些大概的想法,在寫作的時候依靠“臨場發(fā)揮”來充實相關(guān)的內(nèi)容。每一篇博客文章基本上都是一氣呵成,而且,對于完成的隨筆,我一般不會讀第二遍。這也是為什么文中具有很多錯別字的原因。
寫書要考慮的問題太多,比如整體結(jié)構(gòu)、詳略安排、措辭與表達(dá)等。所以在寫每一章之前,我都會花上一周以上的時間來想這些問題:本章需要包含哪些內(nèi)容,哪些應(yīng)該詳細(xì)介紹,哪些可以一筆帶過,哪些內(nèi)容需要提前,哪些內(nèi)容則應(yīng)該置后,哪些內(nèi)容需要加一點事例代碼,哪些地方應(yīng)該插入一幅插圖,諸如此類均須思慮再三。所以,一段具有相同字?jǐn)?shù)的內(nèi)容,寫書花的時間比寫博客長很多。
博文Lisa
讀書已成為您生命中的一部分,這句話讓我深受觸動。有讀者對您后續(xù)的寫作很好奇,他們注意到您的WCF技術(shù)博客分為“WCF之旅”和“WCF后續(xù)之旅”,他們想了解您后續(xù)的寫作計劃。可否吐露一二?
蔣金楠
當(dāng)初我在博客園上發(fā)表第一篇關(guān)于WCF的文章的時候,了解WCF的人還屬鳳毛麟角,網(wǎng)上除了MSDN,相關(guān)的學(xué)習(xí)資料很少。所以我的第一個WCF系列主要介紹WCF一些基礎(chǔ)的東西。后來,接觸WCF的人越來越多,介紹WCF的博客、書籍已累見不鮮,但是深入介紹WCF底層實現(xiàn)原理和擴展的文字卻仍不多見。在這種情況下,我推出了第二個系列,專門介紹WCF實現(xiàn)原理和擴展方面的內(nèi)容。隨著《WCF技術(shù)剖析》的出版,我打算推出第三個系列,內(nèi)容是寫書過程中獲得的,但由于篇幅的原因并沒有在書中呈現(xiàn)的一些體會和心得,希望與大家一起分享。
《WCF技術(shù)剖析》的卷冊劃分則與此不盡相同。卷1包含WCF的基本框架,是構(gòu)架WCF分布式應(yīng)用所必需的知識,是每一個WCF開發(fā)設(shè)計人員都須要面對的問題;而卷2則囊括了一些所謂的“高級”主題,可能在一個團隊中,相關(guān)的工作僅僅由少數(shù)幾個人,甚至某一個人去完成。不論是卷1,還是卷2,都會涉及與該主題相關(guān)所有內(nèi)容,比如基本的概念、編程模型、實現(xiàn)原理和最佳實踐等。
博文Lisa
博文視點會全力配合您后續(xù)的寫作,繼續(xù)提供優(yōu)良的出版服務(wù)。感謝您的交流,最后,您能為WCF的初學(xué)者提一些建議,幫助他們少走一點彎路嗎?謝謝。
蔣金楠
WCF是基于SOA的通信框架,正確、靈活地使用WCF的根本前提是思想觀念的轉(zhuǎn)變。你要將你自己從傳統(tǒng)的面向?qū)ο蠛兔嫦蚪M件的觀念轉(zhuǎn)到面向服務(wù)上來,否則無論你對WCF本身具有多么深厚的了解,你都不可能將WCF用好。不要認(rèn)為實現(xiàn)了跨機器調(diào)用就是分布式,也不要覺得通過消息進(jìn)行服務(wù)調(diào)用就是面向服務(wù)。面向服務(wù)具有一整套設(shè)計的原則,在你真要進(jìn)入WCF的世界的時候,我建議好好學(xué)習(xí)一下SOA。
- Apache ZooKeeper Essentials
- TypeScript Blueprints
- 程序員面試筆試寶典
- 數(shù)據(jù)結(jié)構(gòu)(Python語言描述)(第2版)
- 鋒利的SQL(第2版)
- 人人都懂設(shè)計模式:從生活中領(lǐng)悟設(shè)計模式(Python實現(xiàn))
- Android應(yīng)用開發(fā)實戰(zhàn)
- PHP與MySQL權(quán)威指南
- Java EE 7 with GlassFish 4 Application Server
- Drupal 8 Development:Beginner's Guide(Second Edition)
- SSH框架企業(yè)級應(yīng)用實戰(zhàn)
- Python 快速入門(第3版)
- Node.js 6.x Blueprints
- Puppet Cookbook(Third Edition)
- Swift iOS Programming for Kids