服务粒度

时间:2012-01-18 03:27:37

标签: soa

管理特定于域的服务的最佳方法是什么?例如:在金融领域,我是否应该拥有全球服务“AccountCreation”或“CheckingAccountCreation”,“CreditcardAccountreation”等。

我正在努力将它们保持在全球水平还是保持在产品水平。什么是最好的方法?

1 个答案:

答案 0 :(得分:3)

您应该首先关注数据:有哪些数据,哪些数据需要保持一致。然后关注数据周围的行为。

  

在金融领域,我是否应该拥有全球服务“AccountCreation”或“CheckingAccountCreation”,“CreditcardAccountreation”等。

在这个例子中,我会说你有一个“帐户”服务,因为你显然有一些帐户 - 你可能必须确保,例如,你不重复帐号,应用反欺诈规则,管理创作的工作流程等。

您的示例标识了一些行为:创建支票帐户,创建信用卡帐户。这些适当地是您发送给服务的命令,因为它们会导致服务拥有的数据发生变异。

如果您添加“客户”服务,那将与帐户服务不同:它不必与帐户服务保持一致,只是为了通过ID从帐户到客户的引用。

您通常也没有涉及这两个部分的共享行为 - 更新客户数据不应触及其帐户的详细信息(直接),更新帐户不会更改客户的详细信息。 / p>

您可能在一项服务中有更改另一项服务的业务规则,例如客户服务部门宣布的“客户成为学生”的帐户服务,然后进行一些内部处理。