公告資訊

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




2008年3月15日 星期六

使用WF設計MVC的Controller

Windows Workflow Foundation(WF) 技術,提供應用程式流程設計的架構,做為ASP.NET 3.5或是一般MVC設計架構中開發及維護Controller邏輯的技術相當合適。MVC設計模式中的Controller負責維護狀態,並且根據Model的執行結果決定使用者所要看到的下一個顯示介面(next view)。在我的下一本書當中,將會為各位深入剖析WF在企業級應用程式的運用模式。而這一個範例和前面的兩個範例,主要是要給 "Visual C# 2008精研講座" 的讀者們做延伸學習用的。

"Visual C# 2008精研講座" 這本書中,我在 15 ~ 18章中介紹了Visual Studio 2008開發工具操作WF、WCF、LINQ、WPF的基本步驟,看完之後對於想要再進一步應用這些技術的讀者來說,應該會有點意猶未盡的感覺。但是如果要把這些技術說明清楚,卻也不是三言兩語可以解決的事。因此目前我正在進行下一本深入介紹WF、WCF實戰技術的書籍開發。在截稿之前,為了讓各位對於這些技術有個架構性的通盤概念,因此我先製作了這些延伸範例。各位在閱讀完 "Visual C# 2008精研講座" 之後,可以試著研究這幾個範例程式,相信可以幫助各位在一堆新的技術名詞當中,找到屬於開發人員自己的技術領域。

雖然是MVC的範例,不過我先省略掉Model,讓範例簡單一點。這一個範例簡單的說,就是使用WF的技術設計一個接收姓名與年齡的工作流程,讓前端的網頁或是Windows Form程式分別輸入使用者名稱與年齡之後,最後工作流程再回傳 "Hello, XXX. Your age is XXX."的字串。為了讓工作流程容易了解,先以循序工作流程為例,實務上應該是用狀態機器工作流程較合適。按照下面步驟執行範例:

1. 使用Visual Studio 2008開發工具到解壓縮後的資料夾開啟解決方案檔(.sln)。

2. 開啟時會有警告訊息,這是因為我將Web Client網站先行編譯過在放進去,按下 "是" 就可以開啟解決方案。

3. 開啟之後先瀏覽WFWCF_SeqSample_01.Workflow1_WebService網站下的WFWCF_SeqSample_01.Workflow1_WebService.asmx服務位置,確認服務測試網站啟動,並且Port No = 64781。

4. 先到解壓縮後的資料夾執行WinClient子目錄下的WinClient.exe。你可以同時執行幾個WinClient.exe程式,因為Controller是建立在Server端而且是由WF維護,因此每一個WinClient.exe程式的執行狀態都不會互相影響,同時每次輸入資料,工作流程就會傳回給用戶端顯示的結果。

WFWCF

5. 回到Visual Studio 2008開發工具,瀏覽WebClient專案中的Default.aspx網頁,你會發現表單會有跟WinClient.exe一樣的控制效果。多用幾個瀏覽器開啟Default.aspx,你會發現每次輸入資料,工作流程就會傳回給用戶端顯示的結果。

6. 這就是我前面網誌(http://john-publish.blogspot.com/2008/03/mvc-2.html)所介紹的以Web Server結合WF技術設計Controller的一種實作。建立好的Controller發佈到IIS上之後,將來就可以提供給所有企業前端的應用程式供同使用。若是需要修改Controller的邏輯,只需換掉Server端工作流程的動議即可。當然,若是你停止了步驟3 所建立的服務測試網站,WinClient.exe或是WebClient就也就都無法執行。

PS:

1. 年齡請輸入數字,我沒做防呆處理......

2. 或許你會說,"這有啥了不起,不就是做一個網路服務罷了!"。如果你是這樣想的話,請你再仔細想一下,在這一個範例當中,用戶端會"分別"存取網路服務"兩次"。就是因為我們使用WF設計了Controller的邏輯,因此每個用戶端程式(View)的執行狀態才會維護在Server端(Controller)的工作流程實體當中。

-----------------------------------------------------------------------------------------

之前有朋友問我,"聽說ASP.NET 3.5 要出MVC Framework,那我是不是一定要使用ASP.NET 3.5才可以設計出MVC架構的網站?"。其實MVC架構主要的重點在於分工、分層來設計、開發跟維護。透過WF工作流程的支援,我們可以直接在系統設計時,將應用程式工作流程透過WF實作,如此一來OO的設計就只需要著重在Model與資料物件的部分。而在Model、View與Controller之間,可以透過訊息(Message)來傳遞資料。如此一來,Model、Controller與View都可以分散在不同的平台上執行, 這就是新一代企業級應用程式的設計模式!

希望目前透過這些說明,能幫助各位開發人員對於ASP.NET3.5的網站及.NET Framework 3.5應用程式的開發技術,能夠有一些基本的概念,才不會有 "到底我該學甚麼?" 或是 "學了這個要用在哪?"的困擾。延伸的範例暫時做到這裡,更完整的介紹,我將在下一本書中為各位呈現。

沒有留言:

最新回應

Loading...

即時與版主對話


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