公告資訊

未經授權,禁止轉載網站文章與內容。如有需要可以跟我聯絡,謝謝!!




2010年3月26日 星期五

Application = Code + Workflow

從莫約10年前,我就在等這一天的來臨。

程式設計,與電子電路的設計一樣,都是希望可以透過一些方式,將可以重複使用的功能元件化之後,方便重複使用。而在Test-Driven Developement當中,元件也是進行單元測試的重要單位。在設計電子電路時,我們可以透過一些方便的Layout軟體,幫助我們設計線路(流程),並且測試結果:

(如果各位不是電子相關科系背景的,可以參考這一篇:http://www.mobile01.com/topicdetail.php?f=300&t=533106)

然而,在程式設計這一個領域中,我們卻仍然像是大一電子實驗一樣,拿著麵包版在做勞作:

面包板

當BziTalk Server出現之後,Orchestration Designer提供了圖形化的操作介面,讓開發人員可以透過圖形化的方式,快速的將應用程式的工作流程設計出來,並且應用在系統整合的情境當中。從那時開始,我每次上BizTalk Server的課,就要向大家說:"圖形化操作才是程式設計的王道啊!!!" -- 無奈大家Coding 習慣了,對於我所描述的情境似乎無法想像。

但隨著網際網路應用程式與雲端技術的發展,系統的複雜度已非以往的程式設計觀念可以滿足;同樣的,為了維持軟體的開發品質以及降低維護成本,我們也必須要有更好的方式可以快速的去檢視程式碼的內容。因此,Windows Workflow Foundation (WF)誕生了!

在我的上一本書當中,曾經為各位介紹WF在.NET 3.5當中的操作方式。隨著即將到來的.NET 4 + Visual Studio 2010,WF 4也提供了更直覺、也更像電子電路設計的操作方式,實現了 “Application = Code + Workflow” 的境界! 例如,我們希望在程式啟動時,可以根據現在的系統時間,顯示不同的問候語。第一步,你可以先撰寫程式,將顯示不同問候語的程式,定義成不同的CodeActivity類別:

image

CodeActivity類別就是你的程式的最基礎執行單元,在設計應用程式的流程時,這些CodeActivity類別會自動出現在工具箱中:

image

然後你就可以使用這些自訂的CodeActivity類別,加上WF 4內建的活動,設計出你需要的流程:

image image

然後,在流程中設定需要的一些變數,以及透過屬性視窗設定資料傳遞的規則:

image

最後,在程式碼中,透過WorkflowInvoker物件類別的Invoke方法,就可以載入工作流程定義並執行:

image

執行結果如下:

image

如何,是不是很簡單?

同時,透過這樣的方式所設計出來的工作流程,將來也可以很容易直接的被引用到其他的工作流程中重複使用,自然的就有元件化與模組化的效果。而每一個單獨的CodeActivity類別與工作流程,因為都是獨立運作的單元,因此也很容易就可以透過Visual Studio 2010開發工具,進行單元測試,提升程式碼模組的可靠度。

"Application = Code + Workflow" 將會是 .NET 4 應用程式開發當中,相當重要的觀念與技巧。更多的實作與應用方式分享,我將會寫在我的下一本 "Visual C# 2010"的書當中。

沒有留言:

最新回應

Loading...

即時與版主對話


(若狀態顯示"忙碌"時,我可能無法馬上回應。你可以留下Email,我會盡快跟你聯絡,謝謝喔!!)