一般来说,我不喜欢将代码(BaseClasses 或 DataAccess Code)保留在 ASP.NET 站点的 App_Code 目录中。我通常会将这些内容分别提取到 MySite.BusinessLogic 和 MySite.DataAccess DLL 中。
我想知道我是否应该对 ASP.NET MVC 做同样的事情。
按照以下方式组织解决方案会更好吗
- MySite.Common - DLL -(基于 .NET 系统 Dll 构建的基本功能)
- MySite.DAL - DLL -(DataAccessLayer 和 DBML 文件)
- MySite.Models - DLL -(MVC 模型,例如存储库类)
- MySite.Controllers - DLL(使用模型的 MVC Controller )
- MySite - ASP.NET MVC 网站。
或者我错过了一些东西......大概,我会失去一些好的东西(添加 View ,转到 Controller ,已添加的上下文菜单项)
最佳答案
我只使用 MVC 完成了几个项目,但使用您的命名结构我们做了以下工作:
- MySite.Common - DLL -(基于 .NET 系统 Dll 构建的基本功能)
- MySite.DAL - DLL -(数据访问层和 DBML 文件和存储库模型)
- MySite.Models - 将此作为一部分包含在内 MVC Web 应用程序的一部分,并且只有 特定于 View 的模型没有 始终将每个映射一对一 存储库模型。
- MySite.Controllers - 作为一部分包含在内 MVC 应用程序,但可以链接到业务层
- MySite - MVC 应用。
最终我的 MVC 解决方案中有以下项目:
- MVC Web 应用程序 - 包含 Controller 、用于将 DAL 数据映射到的 View 模型。
- 通用 - 可在其他应用中使用的功能
- DAL - 包含所有与数据访问相关的数据,包括包装类
- BL - 可选,具体取决于是否需要大量业务特定逻辑
- 测试
编辑: 我的 DAL 始终输出包装对象(如果使用 Linq2Sql,那么我将自动生成的类直接映射到 DAL 中的类)。 MVC 应用程序中存在的唯一类是表示 View 的容器,主要用于将数据传递到 View 。
如果您的移动应用程序使用类似的 View ,我不会尝试重复使用 MVC 应用程序 View 中的相同类。您总是需要管理一些细微的差异,并且您应该能够仅使用 DAL 类来映射到您的移动 View ,该 View 遵循将 View 类本地化到应用程序的模式。
关于asp.net-mvc - 是否有针对 ASP.NET MVC 生产应用程序的建议解决方案结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2517509/