If you are a developer, and you don’t like change, you should get out of this business as early as possible.
By David Chappell, Boston, Tech.Ed, 2006
不論您過(guò)去是否聽(tīng)過(guò) WinFX,您的未來(lái),將不再聽(tīng)見(jiàn)到這個(gè)名詞。2006年美國 Boston Tech.Ed 週,一個(gè)風(fēng)光明寐的下午,管那臺灣天天吹著(zhù)政治風(fēng),微軟總部正式宣告了進(jìn)入 .NET 3.0 的里程碑,並且開(kāi)開(kāi)心心的將 WinFX 重新命名為 .NET Framework 3.0。
Yes, 是真的, MS did it again !
只是除了 change, 我們不禁要問(wèn).. Why change? What to be change. ?
本文的目的,再和您分享一份 .NET 3.0 的新消息. 也希望能讓您了解到 .NET 3.0 的領(lǐng)域本質(zhì)
.NET Framework 3.0 = WinFX
WinFX 是微軟在 .NET平臺的基礎元件服務(wù)中,在.NET Basic Class Library (BCL) 下,堆疊出的新技術(shù)元件,這些元件架構,在過(guò)去沸沸騰騰的炫燿了一段時(shí)間,分別為:
圖表 1
§ Window Presentation Framework (WPF)
§ Windows Communication Framework (WCF)
§ Windows Workflow Foundation (WF)
§ Windows CardSpace (WCS)
論壇上有許多關(guān)心 MS 平臺技術(shù)的鄉親父老,目前熱烈的把砲口對準了 這個(gè)全新的架構,一個(gè)基本的問(wèn)題,MS 又稿了一個(gè)新的版本? 我們好不容易才 upgrade 到.NET 2.0, 好不容易才花錢(qián)買(mǎi)了 VS2005 開(kāi)發(fā),好不容易習慣 2.0 的架構,怎麼3.0 又來(lái)了,那天殺的相容性 ?
事實(shí)上,親愛(ài)的鄉親父老們,請先別擔心,如同前面描述,WinFX/.NET 3.0 技術(shù),是採用了.NET現有平臺,也就是 CLR 2.0 的平臺,進(jìn)行加值的運用元件技術(shù),換句話(huà)說(shuō),您的 VS2005 開(kāi)發(fā)工具,是可以用來(lái)開(kāi)發(fā) 年底就將上場(chǎng)的 .NET 3.0 新元件,您已經(jīng)習慣的軟體環(huán)境與平臺,一切依舊的。
只是在我清楚的描述以後,相信另一票論壇上的叔叔伯伯又不開(kāi)心了,因為這聽(tīng)起來(lái)是 MS 是提供了新的軟體元件,底層還是在 CLR 2.0 上,那既然這樣 WinFX 元件聽(tīng)起來(lái)多屌,搞成這樣多讓人容易搞不清楚狀況啊…。 難不成以後 .NET 4.0 會(huì )是 BCL 3.5 加上 CLR 3.0 ??? 粉亂的勒!
Well 您說(shuō)的是,但您曉得的,替您的小孩取名子一值都是一件困擾的事情, 林大X 老師 與 廟口鐵口大師,剛好給了我兩個(gè)不同的名子, 我的寶貝未來(lái)實(shí)在難以決定呢… 我們能做的事情,是盡可能的讓您保持雪亮的眼睛,清楚的判斷名詞背後的 .NET 的本質(zhì)
圖表 2
口號有口號的空間,品牌有品牌的說(shuō)法,但回到 Developer 與 Designer 的觀(guān)點(diǎn),.NET Framework 的領(lǐng)域,在討論的領(lǐng)域其實(shí)可以由上圖表2來(lái)解釋。圖表2 描述了一個(gè)標準的軟體系統互動(dòng)空間,事實(shí)上,這正是我們過(guò)去受到完整訓練的軟體結構之一,偉大的 MVC 設計樣式。不意外的,這也是現在軟體內觀(guān)的本質(zhì)結構之一,也是 .NET Framework 3.0 (WinFX) 的技術(shù)領(lǐng)域空間。
軟體技術(shù)上,UI的呈現一項是個(gè)好的問(wèn)題,但更大的問(wèn)題,其實(shí)在 製作的方法,效率,溝通,品質(zhì)上;一個(gè)美美的 UI,通常是經(jīng)由一群軟體工程師,一群構思靈敏的美工設計團隊,一組以客戶(hù)至上為天職的 Product Manager所構成的。一個(gè)最終的 UI 往往是經(jīng)過(guò)團隊不斷反覆的討論設計,改code, 改 Layout, 重寫(xiě) code…… 一堆可樂(lè )衛生紙的故事。 得來(lái)不易…
然而,自 XML 相關(guān)技術(shù)問(wèn)世以來(lái),事情有了新的突破,我們現在有一個(gè)好的方法,將 XML 透過(guò) XSL 等轉譯技巧,來(lái)做到 UI 的描述與定義。
圖表 3
同樣的資料,轉化為 WAP 以後,您可以在手機上享受豐富的圖文資訊,轉化為 HTML 以後,您可以在瀏覽器上看到另您臉紅心跳的圖文,轉換為 RSS 之後,您可以在 RSS 新聞讀取工具中,訂閱豐富的網(wǎng)路文章日誌。
相同的到理,在本質(zhì)上 WPF 也是這樣的設計理念,微軟透過(guò)了 XML 與轉換的運用,讓資料與呈現多了最新的運用。
圖表 4
這個(gè)運用的結果第一步呈現在,軟體設計的團隊與方式的變化,
圖表 5
借用Java的口號『Write Once, run everywhere』,而我們相信,這一次UI系統的設計讓軟體的架構與產(chǎn)值又向前突破了一個(gè)新的里程碑。
既然有了 XAML,接下來(lái)的MS 需要做的事情是,將 CLR 與 IE 7 做好解析 XAML 的功能,您所撰寫(xiě)的 .NET 應用程式,編程為 XAML,然後最終可以無(wú)嫌隙的直接執行在 瀏覽器端,或是您的單機作業(yè)系統上 (win form)。
美妙的願景
由 Client 端存取『遠端不同處理程序的元件』,過(guò)去已經(jīng)有了許多的軟體技術(shù)在其中,在 .NET 問(wèn)世以來(lái),微軟教育我們,在不同的需求下,我們可以?huà)裼貌煌能涹w技術(shù)架構達到目的。
比方說(shuō),如果您的後端服務(wù)系統平臺,完全沒(méi)有不同平臺的考量,那麼 .NET Remoting 是您最佳的伴侶;如果您後端系統中有了跨平臺服務(wù)的需求,那麼您需要的是 .NET Web Service 的軟體架構;如果您需要考量嚴謹非凡的整合架構,您可以?huà)裼?WS-* 介面也就是 Web Service Enhancement軟體架構;當您有需要做到 Queue 的存取服務(wù),您千萬(wàn)記得使用 MSMQ的軟體元件服務(wù)…..
當我在臺北時(shí)請打 02, 在臺灣需加 886, 打新竹要加 03….. 找我在房間,請打 27221234, 找我在客廳,請電 27225678….. 拜託給我一隻手機吧
微軟真的做了,給軟體人員一隻新的手機,這隻手機的目的,在讓您不用在關(guān)心對方是0204還是0954…,因為這一類(lèi)的組態(tài)資訊,往往是一開(kāi)始就寫(xiě)死在軟體架構中的,想想看,萬(wàn)一天殺的系統由 WS介面,升級為 WS-* 協(xié)定,或是改為 Remoting 接口,您已經(jīng)佈署在外的 上萬(wàn)個(gè)子系統應用程式,要怎樣回收改版呢?
Wow… 這似乎是不合理的,對於提倡 COM 設計概念的 微軟而言,一值以來(lái)在追求的是 IUnknown 的設計精神,應該有一種設計架構,軟體機制,能夠完全隱藏掉軟體夠通的細節,然而也許這是一個(gè)新的 Vision,但今天,微軟告訴我們,在未來(lái)微軟平臺中,您需要的只有一種技術(shù),Windows Communication Framework.
圖表 6
在繼續之前,筆者斗膽先請問(wèn)您,『說(shuō)到 workflow 您想到的是什麼 ?』
微軟在 2006 年拋出來(lái)了一個(gè)新的軟體架構,叫做 WF, 說(shuō)實(shí)在的嚇壞了許多人,特別是環(huán)繞在微軟平臺提供服務(wù)的協(xié)力廠(chǎng)商,原因很簡(jiǎn)單,因為 workflow 有太多太多的偉人,給他太多太多的描述。
罄竹難書(shū)
我無(wú)意在這裡搞政治,只是一個(gè)簡(jiǎn)單的笑話(huà),讓各位了解,一個(gè)單字一但被太多人過(guò)分解釋?zhuān)斐傻挠绊?,相當可觀(guān)的。因此在談 WF 的情況下,我們只有採用最基本的 八股教學(xué)法,給您一個(gè)新的定義,一個(gè)來(lái)自微軟官方最貼切的說(shuō)法。
微軟在這裡談起了Workflow,其實(shí)有很多理由,其中一個(gè)理由在微軟內部的不一致性;事實(shí)上,微軟內部有許多不同的軟體產(chǎn)品,這些產(chǎn)品都會(huì )有著(zhù)Workflow的功能需求,在過(guò)去,因為微軟的工程師每一個(gè)都是身上有好幾把刀的,所以面對 Workflow的需求,大夥都是傢伙抄起,就快速的幹了下去;這個(gè)結果下,微軟很快的也發(fā)現到,這樣的重複 Function,而且完全不一致,造成了微軟內部軟體的無(wú)法有效整合,資源無(wú)法共用的困境。(業(yè)帳不是不到,只是時(shí)候未到呢)。同時(shí)微軟也發(fā)現,原來(lái)不是只有他有這樣的問(wèn)題….
微軟的 WF 其實(shí)是一種元件的架構,一個(gè)核心的執行引擎,一系列的 API Library.讓您去定義 Activity 流程、State 轉移順序;
圖表 7
自WF計畫(huà)開(kāi)始以來(lái),微軟便開(kāi)始規劃未來(lái)在Window平臺上的任何MS產(chǎn)品,都要陸續採用 WF 作為核心元件,讓軟體系統能夠達到一致,更提供更大的相互整合空間。
同時(shí),當WF提出以後,市場(chǎng)上即刻就多了一些新的市場(chǎng)商機 (當然也間接的影響到了某些 ISV)。未來(lái)您可以期望在市場(chǎng)上,買(mǎi)到 “符合標準ABC的管理流程”,買(mǎi)到“標準XYZ的訂單處理流程”,買(mǎi)到 “遠端MMS/3G 傳呼流程”… 。您也可以期望 您所採用的軟體流程,不是只有某廠(chǎng)商的平臺才能正常運作執行,只要是符合 WF 規格,您的流程式可以安全轉移平臺的。
而說(shuō)到平臺,我們就不得不在談 WF 的執行平臺。
圖表 8
在微軟 WF 架構下,未來(lái)的WF基礎開(kāi)發(fā)的流程系統,將是需要一個(gè)“Host Process”,這個(gè)” Host Process” 可以是您自行開(kāi)發(fā)的 Windows Service、Windows Form、ASP.NET 應用程式;又或者是某協(xié)力廠(chǎng)商提供的 Workflow 應用平臺。同時(shí)微軟自己在 即將上市的 Office 2007中,也提供了一個(gè)基礎的 “Host Process” 環(huán)境,讓Office 2007 的使用者,透過(guò) Office 2007 來(lái)執行標準的 WF 流程系統。
事實(shí)上,這玩意就是 Windows SharePoint V3. 您可以在這個(gè)平臺上定義工作流程,文件流程,與MS Office文件整合
同時(shí),我們也注意到了,在WF架構下,Default Developer是要透過(guò) Visual Studio 來(lái)開(kāi)發(fā) WF 流程系統,微軟在 WF 元件函式庫中,提供了一系列標準的 BAL (Basic Activity Library)。
最後一個(gè)細節也是必須和各位報告的,一個(gè) Workflow 整合的解決方案,決對不是只有一系列的流程、Host Process、就搞定的,一但Workflow簽扯到 交易,管理,追蹤..等,那就需要一系列的 Runtime Services 提供服務(wù)。比如,您的 Workflow 需要您的老闆簽呈,但您得老闆出差三天,您需要等他回國才能回應,您的 Workflow 就必須安靜的躺在某個(gè)空間中,但絕對不是 Host Process,除非您的系統不考慮效能與穩定。您的Workflow簽扯到不同系統的繞送交易,您必須要讓 Workflow 能夠做到 Two phase 補償交易,同時(shí)還要能追蹤管理;諸如此類(lèi)的Workflow的細節,您會(huì )需要這些 Runtime Services。
WF 針對這一類(lèi)的 Runtime Services 服務(wù),是有提供了一系列 Core API 讓軟體人員自由興建,但代價(jià)是,您要花時(shí)間 Coding.
怎麼我怎麼聽(tīng)都像是BizTalk
如果您還有這個(gè)困擾,那麼請您試著(zhù)聯(lián)想一下, WF 核心技術(shù)所提供的就像是一顆強力的引擎,以及一系列的輪子。但 BizTalk 給您的就是一個(gè)完整的 VW 跑車(chē),舒適安全,有外殼,有皮椅,還有冬暖夏涼的恆溫裝置。
如果說(shuō)困擾您的是目前 BizTalk 2006 的引擎還不是 WF 技術(shù)做的,請別擔心,微軟承諾在下個(gè)版本,更新整個(gè) Orchestration 引擎,100% WF Inside,同時(shí)也會(huì )提供轉換引擎的工具
所以結論是,如果您在乎的是商業(yè)本質(zhì),重視結果,那麼 BizTalk 是您在微軟平臺上最佳的方案;但如果您的腳色是和我一樣黑不溜丟的黑手,那麼深入 WF 元件技巧,就是您責無(wú)旁貸的任務(wù)。
InfoCard,是微軟 CardSpace 的前身,說(shuō)真的,這兩個(gè)版本的名稱(chēng),都環(huán)繞在 “Card” 的本身,而這也是 WCS 的設計核心抽象理念:『每個(gè)人都有好多張卡』。這些卡是用來(lái)代表 某一個(gè)情節下,我個(gè)人的身分地位。微軟抽用了這個(gè)概念,在軟體系統中,在廣大的網(wǎng)海中,不同的應用程式,不同的網(wǎng)站,您都應該有張卡,來(lái)代表您的尊貴身分。
我的 Cosco 卡代表了我曾經(jīng)付了 1200 元年費,我可以自由進(jìn)出消費 Cosco。
我的 花旗白金卡代表了我一狗票的負債,卡奴找我不是別人。
我還有一堆的卡,用來(lái)表示我的身分,當然是在不同的情境之中。
在微軟設計 CardSpace的理念,除了抽象的用意之外,另一個(gè)最大的目的就是對附廣大的網(wǎng)路釣客,那些專(zhuān)門(mén)誘拐您到不同網(wǎng)站,騙取您的帳號密碼,那些想盡辦法攔截您的訊息,抽取您的帳號密碼。
事實(shí)上,如果網(wǎng)路釣客是一群邪惡的混蛋,微軟深深的認為,對於經(jīng)驗不豐富的使用者來(lái)說(shuō),他們的帳號和密碼就像是午夜穿著(zhù)超短熱酷的辣妹,引誘著(zhù)人犯罪。
在新的 CardSpace 架構中,使用者不在需要針對應用系統或網(wǎng)站,提供您的帳號密碼,相對的,提供一組經(jīng)由您私鑰簽章的卡片,只要真的是您所要去拜訪(fǎng)的系統與網(wǎng)站,他們能用您公佈的公鑰做訊息交換;而這個(gè)時(shí)候網(wǎng)路釣客,即使他們竊取到您的卡片,但在沒(méi)有把你的整臺機器偷走,A到您的私鑰之前,他是決對無(wú)法冒充您的身分的。
這裡馬上就有了一個(gè)直接的問(wèn)題,『既然卡片這樣重要,究竟是誰(shuí)能夠製作與提供這樣的卡呢?』
WCF 軟體技術(shù) Default 提供了兩種不同的卡片種類(lèi),一種是使用者自行製作的卡片,一種是由第三方組織所提供的卡片。事實(shí)上這也是針對了兩種真實(shí)的使用情節。
讓我們舉個(gè)兩個(gè)簡(jiǎn)單的例子:組織內部開(kāi)發(fā)了新的應用軟體,軟體系統的架構仍是建構在帳號密碼之下,這些帳號密碼使用者可以先行以卡片技術(shù)包裝後,存放在自己的電腦中。
當應用系統需要使用這登入認證時(shí),使用者透過(guò) CardSpace 介面選擇對應的卡片,提供給網(wǎng)站系統,這時(shí)候使用者一點(diǎn)也不需要擔心被釣客拐走了密碼,因為帳號密碼被卡片保護住了。
圖表 9
另一個(gè)腳本一樣豐富,您登入了一個(gè)購物網(wǎng)站,需要提供您的信用卡資料,這時(shí)候您的卡片很有可能不能由您自行提供,是由您的銀行提供。透過(guò) CardSpace技術(shù),您和您的銀行要求授權,將授權卡片轉交給購物網(wǎng)站,購物網(wǎng)站取得您的卡片後再自行和銀行授權取款。
圖表 10
If you are a Developer, you should always reset yourself, reset what you learn and do thing before, fundamentally.
By David Chappell, Boston, Tech.Ed, 2006
改變嗎? 放開(kāi)心點(diǎn),這些改變是在於問(wèn)題的源頭,有個(gè)更好的解決方式。年底在 Vista 的盛會(huì )上,您 .NET 3.0 了嘛 ?
提筆情怯,望文心虛…
2006年 李學(xué)麟 Polo Lee
聯(lián)系客服