【发布时间】:2011-09-26 19:13:55
【问题描述】:
我目前有一个 UI 层/DomainService 层(域逻辑和服务驻留在此处)和用于持久性的 Repo 层,我使用 Ninject 来帮助解耦。
我的 UI 层非常简单 - 它将任务委托给服务层,但是我有一个非常复杂的应用程序,它依赖于登录用户,因此我的 CRUD 可能会变得非常复杂。
但我的问题是:我为几乎所有东西提供服务,然后连接到 GenericRepository。
例如 IOrder 与 IDBRepo 通信以获取订单信息,具体取决于访问订单的客户端,然后我有 Ishipping - 它也连接到 IDBRepo 并检索信息......当一个服务需要调用另一个服务时,它变得复杂,它们都连接到IDBRepo。
我已经设法取出 IUserSession 并将其提供给每个服务 - 但这对我来说似乎太复杂了......
设置测试时,我必须执行以下操作:
var db = new DBRepo();
var s1 = new OrderService(db);
var s2 = new ShippingService(s1,db);
然后要扩展我的部分/大部分服务,我必须添加一个 ILoggingService 和 INotificationService - 他们都需要访问数据库...
注意:我不是在寻找一个纯粹的 DDD,我正在努力利用最好的东西并让它发挥作用我想这是我的问题......
【问题讨论】:
-
UI 组件、服务实现或调用服务的后端系统有什么区别?服务的整个想法是向任何客户端公开一些功能或数据。 (我不知道 c# 或 asp.net,所以我可能会在这里遗漏一些东西)
-
True... 这些服务驻留在我的核心层域服务中,老实说,我只在这一层中保留服务,所有其他层 (db) 将实现并提供该服务的功能,如果需要...
标签: c# asp.net-mvc architecture