淺析Win Vista中的通信專家:Indigo
一個周末的早晨,業余編程愛好者小張打開計算機,當正在他沖咖啡的時候,計算機自動連接上網絡,開始下載前一天沒下載完的電影。而所用的這個名為X-eMule的軟件,正是小張利用WinFX中的Indigo平臺編寫的P2P軟件……
如果說Windows Presentation Foundation(Avalon)是在外觀之炫上做足了文章的話,那么Indigo則是在網絡性能上下足了功夫,給程序員帶來了巨大的方便。
預言:
Indigo將掀起P2P軟件開發熱潮
當今最熱門的軟件開發領域自然非網絡應用程序莫屬。隨著因特網的普及和各種網絡環境的建立,許多傳統的單機版軟件都紛紛加入了網絡元素或重新改編為網絡版本,而完全網絡化的新軟件更是層出不窮。為方便網絡應用程序的開發,一些組織和業界巨頭針對各種網絡需求提出了一系列標準和技術,不過由于標準或技術太多,程序員在開發時反而無所適從。另外,盡管.Net使網絡開發從系統底層中徹底解放出來,但在大多數情況下網絡開發仍然是件困難的事情,特別是在設計服務程序的時候。
而Indigo在這方面作了較大改進,采用了包括WS-Addressing、WS-Policy、WS-MetadataExchange等在內的新規范和SOAP 消息傳輸優化機制。Indigo構建的網絡應用程序不僅很容易同其他Indigo程序進行交互,而且可以同其他基于SOAP技術構建的、運行在非Windows系統上的網絡程序進行交互。可見Indigo不僅適合于開發B/S結構的應用軟件,而且同樣適用于開發目前十分火爆的P2P程序。依靠強大的類庫,Indigo將大大降低P2P程序的開發難度,很有可能掀起新一波P2P軟件開發熱潮,而這也許就是Indigo對普通程序員最具誘惑力的地方。
Indigo的重要使命就是讓網絡間成為無障礙、無差別的通訊平臺,形形色色的網絡應用都能借Indigo之力自由地交互。雖然這種“大同”的理想實現起來困難多多,但Indigo的確正朝這個方向邁進并取得了實質性的進步。而對那些進行跨平臺開發的程序員來說,Indigo的這個特性一定會讓他們感到欣喜萬分。
沖鋒陷陣:
Indigo!微軟的重要棋子
Indigo提供安全、可靠以及事務化的協作通信功能,而這三個重要特性都受到開發者的一致好評。其內部的基礎設施能夠大大簡化開發者面向服務的編程模式。在這種開發模式中,程序基于異步信息流通構成,而Indigo提供大量創建、銷毀、處理以及轉換的信息技術,可謂照顧周到。對程序員而言,Indigo最突出的價值就是將微軟的各種網絡技術統一起來,從而使程序員可以在一個平臺上完成所有類型網絡程序的開發,不像以前那樣不同的類型必須選擇不同的支持平臺和工具。
Indigo還為事務編程提供了重要的支持。啟用了Indigo的Windows版本支持一個基于服務的事務處理管理器,該事務管理器可通過System.Transactions框架或 WS-AtomicTransactions協議來訪問。新的System.Transactions框架使整個平臺(它支持 SQL Server、ADO.NET、MSMQ、分布式事務處理協調器DTC等)上的事務編程都變得簡單高效。System.Transactions既支持基于ITransaction接口的顯式編程模型,也支持隱式的編程模型(Indigo自動管理其中的事務處理)。這兩個模型都可用于基于Indigo的應用程序。可以說,Indigo在統一各種網絡標準上邁出了很有意義的一步。
目前,開發代碼名為Indigo的技術已正式命名為Windows Communication Foundation。綜上所述,Indigo提供的功能和靈活性對所有規模的組織和來自不同背景的開發人員都具有很大吸引力。它可以用來構建在單一計算機環境、在整個公司的Intranet 或全球的Internet中運行的連接系統。它適用于各種情況,從連接的行業垂直應用程序到交互式多人游戲都適用。除擴展了.NET Framework 2.0和Visual Studio 2005的功能之外,Indigo還可與BizTalk Server 2004配合使用已提供代理的和未經代理的應用程序到應用程序通信。
對于大部分人來說,Indigo是看不見的,只有程序員才會與它打交道。Indigo最主要受益人群將是目前使用微軟開發工具Visual Studio.Net的開發人員。據行業分析師的說法,如果Indigo能夠實現微軟的藍圖,那么它的影響將是巨大的,而且有可能是.Net在同Java等架構競爭中決定勝負的一枚棋子,難怪微軟會在Indigo上下如此大的功夫。而作為程序員,自然是樂見和樂用其成。
Indigo架構:配備精良的裝甲師
作為 Windows Vista 的核心支柱之一,Indigo就像一個配備精良的裝甲師,為Web協議、構建連接系統等提供了良好的支持。Indigo極大地簡化了構建下一代連接系統的方法。它通過三個架構設計原則來實現此目的。
1.對大量 Web 服務協議的內置支持
目前Web服務技術為運行在不同平臺的應用程序之間提供了交互性操作的支持。然而,當前的Web服務技術通常是在沒有端到端安全和可靠通信保證的情況下提供此相互操作的。Indigo通過對“WS- * ”架構的內置支持提供了安全、可靠、協商過的相互操作。對于開發人員來說,這極大地減少了達到異類相互操作所需的基礎結構代碼量。對于企業來說,這意味著在組織內部和外部與客戶、伙伴和供應商交互的能力,而不管他們使用的是什么平臺。由于Indigo的基本通信機制是SOAP,因此Indigo應用程序可與大量運行于各種上下文環境的其他軟件進行通信。如圖2所示,基于 Indigo 構建的應用程序可與下列所有程序進行交互:
●運行于同一Windows計算機上不同進程中的Indigo應用程序。
●運行于另一Windows計算機上的Indigo應用程序。
●基于其他技術構建的應用程序,如基于Java 2企業版 (J2EE) 構建的、支持標準Web服務的應用程序服務器。這些應用程序可以運行在 Windows 計算機上,也可以運行在采用其他操作系統(如 Sun Solaris、IBM 的 z/OS 或 Linux)的計算機上。
2.隱式使用面向服務的開發原則
多年以來,開發人員和組織努力構建適應業務發展速度的軟件。面向服務的開發原則利用關于構建高適應性軟件的基礎結構最佳做法來贏得這個挑戰。Indigo是從無到有構建的用來提供隱式面向服務應用程序開發的首批Web服務技術。對于企業來說,這使得構建有彈性的和在出現變動時易于管理的IT基礎結構變得更為容易。
3.用于構建連接系統的單個API
從傳統意義上來說,以前開發人員必須使用多種技術才能構建連接系統。這不僅需要他們了解不同的API,并且很難將來自不同技術的功能結合成一個解決方案。Indigo為開發所有類型的連接系統提供了一個統一的 API。它結合并擴展了現有的Microsoft技術(ASMX、.NET Remoting、.NET Enterprise Services、Web Services Enhancements 和 System.Messaging)的功能,以提供能提高開發人員產量并降低投放市場所需時間的高效開發框架。
Vista發展動態:3D桌面終成現實
微軟在上周的專業開發者大會(PDC)上發布了Windows Vista build 5219,它充分利用了Windows Presentation Framework(Avalon)在技術上的優勢,創造出了更美觀、有趣的用戶界面,當用戶使用組合鍵“Win+空格”時,即可顯示3D桌面(圖1),令用戶在多個應用程序間切換更為方便。另外還在開始菜單中嵌入了一個搜索框供用戶搜索整臺PC或者Internet的內容。同時還增強了安全和管理功能,比如默認打開用戶賬號保護等。
圖 1
Vista小游戲也“升級”
隨著Windows Vista Beta2發布日期的臨近,Vista中內置的小游戲也升級了!通過截圖,我們很容易發現Vista中小游戲的畫面比以往任何一個版本的都要精美,光是看看圖片,已經讓人愛不釋手了(圖2、圖3)。
圖 3圖 4
