gpt4 book ai didi

.net - 终极 Visual Studio 解决方案结构

转载 作者:行者123 更新时间:2023-12-02 15:09:28 27 4
gpt4 key购买 nike

意识到这可能是主观的,具体取决于手头的项目,我正在寻找构建 VS (Visual Studio) 解决方案的“最佳实践”方法。

请随意编辑此内容、评论您认为可能不正确的内容、提出替代方案等。我很高兴看到此社区 Wiki 成长为刚刚开始使用 VS Solutions 的人们的绝佳资源。

下面是我现在为我工作的内容(在我当前的项目中),但是我知道事实上有些东西在错误的地方。 在我的场景中,我正在使用 MVC 2 构建Web 应用程序

请发布您对最终解决方案结构的想法,以便我们了解“最佳方式”/“最佳实践”(确切含义)

IE:
如何分解 DAL(数据访问层)/BLL(业务逻辑层)?
您是否将存储库层和服务层放入 BLL 中?如果您使用 MVC(模型- View - Controller ),您是否将 Controller 保留在 UI 而不是核心中?
您是否在“实用程序/杂项”文件夹中扔了很多东西,或者您是否将它们进一步分解?
等等...

<小时/>
  • MySolution
    • MySolution.Core
      • Authentication
        • this is where I have a POCO and a method to searialize the poco into the userData secion of the auth cookie
      • Base
        • here is where I keep my BaseController and by BaseGlobal
      • Controllers
        • all of my controllers (obviously)
      • Domain
        • DatabaseModels
          • contains my L2S .dbml file
        • JsonModels
          • models used to pass JSON objects to the veiw
        • Repositories
        • Services
        • ViewModels
      • Extensions
        • all extension methods
      • Filters
        • Action Filters
      • Utilities
        • Apis
          • all third party API code goes in here
        • Badges
          • badge calculation goes here
        • MailClient
          • send plain text or html email using the classes in here
        • RoutingHelpers
          • contains a class to enable lowercase routes
        • also contains things that I don't know where else to put... IE: HTMLSanitizer, custom HtmlHelpers,UserInfo helper (IP address, browser, etc), DataConverter, etc
    • MySolution.UI
      • App_Browsers
      • Assets
        • Css
        • Images
        • Scripts
      • Views
      • Global.asax - inherits from BaseGlobal
      • Web.config
<小时/>

屏幕截图
Core UI

请随意发表相应的评论,或者更好的是,在下面发布您自己的版本(答案)。我知道我所拥有的并不是最好的方法。

最佳答案

不错的维基。

我正在开始一个新项目,这是我开始的结构。

它遵循 Microsoft 最佳实践(业务、数据、服务、演示)。

alt text

在我的解决方案中:

  • 业务:特定于领域/项目的逻辑,尤其是 POCO 的逻辑。
  • 数据:存储库。不言自明。
  • 服务:存储库之上的逻辑。我可以在此处添加缓存、过滤等。我的 UI 通过服务与存储库通信,而不是直接与存储库通信。 (UI 的一对一依赖)。
  • 演示:MVC 应用程序(待定)。

您会注意到,我还习惯在实际项目程序集名称前添加 FQN 前缀。

我只是喜欢它的外观,而且在对象资源管理器中它看起来很漂亮并且“像树一样”。

我还有一个习惯,就是在文件夹前面放一个数字,这样它就按照“什么需要什么”来排序。换句话说,一切都取决于业务层(所以它在顶层),存储库仅取决于业务,服务取决于存储库和业务,呈现取决于服务和业务,等等。

当然,以上只是一个起点。我现在拥有的只是一个返回用户的存储库,以及在其之上应用逻辑(过滤)的服务。

最终我将拥有更多的业务项目、更多的存储库(Web 应用程序的每个逻辑区域一个)、更多的服务(外部 API、集成),当然我在演示方面什么也没有(我正在做 TDD)。

我还喜欢将依赖项全部放在一个位置(项目文件夹)。

对于扩展,我为每个项目都有一个类(Extensions.cs)。换句话说,我正在“扩展”存储库,或者“扩展”用户服务,或者“扩展”一些 UI 功能。

对于测试项目 - 我每个解决方案项目都有测试项目。

这是我的两分钱(无论它的值(value))。

关于.net - 终极 Visual Studio 解决方案结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3516313/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com