我在C#和Razor中有一个ASP.NET MVC3。应用程序的体系结构分为数据访问层(EF类+存储库),服务层,控制器,ViewModel和View。
我的应用是信息中心,它必须使用图表显示有关产品的统计信息。
假设我有Product
和ProductCategory
表,并且在图表中,我必须显示每月每Products
个ProductCategory
的销售百分比。在x轴上,我有几个月,在y轴上的百分比是 ProductPerCategory / ProductTotal ,因此我的行数与ProductCategories
一样多。
在这种情况下,我的域模型由 EF 上的Product
和ProductCategory
个对象生成。我的存储库将这些域对象提供给其上层(服务层)。
我的商业模式由ProductGraph
对象生成,我的服务层将此商家对象提供给其上层(Controller)。
我的控制器使用此ProductGraph
对象并将其映射到视图模型 ProductGraphViewModel
以显示在视图中。
这种模型之间的区别是否正确?在层之间传递的对象的定义是否有任何不足或不好的方法?
答案 0 :(得分:1)
嗯,你有我的外行竖起大拇指,这似乎很标准。其他一些需要考虑的事项是:1)您的DAL /服务层接口是什么? 2)你是否使用依赖注入(将这些接口传递给控制器实例)?这样你就可以轻松切换实现,或模拟单元测试。
此blog post可能会引起您的兴趣。
答案 1 :(得分:1)
我会问自己的一些问题来回答你的问题。
您对“域名模型”和“商业模式”的区别是什么?每个人的价值是否比另一个更多/更少?如果不知道更多,我会认为它们是相同的。
您的服务层有什么好处?人们(包括我自己)经常陷入“服务层”陷阱,而实际上它只是包装了你的Repository方法。您最终会将ORM细节泄露给消耗层,从一开始就破坏了抽象点。
如果你给我们一些代码流之间的代码流,可能会有所帮助。
是的,@ sweaver2112是关于使用DI的。设置简单,效益最大。