2011-02-16 63 views
5

为了跟踪工程师在业务中的RMA,我正在研究相当轻量级的客户端应用程序(.NET中的桌面应用程序,因为未来可能需要连接到其他应用程序),工程师将查看并更新应用程序中的状态,客户将在网站上创建/查看RMA。正确使用存储库/服务类

我想知道我预期使用的服务和存储库类是否正确。 Web服务提供JSON格式的数据,我可以从中构建一个RMA对象。此Web服务由http://myRMA.com/repairs/2234/RMA.JSON

访问请问代码来获取RMA RMARepository类中坐在像GetRMA(int RMAId)的方法,并应遵循RMARepository Singleton设计模式?

如果RMA被更新,即Item正在检查并等待报价接受,那么这是在一个服务类中完成的,该服务类调用RMARepository来提交更新。 IsExists(int RMAId)会在此服务类中还是位于存储库中?

我熟悉演示 - 应用程序(逻辑) - 数据访问 - 数据(数据库)artitecture,也熟悉MVP。但我想知道Service类在哪里适合。

+0

有效地,我知道我需要达到什么,甚至如何实现它,但需要知道在这种建筑风格中放置功能的位置。 – JonWillis 2011-02-16 11:43:02

回答

10

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

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

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

一个示例是UserService调用FeedService为每个新创建的用户创建一个新的RSS提要项。

存储库层可以由ORM(例如nhibernate)表示。

+0

这是一个公平的评论,表示层中想要显示RMA细节的控制器/演示者会调用一个服务类,该类将呼叫转发到一个或多个存储库以创建所需的对象。即视图/控制器/模型从不碰触存储库类。 – JonWillis 2011-02-16 12:35:21

相关问题