公告資訊

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




2008年3月4日 星期二

淺談新一代的MVC設計模式 -2

ASP.NET Web 應用程式一般說來,並不容易實作完整的MVC架構,其中一個原因,主要是因為在伺服器控制項中,已經包含了一些Controller的邏輯在其中。因此若是要討論ASP.NET 表單的MVC架構的話,應該要分成幾種模型來討論:

  1. 以ASP.NET 伺服器控制項建立的表單(標準情境)
  2. 與用戶端(AJAX Library、Windows Form、WPF、Handheld Devices)整合的情境 (Web API情境)

新一代ASP.NET應用程式的發展,已經不再是以"網頁"、"Web表單"為中心,而是改以"工作流程"為主要的設計中心。拜Http通信協定Stateless的特性所賜,在以往建立Web應用程式時,我們必須要透過在伺服器端的程式扮演Controller的角色,因此動態伺服器網頁不管是直譯式、編譯式、或是直譯加編譯式,都必須要有PostBack的動作,才可以執行處理用戶端(View)操作的邏輯。

這樣的架構也沒啥不好,但壞就壞在Web應用程式必須透過瀏覽器操作,而瀏覽器預設只支援HTML加上JavaScript,因此若是要開發高度互動性的網頁,就必須要在瀏覽器中植入一堆東西(AJAX Library、SilverLight.....),這是一個問題。再者,當我們將接收使用者操作的程式延伸到用戶端之後,原本伺服器端的Controller的邏輯就不能直接用了(因為程式封裝在伺服器端頁面的程式中)! 這樣一來,就無法實現MVC架構的延伸性跟彈性。

幸好,.NET Framework 3.5中提供了WF的基礎架構,讓我們可以將這些邏輯從頁面中抽離出來定義成流程,然後再透過WCF基礎架構,結合IIS 7.0的WAS(Windows Activation Service),我們很容易就可以將工作流程以各種不同的繫結方式,以IIS作為流程控管中心發佈到網際網路或是區域網路中。而用戶端(View)也不再侷限於瀏覽器的架構,因此你可以更容易的使用Windows表單或是WPF表單開發具有高度互動性,並且支援離線操作的使用者操作介面(ex:MSDN Reader、Windows Live Writer......)。至於Model的部分,通常會需要與較多的後端資源結合,並提供給多種前端程式共用,因此可以使用BizTalk Server 2006 R2建立企業級的流程,與IIS中的工作流程(Controller)結合,如此一來,就可以建立具有兼具有彈性、可維護性的新一代企業級分散式架構!!

 MVC_DNA

3 則留言:

WizardWu 提到...

http://blog.xuite.net/j2ee/coder/16086593

dotNET MVC Framework, Part 1 - 安裝篇 :

微軟在 2007 年中、年底及 2008 年 3 月,分別推出了 ASP.NET Futures 套件、ASP.NET 3.5 Extensions Preview、ASP.NET 3.5 Extension Preview 2 套件,可用外掛的方式安裝在 VS 2008 上,藉此擴充 ASP.NET 3.5 的功能。其中的 ASP.NET 3.5 Extensions Preview 套件裡,內建了開發 Java / JSP Web 網站已行之多年的 MVC Framework 框架,版工也簡單地試玩了一下。

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

http://blog.xuite.net/j2ee/coder/16091503

dotNET MVC Framework, Part 2 - 原理篇 :

續前一篇「dotNET MVC Framework, Part 1 - 安裝篇 」。MVC (Model-View-Controller) 的網站應用程式開發架構,在 Java / JSP / J2EE 已行之多年,並曾衍生出 Struts 等開放源碼的 Framework (框架)。其主要目的是為了在開發複雜的大型網站時,能將不同的功能作切割、提高程式碼的可讀性,以及元件的可重用性,其結構如下:

John 提到...

感謝你的分享喔!
其實MVC設計模式不一定需要有甚麼特別的"套件"才可以開發。因此雖然我也期待著這一個套件可以簡化一些工作,但是從現在的架構來看,ASP.NET 3.5 Extension中的MVC仍是以"元件"的角度來實作MVC,我從他所建立的專案中並沒有看到單獨維護工作流程的位置。
在我的MVC架構中,則是以"工作流程"為導向建立服務,再透過WCF端點結合Model、Controller、View,因此Model、Controller跟View就都可以跨不同的平台或是應用程式使用,並且可以隨時調整,因此是不一樣的設計方式喔!

John 提到...

順便預告一下,下一本書我將完整的介紹這一種新的MVC設計模式開發方式。如果4月份微軟的研討會時間有確定的話,我也將在研討會中先做介紹。

最新回應

Loading...

即時與版主對話


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