WCF架構是個複雜的架構,它的複雜性源于這樣一個事實,在抽象層上,一個消息架構必須适應行業标準的不斷更新和完善。在WCF設計階段,SOAP和WS-*被認為是未來主流的消息結構和協定。當初任何一個負責WCF的架構師都不會想到JSON會有今天的地位。但是他們确實明白一個事實,WCF必須很好地相容和适應那些新的消息結構和傳輸,就像現在的WCF一樣。于是微軟設計了高擴充性和适應性的WCF,不但可以滿足今天消息需求,也可以滿足未來不可預知的新的需求。這些努力的結果就是一個容易使用,但整體上有點難以了解的複雜平台
每個設計過一個大的架構(framework)的人都可以證明,設計、建構、測試和維護這個架構都是一個艱巨的任務。我曾經設計、讨論和建構過幾個架構,明白這有多麼的困難。當設計一個架構的時候,Alan Kay的名言[老徐備注1]“簡單的東西應該簡單,複雜的東西才有可能成功”應該是首要原則。當在看現在的WCF,我想微軟通過把許多複雜的東西簡單化,已經成功地實作了這個名言,即使從長遠來看也是如此。這不是說我認為WCF是完美的,沒有錯誤,而是說,作為一個完整的産品,WCF是精心思考和設計良好的。
WCF核心需求之一就是暴露一個對象模型給開發者,這個對象模型可以相容所有的傳輸和協定。具體化的例子就是,WCF團隊的架構師希望通過TCP/IP發送消息的代碼和通過MSMQ發送消息的代碼看起來十分相似。這個特性有以下幾個好處。第一,它意味着這個平台不強迫開發者學習各種不同傳輸和協定的對象模型。實際上,了解WCF對象和執行模型的開發者可以在他們的應用系統裡實作對不同傳輸和協定的支援。第二,它意味着随着WCF的對新的傳輸、協定和功能的成功支援,開發者沒有必要為了開發系統裡新的功能而學習新的通信方式。相反,他們可以使用WCF架構裡已經存在的通信機制。
由于這些類型的需求,WCF架構由許多交織的層組成。随着時間的推移,我發現要向完全了解任何一個WCF基礎架構裡的一層,都需要首先了解WCF基礎架構裡每個層相關的一些概念。本章的目的就是要介紹WCF應用中主要的層次,為本書後面部分章節深入學習這些層次奠定堅實的基礎。
【老徐備注】
1.Simple things should be simple, complex things should be possible,Alan 是Smalltalk 面向對象程式設計環境語言的發明人之一,也是面向對象程式設計思想的創始人之一,他還是筆記本電腦最早的構想者和現代Windows GUI的建築師(architect)。
本文轉自 frankxulei 51CTO部落格,原文連結:http://blog.51cto.com/frankxulei/318607,如需轉載請自行聯系原作者