原文地址:http://ddmvc4.codeplex.com/
原文名稱:Design and Develop a website using ASP.NET MVC 4, EF, Knockoutjs and Bootstrap
另一種 MVC 應用程序: 簡介
站點總是快速成長,一旦開始成長,站點就變得很難開發,組織和維護。所以在我們增加功能或者開發項目的時候,缺乏設計的大型網站會變得失去控制。這里要說的是站點的架構設計必須簡單,容易被任何設計者理解 ( 從初級開發者到中級開發者 ),以及搜索引擎。在這篇文章中,我會試着設計一個站點,支持在線維護聯系人信息。未來,這個應用可能被用在全球的大型社區站點中,帶有增加的功能和模塊。所以,站點的設計必須能夠輕松地適配未來成長的業務邏輯。
在文章的第一部分,我會使用這種想法來討論創建和設計用戶界面 UI, UI 將會與業務邏輯進行分離,可以被創建但是不依賴任何設計者/開發者。在這一部分,我們將會使用 ASP.NET MVC, knockout Jquery 和 Bootstrap。 在文章的后面,我們將會討論數據庫的設計,以及使用分層的結構來實現業務邏輯,使用的技術包括 SQl Server 2008, Entity Framework, 和 Castle Windsor 以支持依賴注入。
分離關注點: 主要目標
關鍵是要分離出大部分或者所有的業務邏輯。邏輯不應該與頁面綁定在一起。要是在另外一個頁面重新使用邏輯怎么辦呢?這樣,我們將可以復制和粘貼。如果我們做到的話,項目將會變得可維護了。另外一個要點是從業務邏輯分離數據訪問,由於我們計划使用 Entiy Framework,這就不是一個問題,因為 EF 已經這樣做了。我們可以容易地將我們的 EF 文件從一個項目轉移到另外一個項目,簡單地添加一些必須的引用就可以,下面是設計圖。
最終的解決方案在 Visual Studio 中如下所示:
解決方案中有 7 個項目,有必要嗎?
看你怎么想...... 這個設計會帶來許多優點,包括:
- 關注點的分離:清晰地分層,意味着應用可以分隔為獨立的領域,沒有重疊的功能。比如 UI 的設計人員可以專注工作,而不需要被業務邏輯影響 ( Application.Web )。代碼的開發人員只需要處理主要的業務邏輯 ( Application.DTO 或者 Application.Manager ).
- 生產力:對現有的軟件可以容易地增加功能,因為軟件的結構已經到位,新的功能代碼可以按部就班,任何復雜的問題可以輕松識別和分離,並實現軟件工程要求的質量要素:魯棒性,可適配,可維護,以及可重用。
- 可維護:容易維護的應用,清晰定義的結構便於理解,很容易發現 Bug 和異常問題,修改的風險也降至最低。
- 適應性:新的技術,例如不同的前端技術,或者增加業務邏輯的引擎也很容易做到,你的應用架構有着清晰的關注點分離。
- 重用性:對於任何應用的設計來說,可重用性都是一個重要的關注點,因為可以降低總體擁有成本 TCO,我們的設計考慮了重用 Web 應用和不同的層,在文章的后面,我們將會詳細討論每個層中的功能。
工具和技術
為了達到最終的目標,我們需要下面的工具:
- Visual Studio 2012
- ASP.NET MVC 4 with Razor View Engine
- Entity Framework 5.0
- Castle Windsor for DI
- SQL Server 2008/2012
- Knockout.js & JQuery
- Castle Windsor for DI
- Bootstrap CSS