asp.net-mvc - ASP.NET MVC 应用程序结构的建议

标签 asp.net-mvc

我是一名 Java 开发人员,正在过渡到 C# 世界。我已经很好地掌握了 ASP.NET MVC(并且可以将其与我学到的 Struts 概念进行比较/对比)。

但是,我正在寻求有关如何构建我的项目的建议。目前,我的项目中有两个解决方案:MVC Web 应用程序和 ClassLibrary 部分。

该应用程序使用分层架构: Controller /服务/DAO。为了让事情“正确”地工作,我在 MVC 解决方案中添加了 Controller 和模型类,在 ClassLibrary 解决方案中添加了服务、DAO 和安全性。不幸的是,这导致了各种小问题(例如:当我尝试在 MVC 端扩展 UserAccount 对象以进行表单验证时,从 ClassLibrary 端的 Entity Framework 扩展 UserAccount 对象是不明确的)。

我能想到的唯一解决方案是将所有内容放入 MVC 项目中,并组织当前在 App_Code 文件夹下的 ClassLibrary 中的内容。它可以解决一些问题,但对我来说似乎“错误”;我的 Java 项目将代码分离到 src 目录中,将 View (jsp)分离到 webapp 目录中。

一些经验丰富的 .NET 开发人员有何看法?

最佳答案

通常,在 .NET 解决方案中,最好的选择是将代码分离到不同的项目中,前提是该代码可能对其他应用程序有用,或者代码本身代表某些问题域的完整解决方案。只被一个应用程序项目引用的类库是一种浪费。

此外,请记住,.NET 不允许两个不同程序集中的对象之间进行循环引用(通常与项目进行一对一转换)。

在您的示例中,我建议您考虑为模型、服务和安全性使用一个类库...具体取决于您所说的“服务”时的含义。

在大多数情况下,数据访问在某种程度上与 MVC 模型的概念耦合,因此您可能会考虑将数据访问也放在那里......但如果您有一个非常清晰地分离的数据访问层,它可能适合它的自己的类库。

Controller 和 View 通常应该直接进入Web项目。

一般来说,我的建议是仅当您确实“需要”时才将内容拆分为单独的项目。但程序集和项目并不是在大多数应用程序中表示层或层的好方法。这些是逻辑概念,并不总是能很好地映射到物理项目结构。

如果您很好地设计了实际的类并避免了紧密耦合,那么当确实出现真正迫切的需求时,您通常可以稍后将代码移至类库中。

关于asp.net-mvc - ASP.NET MVC 应用程序结构的建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2024196/

相关文章:

c# - 具有域驱动设计的 MVC .NET 表单

asp.net-mvc - ASP.NET MVC 数据库本地化

c# - 如何在 Asp.net 中扩展成员资格?

c# - ASP.NET 路由,简单问题

c# - 如何在 if 语句中关闭/重新打开标签

ASP.NET MVC编辑器模板和Html.EditorFor(...)-如何消除类型名称的歧义?

javascript - 如何通过 Javascript 检索由 ASP.NET-MVC 助手创建的标签

c# - 你如何关闭 VS 2013 中的 Razor 突出显示?

c# - ASP.net MVC - 我应该使用 AutoMapper 从 ViewModel 到 Entity Framework 实体吗?

asp.net - 仅为 Sitecore 中的特定站点嵌入语言