我目前有一个UI Layer / DomainService层(域逻辑和服务驻留在此处)和Repo Layer for persistance,我使用 Ninject 来帮助解耦。
我保持UI层非常简单 - 将任务委托给服务层,但是我有一个非常复杂的应用程序依赖于loggedonuser,因此我的CRUD会变得非常复杂。
我的问题是:我几乎所有东西都有服务,然后连接到GenericRepository。
例如 IOrder与IDBRepo通信以获取订单信息,具体取决于客户端访问订单,然后我有IShipping - 它也连接到IDBRepo和退休信息...当1服务需要调用另一个服务时,它变得复杂,它们都连接到IDBRepo。
我已经设法撤出IUserSession并且可以将其提供给每个服务 - 但这对我来说似乎太复杂了......
设置测试时,我必须执行以下操作:
var db = new DBRepo();
var s1 = new OrderService(db);
var s2 = new ShippingService(s1,db);
然后,为了扩展我的一些/大部分服务,我必须添加 ILoggingService 和 INotificationService - 他们都需要访问数据库......
注意:我不是在寻找一个纯粹的DDD,我正在努力充分利用它并让它发挥作用我想这就是我的问题......
答案 0 :(得分:0)
Bob Cravens卡车追踪器是一系列很好的帖子,可以让你思考它:
http://blog.bobcravens.com/2011/05/a-net-generic-repository-pattern-with-implementations/
总的来说,如果你能避免它,我认为拥有相互依赖的服务并不是一个好主意。如果必须这样,那么考虑使用依赖注入框架,例如unity或spring.net或ninject。