2011-11-25 59 views
3

我最近在惠普做了幾個ASP.NET MVC3項目,因爲我來自軟件背景,我對MVC3的內部工作原理以及最佳實踐都比較陌生。ASP.NET MVC3設計模式和正確的編碼技術

在此期間,我稍微改編了一些同事的編碼風格以及設計我的網頁的方法,直到今天仍然堅持。考慮到這一切,我的主要問題是什麼人會推薦學習材料;書籍/視頻/教程。我可以從任何這些資源中學習,並且我很想知道我的編碼是否正確。

我有幾個項目在我的腰帶和許多我使用Razor和ASP.NET編寫的大型商業解決方案,但有時候我覺得我正在做的事情要麼非常黑客,要麼只是一種低效的編碼方式的東西。因此,項目越大,添加新功能就越困難。

我認爲這是我在編碼方面的經驗不足,但同時我想克服這一點,我認爲,通過MVC3的大量經驗,我可以適應更簡單的風格或設計模式,幫助我不僅優化我的代碼,而且成爲一個更好的Web開發人員。如果任何人對書籍或培訓網站有任何建議,請告訴我,因爲我想變得更好。

預先感謝任何一直在我的鞋子裏,願意或能夠推薦任何東西的人!

+1

這是非常主觀的。我會說特殊的樣本可能需要說史蒂夫sandersons MVC3書外。許多網站甚至在書呆子晚餐項目中都有代碼味道。我會在這裏發佈你在做什麼的具體問題,然後我們可以幫助解決具體問題。 –

+0

我可以看到你會怎麼想我越看越它,我認爲這就是爲什麼我有時會對我編寫正確代碼的能力感到困惑。我真的不知道如何展示示例,除非我粘貼控制器/模型和視圖供人們看,那會更實用嗎?我只是覺得有一個更好的實踐,比如像SOA這樣的設計模式和其他能夠促使我以更基本的結構化方式開發的模式。 – jhartzell

回答

1

我不知道這是否是企業解決方案的一個例子,但我從RaccoonBlog中發現的技術中學到了很多東西。我喜歡Layout.cshtml和其他剃鬚刀文件如何使用RenderAction模塊化視圖。

該項目是一個使用RavenDb的MVC3示例,但它也是我在生產中實際使用的最好的真實世界應用程序之一。

希望這會有所幫助。

2

我正在處理相同的問題,並發現它是有用的做一個思維導圖。儘管不可能給你充分的理解,但我可以試着用一些基本的想法指引你朝着正確的方向。

下載/視圖(http://www.xmind.net/share/highroad/mvc3-design-pattern/

你熟悉設計模式?好吧,它們也與MVC應用程序一起存在:)

如果您想談談並理解包括我自己在內的人在談論什麼,那麼您需要知道構建他們稱之爲企業級應用程序的典型設計模式。這些設計模式是開始理解概念的唯一真正方法。

這些模式結構複雜的業務邏輯的方式已成爲設計挑戰開發人員面臨的經過考驗和測試的解決方案(設計模式)。

在該圖中通知有3層主要的層:

  1. 表示層
  2. 業務邏輯層
  3. 數據訪問層

一些與處理時的高度的設計模式的ASP.NET中的模型視圖控制器包括:

業務邏輯層設計模式:

  • 活動記錄。模型與輕量級框架中的數據庫完全相關,例如Ruby on Rails)。當使用ASP.NET和腳手架視圖和控制器創建新的MVC3應用程序時,這是它如何設置的。非常適合較簡單的應用程序。那麼爲什麼不使用Ruby on Rails呢?我會
  • 域邏輯層。將MVC與包含非常少的代碼的控制器一起使用,並創建大量可以執行復雜邏輯的額外模型,MVC僅用於演示。通常使用這種類型的層,稱爲服務層的輕量級層可以用來從控制器調用域層中的所有功能,即控制器調用服務層類中調用域層的方法。這種設計模式似乎在享受面向對象編程的人中非常流行。請參閱下面的鏈接到我的(非常基礎的)使用域層設計的項目。

  • 事務腳本 - 使用控制器做了很多次操作邏輯的工作,問題是很多的動作需要做同樣的事情,所以會出現代碼重複

對於數據訪問層:

  • 像實體框架模型結合一個存儲庫,可以執行任何你需要的SQL查詢。
  • 沒有進入所有模式的這一層,但它們包括:數據映射
  • 通過簡單的應用程序,有沒有真正的數據訪問層,如果在業務層使用領域層只必要(這通常是這樣的)

根據你的應用程序採取什麼樣的結構,你的模型將意味着非常不同的東西。一般來說,它們不會是鏈接到數據庫的模型(創建新應用程序時的默認設置使它們像這樣)。相反,它們將是ViewModels,它們只負責保存每個視圖都需要的數據。

我已經創建了一個ssample應用程序,你可以在這裏看到。

https://github.com/testbrian/enterpriseframeworksB