2011-04-23 81 views
6

我有一个服务层,其中我的PredictionService需要知道是否存在特定的比赛。 RaceService有一个方法DoesRaceExist(),但我不确定服务是否可以通信。服务层中的服务可以相互通信吗?

这也导致我一些其他问题。可以说我有一个Predictions.aspx页面。我使用MVP实现,所以当第一次请求页面时,会运行演示者中的Initialize()方法。 Predictions.aspx需要来自预测和比赛的多个信息,甚至更多。我应该从相应的服务中询问所有这些部分,还是应该只查询一次数据库,并一次性获取所需的所有信息?然后问题是选择哪个服务,然后该服务可能不仅仅是中继它的目的。

什么是最好的方法去?

回答

8

如果serviceA需要获取数据或在serviceB上运行操作,则可以从serviceA调用serviceB。

但是,您可能会发现自己处于服务互相呼叫的情况 - 如果发生这种情况,请考虑使用编排不同服务的facade(因此它们不直接互相呼叫)。

+0

没错。我仔细观察了我的预测演示者,发现我在预测服务旁边使用了另外两种不同的服务{Driver,Race}。我想到了你说的话,并认为确实有门面/宏观服务是一个好主意。 – 2011-04-23 17:47:09