1

我在 C# 和 Razor 中有一个 ASP.NET MVC3。应用程序的架构分为数据访问层(EF 类 + 存储库)、服务层、控制器、ViewModels 和 View。

我的应用程序是一个仪表板,它必须使用图表来显示有关产品的统计信息。

假设我有表格,Product并且ProductCategory在图表中我必须显示Products每月销售ProductCategory百分比。在 x 轴上我有月份,在 y 轴上是ProductPerCategory/ProductTotal的百分比,因此我的行数与ProductCategories.

在这种情况下,我的域模型是由EFProduct上的ProductCategory对象创建的。我的存储库将这些域对象提供给它的上层(服务层)。

我的业务模型是由ProductGraph对象创建的,我的服务层将此业务对象提供给它的上层(控制器)。

我的控制器获取此ProductGraph对象并将其映射到要在视图中显示的视图模型 ProductGraphViewModel

模型之间的这种区别是否正确?层之间传递的对象的定义是否有任何不足或不好的方法?

4

2 回答 2

1

好吧,你有我的外行人的大拇指,这似乎很标准。其他一些需要考虑的事情是:1)你的 DAL/服务层接口了吗?2)您是否使用依赖注入(将这些接口传递给控制器​​实例化)?这样您就可以轻松切换实现或模拟单元测试。

这篇文可能很有趣。

于 2012-02-21T09:52:34.503 回答
1

我会问一些我自己的问题来回答你的问题。

  1. “领域模型”和“商业模型”之间的区别是什么?每个人都比另一个人提供更多/更少的价值吗?在不了解更多信息的情况下,我会认为它们是同一回事。

  2. 您的服务层有什么好处?人们(包括我自己)经常陷入“服务层”陷阱,而实际上它只是包装了您的存储库方法。你最终会将 ORM 细节泄露给消费层,首先破坏了你的抽象点。

如果您给我们一些层之间示例流程的代码,它可能会有所帮助。

是的,@sweaver2112 是关于使用 DI 的。简单的设置,最大的利益。

于 2012-02-21T10:16:44.527 回答