終極 Visual Studio 解決方案結構
意識到這可能是基於手頭項目的主觀因素,我正在尋找建構 VS(Visual Studio)解決方案的“最佳實踐”方法。
請隨時編輯此內容,評論您認為可能不正確的內容,提出替代方案等。我很樂意看到這個社區 Wiki 成長為一個很好的資源,供剛開始使用 VS Solutions 的人們使用。
以下是我現在為我工作的內容(在我目前的項目中),但是我知道有一些東西在錯誤的地方。 在我的場景中,我正在使用**MVC 2建構一個Web 應用程序
請發表您對最終解決方案結構的想法,以便我們了解“最佳方式”/“最佳實踐”(無論這意味著什麼)
IE:
你如何分解你的 DAL(數據訪問層)/BLL(業務邏輯層)?
您是否將儲存庫層和服務層放在 BLL 中?如果您使用的是 MVC(模型-視圖-控制器),您是否將控制器保留在 UI 中而不是核心中?
您是在 Utility/Miscellaneous 文件夾中扔了很多東西,還是將其進一步分解?
等等…
- 我的解決方案 + 我的解決方案核心
- 驗證
- 這是我有一個 POCO 和一個方法將 poco 序列化到 auth cookie 的 userData 部分的地方
- 根據
- 這是我保存 BaseController 和 BaseGlobal 的地方
- 控制器
- 我所有的控制器(顯然)
- 領域
- 數據庫模型
- 包含我的 L2S .dbml 文件
- json模型
- 用於將 JSON 對像傳遞給 veiw 的模型
- 儲存庫
- 服務
- 視圖模型
- 擴展
- 所有擴展方法
- 過濾器
- 動作過濾器
- 實用程序
- 蜜蜂
- 所有第三方 API 程式碼都在這裡
- 徽章
- 徽章計算在這裡
- 郵件客戶端
- 使用此處的類發送純文字或 html 電子郵件
- 路由助手
- 包含一個啟用小寫路由的類
- 還包含我不知道該放在哪裡的東西… IE:HTMLSanitizer、自定義 HtmlHelpers、UserInfo 助手(IP 地址、瀏覽器等)、DataConverter 等 + 我的解決方案.UI
- 應用_瀏覽器
- 資產
- CSS
- 圖片
- 腳本
- 意見
- Global.asax -繼承自 BaseGlobal
- 網頁配置
螢幕截圖
請隨時發表相應評論,或者更好的是,在下面發布您自己的版本(答案)。我知道我所擁有的並不是最好的方法。
您的解決方案/項目結構對我來說看起來很合理。如果您從未看過S#arp Architecture,您可能想要。您的結構與 S#arp 的體系結構之間的主要區別在於 S#arp 將控制器、服務和儲存庫分解為單獨的項目。這樣做的主要好處是更容易對依賴項實施邊界(例如,您不會意外地從 Core 中的程式碼訪問數據訪問特定庫)。
除此之外,您的結構看起來與我傾向於用於我的項目的結構非常相似。我還為擴展方法添加了一個“擴展”文件夾,因為有時很難找到合適的地方。
不錯的維基。
我正在開始一個新項目,這是我開始的結構。
它遵循 Microsoft 最佳實踐(業務、數據、服務、展示)。
在我的解決方案中:
- 業務:特定於領域/項目的邏輯,尤其是 POCO。
- 數據:儲存庫。不言自明。
- 服務:儲存庫之上的邏輯。我可以在此處添加記憶體、過濾等。我的 UI 通過服務與儲存庫通信,而不是直接與儲存庫通信。(UI 的一對一依賴)。
- 介紹:MVC 應用程序(待定)。
您會注意到我也習慣在實際項目程序集名稱前加上 FQN。
我只是喜歡它的外觀,而且在對象資源管理器中它看起來都很好並且“像樹一樣”。
我也有在文件夾前面放一個數字的習慣,所以它根據“什麼需要什麼”進行排序。換句話說,一切都依賴於業務層(所以它在頂層),儲存庫只依賴於業務,服務依賴於儲存庫和業務,呈現依賴於服務和業務等。
當然,以上只是一個起點。我現在擁有的只是一個返回使用者的儲存庫,以及在其之上應用邏輯的服務(過濾)。
最終,我將擁有更多的業務項目、更多的儲存庫(Web 應用程序的每個邏輯區域一個)、更多的服務(外部 API、集成),當然我在 Presentation 中什麼都沒有(我在做 TDD)。
我也喜歡將依賴項都放在一個地方(項目文件夾)。
對於擴展,每個項目我都有一個類(Extensions.cs)。換句話說,我正在“擴展”儲存庫,或“擴展”使用者服務,或“擴展”某些 UI 功能。
對於測試項目 - 我有每個解決方案項目的測試項目。
那是我的兩分錢(因為它的價值)。


