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

2024-01-11

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

  • 域模型,由 LINQ to SQL 创建

  • 存储库如

    UserRepository and OrderRepository

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

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

  • 服务如

    UserService and OrderService

  • 实用程序类和扩展方法,例如

    CryptoUtility(进行哈希等)和字符串等扩展

  • 每个 MVC 视图特有的 ViewModel

  • ASP.NET MVC 项目本身(控制器、视图)

我正在寻找适合我的案例的最佳项目结构/组织,特别是分成不同的程序集以及这些层之间的依赖关系应如何呈现。不幸的是,网络资源没有详细介绍这一点。

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

感谢您以简洁的方式组织此内容的意见,特别是哪个层应取决于什么和装配组织。谢谢你!


我会看 Jeffrey Palermo 关于洋葱架构的文章here http://jeffreypalermo.com/blog/the-onion-architecture-part-1/。这种基本架构适用于任何项目,并且允许您将核心项目(域层、持久性等)与 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 应用程序引用了我们的存储库/工作单元的域实体的核心应用程序。查看谷歌代码上的这个旧项目 http://code.google.com/p/fsu-isys-489-spring-09-group-2/source/browse/trunk举一个类似的例子。最重要的是,我们能够将新的“UI”项目类型添加到同一解决方案中,并按预期重新使用我们的核心项目。比如控制台应用程序或第二个网络应用程序,或任何您需要的东西。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ASP.NET MVC(域模型、存储库、Fluent、服务 - 我的项目的结构) 的相关文章

随机推荐

  • 为什么不使用抽象类而不是接口?

    我正在考虑使用带有所有抽象成员的抽象类而不是接口 以避免显式接口实现样板代码 所以而不是 type IMyInterface abstract Name string abstract Text string type MyClass me
  • 从具有多个结果的矩阵构建地图

    我有一个未知 n x m 维度的输入矩阵 由 1 和 0 填充 例如 5x4 矩阵 A array 1 0 0 0 1 0 0 0 0 1 1 0 0 1 1 0 1 0 1 1 Goal 我需要在之间创建 1 1 地图as many尽可能
  • VS 链接器失败,并出现 std::string 方法的“对象已存在”错误

    首先 我必须强调 我已经尝试了相当长的时间来解决它 但我不知道我错过了什么 或更准确地说 我不明白什么 任何帮助将不胜感激 我有一个名为 static tools 的项目 它编译为静态库 称为静态工具库并且它使用STL 我使用 MD 编译该
  • 查询 std::ostringstream 内容

    是否可以搜索内容std ostringstream不使用std ostringstream str 成员函数创建一个std string寻找 我有以下内容并希望避免构建std string每次调用时都会实例化flush include
  • 在android中将textview放在imageview之上

    我有一个listview 有一个单一的imageview这是 可垂直滚动 我正在尝试放置一个textview在之上Imageview 两个视图都必须可见 是否可以 如果是 如何以编程方式执行 我需要做出哪些改变 list view item
  • 发送 HTTP 标头后,服务器无法修改 cookie

    我正在用 C 创建一个 Web 应用程序 当我的页面加载时 我会触发一个异步线程来处理一些数据 此处理的一部分是更新 cookie 但是 当我将 cookie 保存到响应中时 System Web HttpContext Current R
  • 将单列拆分为四列并计算 R 中的重复模式

    该项目的目的是了解在观察物体时如何获取信息 想象一个对象有这样的元素a b c d e and f 一个人可能会看a并移至b等等 现在 我们希望绘制并了解该人如何浏览给定刺激的不同元素 我有在单列中捕获此运动的数据 但我需要将其分成几列才能
  • SQL随机数不起作用

    declare fieldForceCounter as int declare SaleDate as dateTime declare RandomNoSeed as decimal set fieldForceCounter 1 se
  • 如何从 .csv 文件读取字符串并拆分它?

    我有一个 csv 文件 我必须从中读取一个字符串并将其拆分为子字符串 例如 s1 s2 s3 然后我必须把它分成s1 s2 s3 根据 进行拆分 好吧 尝试以下 beanshell java 代码将提取的 subjects string 变
  • 从字节数组创建 IMFByteStream

    我正在尝试采用一种方法 该方法最初从 Microsoft 的 MediaFoundation 音频播放示例中获取 URL 改为从 const char 数组中获取源 问题是 CreateObjectFromByteStream 需要 IMF
  • 使用 Python 访问已经运行的进程

    问题 有没有一种方法 使用Python 访问正在运行的标准输出process 这个过程有not由Python启动 Context 有一个程序叫玛雅巴奇 从 3D Maya 场景文件渲染图像 如果我从命令行运行该程序 我会看到来自的进度消息玛
  • 拨打 tcp 127.0.0.1:5000: 连接:连接被拒绝

    我托管了一个 Flask Web 应用程序 当我尝试从 Firefox 浏览器打开它时 它显示 拨打 TCP 127 0 0 1 5000 连接 连接被拒绝 但是当我尝试在 Chrome 中打开 URI 时 它工作正常 可能的原因是什么 您
  • UICollectionView - 具有 pinterest 样式布局的自动布局

    我目前正在尝试构建 pinterest 样式布局 同时使用自动布局具有动态高度 试图远离手动计算单元格高度 我目前的目标是 iOS 9 及更高版本 我见过关于如何使用特定于每个索引的计算进行动态布局和 pinterest 布局的精彩示例 但
  • 如何处置我的 Excel 应用程序

    我的代码如下 Excel Application xlApp new Excel Application Excel Workbook xlWorkbook xlApp Workbooks Open file Excel Worksheet
  • 为什么我得到-2147483648和-1的乘法,负数,即-2147483648,而不应该是+2147483648 [重复]

    这个问题在这里已经有答案了 这是我写的代码片段this https leetcode com problems divide two integers Leetcode 中的问题 public static int quotient int
  • webkit 中奇怪的盒子阴影伪影

    有人知道是什么导致输入字段右侧出现蓝色框吗 过去几天这一直是我存在的祸根 仅间歇性出现 每个输入的标记如下所示 div class input text div
  • String.Format 类似于 T-SQL 中的功能吗?

    我正在寻找 T SQL 中的内置函数 扩展函数 用于类似于String Format NET 中的方法 如果您使用的是 SQL Server 2012 及以上版本 则可以使用FORMATMESSAGE eg DECLARE s NVARCH
  • 什么是符号张量,为什么它们会抛出“use `steps_per_epoch` argument”错误?

    注意 我已经解决了我的问题 但我发布这个问题是为了防止其他人也有这个问题 因为我不明白我是如何解决它的 我正在使用 Tensorflow 后端在 Keras 中构建命名实体分类器 序列标记模型 当我尝试拟合模型时 出现此错误 令人惊讶的是
  • 如何确定 SQL Server 中正在编译的内容

    在跟踪我的 SQL Server 2008 Std Edition 安装上的性能监视器时 我注意到每秒 SQL 编译数大约每五秒就会从 3 次激增到大约 50 次 我们每秒的编译与批处理请求的比率也相对较高 我知道理想情况下这应该是 1 1
  • ASP.NET MVC(域模型、存储库、Fluent、服务 - 我的项目的结构)

    在我的 ASP NET MVC Web 应用程序中 我有 域模型 由 LINQ to SQL 创建 存储库如 UserRepository and OrderRepository IQueryable Fluents 作为 IQueryab