c# - ASP.NET MVC(域模型、存储库、Fluent、服务——我项目的结构)

标签 c# .net asp.net-mvc dependencies project-structure

在我的 ASP.NET MVC 网络应用程序中,我有:

  • 域模型,由 LINQ to SQL 创建

  • 库如

    UserRepositoryOrderRepository

  • IQueryable Fluents 作为 IQueryable 扩展方法,例如

    public IQueryable<Order> GetNewOrders(this IQueryable<Order>)

  • 服务如

    UserServiceOrderService

  • 实用类和扩展方法如

    CryptoUtility (做散列等)和字符串等扩展

  • 每个 MVC View 的特殊 ViewModel

  • ASP.NET MVC 项目本身( Controller 、 View )

我正在为我的案例寻找最好的项目结构/组织,尤其是分成不同的程序集以及这些层之间的依赖关系应该是什么样子。不幸的是,Web 资源没有对此进行详细介绍。

一个提示:目前 Repository、Services、IQueryable Fluents 等直接针对域模型实现工作,我没有它们的接口(interface)定义。我认为这是不必要的,但也许这是松散耦合所需要的?我的服务有一个接口(interface)(例如 IOrderService),我的存储库实现了 IRepository

感谢您以简洁的方式组织这一点,尤其是哪一层应该取决于什么和装配组织。谢谢!

最佳答案

我会看看 Jeffrey Palermo 关于洋葱架构的文章 here .这种基本架构适用于任何项目,并允许您将核心项目(域层、持久性等)与 Web 项目分开。

我们将其与 MVC/StructureMap/FluentNHibernate 结合使用并取得了巨大的成功。

我们最终得到了一个类似于下面的结构。

> trunk
  + build (build scripts)
  + lib (external libraries)
  > src (source code)    
   >> Organization.App (solution name)
     >> Organization.App.Core (code library)
        + Config
        > Domain
          > Model
          > Persistence
          > Queries
          > Services
        > Persistence
        > Services
     >> Organization.App.Web (mvc web app)
        > Assets
          + Images
          + Scripts
          + Stylesheets
        + Controllers
        + Views
        + ViewModels

这是基本的想法。 Web 应用程序引用域实体的核心应用程序我们的存储库/工作单元。查看this older project on google code对于类似的例子。关于这一点的重要部分是我们已经能够将新的“UI”项目类型添加到同一解决方案并按预期重用我们的核心项目。比如控制台应用程序或第二个 Web 应用程序,或者您需要的任何东西。

关于c# - ASP.NET MVC(域模型、存储库、Fluent、服务——我项目的结构),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1349640/

相关文章:

c# - HttpClient PutAsync 不向 api 发送参数

.net - sqlite:SQLiteTransaction 和 SQLiteTransaction2 有什么区别

asp.net - ASP MVC - ConfigurationManager 找不到应用程序设置

c# - 在 C# 中旋转色调

c# - 大量数据的最佳加密(速度至关重要)?

c# 如何在客户端管理 wcf 服务代理生命周期?

asp.net - 如何为 Web API GET 请求指定用户名和密码

asp.net - @Html.DropDownListFor 不回发到 Controller

c# - 从代码中声明多个字符串

.net - 计算部分流的 MD5 哈希值