正确使用存储库/服务类

Jon*_*lis 6 c# service design-patterns domain-driven-design repository

我正在开发一个相当轻量级的客户端应用程序(.Net中的桌面应用程序,因为将来可能需要连接其他应用程序),以便为工程师跟踪业务中的RMA,工程师将查看和更新​​应用程序中的状态,客户将在网站上创建/查看RMA.

我想知道我对服务和存储库类的预期用法是否正确.Web服务以JSON格式提供数据,我可以从中构造RMA对象.此Web服务可通过以下方式访问http://myRMA.com/repairs/2234/RMA.JSON

RMARepository使用类似方法获取RMA的代码是否会在类中GetRMA(int RMAId),并且应该RMARepository遵循单例设计模式吗?

如果更新RMA,即项目正在检查并等待报价接受,则在服务类中完成,该服务类调用RMARepository来提交更新.请问IsExists(int RMAId)在这个服务类或者是在仓库?

我熟悉Presentation - Application(Logic) - Data Access - Data(Database)artitecture,以及MVP.但我确实想知道Service课程适合哪里.

jga*_*fin 11

存储库类仅用于访问和存储数据库中的信息.他们应该没有其他逻辑.

服务用于从数据源(很可能是存储库)获取信息,处理信息并将结果返回给调用者.

服务类可以使用多个存储库来实现所需的结果.在此层中,您还可以拥有一个事件系统,该系统可以允许一个服务在另一个服务生成事件时执行操作.

一个例子是UserService调用FeedService为每个新创建的用户创建一个新的RSS feed项.

存储库层可以由诸如nhibernate之类的ORM表示.

  • 公平地说,表示层中想要显示 RMA 详细信息的控制器/演示者将调用一个服务类,该服务类将调用转发到 1 个或多个存储库以创建所需的对象。即视图/控制器/模型永远不会接触存储库类。 (3认同)