簡體   English   中英

.NET項目/名稱空間組織問題

[英].NET project / namespace organization question

我們有一個框架,它定義了許多接口和一些基本的默認實現。 我們稱之為CompanyFramework。 我有一些ASP.NET MVC擴展,目前存儲在一個單獨的項目CompanyFramework.Web.Mvc中。 這樣做的原因是,使用核心框架但與MVC無關的應用程序不必引用ASP.NET MVC庫。 我真的不喜歡這個設置,因為額外的程序集只包含3-4個類文件,但它是避免將不必要的依賴項引入主框架程序集的最簡潔方法。

現在,我們有一些我們用於ASP.NET MVC的特定於StructureMap的擴展,即自定義控制器工廠和模型綁定器類型的東西。 你會把這樣的東西放在哪里? 我可以將它放在CompanyFramework.Web.Mvc項目中,但是任何使用它的ASP.NET MVC項目都會引用StructureMap程序集,即使它沒有被使用。 我也可以創建一個單獨的CompanyFramework.StructureMap項目,但是如果我開發了不依賴於ASP.NET MVC的StructureMap的任何擴展,我仍然會為使用它們的類引用MVC程序集。

我應該單獨創建一個CompanyFramework.Web.Mvc.StructureMap項目嗎? 這種方法總體上看起來最干凈,但我覺得我開始引入一堆混亂整個項目結構的輕量級衛星組件。

更糟糕的是,糟糕的依賴關系還是少數額外的項目? 稍微混亂的IDE是一個很好的代價,一個明確定義的結構。

對於這樣的任何問題,我發現考慮該決定對未來修改的長期影響是有幫助的。 最終,其中一些庫將被淘汰並被替換,而其他庫將繼續存在。 例如,有些技術將取代MVC。

我相信將這些東西分開將使未來的開發人員和維護人員的生活變得更加容易。 依賴關系將更加明確(這總是一件好事),並且可以更加自信和清晰地做出遷移決策。

此外,由於許多其他原因,一個不斷擴展的Big Ball of Mud圖書館並不是您希望在未來的每個項目中實現的。 “一堆輕量級組件”對我來說聽起來像是一個很好的設計目標。

我建議將StructureMap與MVC項目一起使用。 我認為這在邏輯上是最有意義的,並且在某些情況下使用未使用的引用不會成為問題。

我認為你目前的設置(CompanyFramework assembly + MVC assembly)非常合理。 我發現我最終會遵循相同的模式:一個通用程序集,一個Web程序集(或專門針對MVC或Web表單),一個數據庫程序集等。在這樣的高功能級別上分離它們是一個開始的好地方。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM