我们正在尝试为某种情境找出分离的有界上下文集成方案。
假设一个上下文是“文档核心”有界上下文(BC),它有一个“文档”实体,带有一个“作者”。使用IdentityAccessContext BC(如Implementing DDD book所述)将“用户、组和角色”分离到自己的上下文中是有意义的。
问题在于考虑获取100多个文档列表时会发生什么。
假设文档核心BC有自己的实体来标记文档的作者。
然后身份验证BC具有相关信息的用户。
当获取文档列表时,如何从IdentityAccessBC中检索信息以便与文档作者一起显示(例如全名)?
似乎有几种替代方案:
1. 也许可以使用一个反腐层从两个表中获取数据? 2. 在两个BC之间复制用户的全名?
这两种方法都不太合适,因为#1需要在某个级别上连接来自2个BC的数据,而#2则需要在更改用户名称时可能更新多个BC。
对此应该怎么做?(如果相关的话,使用C#,MVC,NHibernate)
显然,先获取对象列表,然后稍后获取作者的姓名和其他数据是不现实的。
在考虑BC集成时,然而,在书中提到的3个选项RPC、Domain Events和RESTful服务集成中,至少后两个在这种情况下是没有意义的,因为应用程序是MVC,并且直接使用2个BC作为类库,它们都使用相同的数据库。可以通过Identity BC的应用程序服务直接从MVC更新用户信息。数据库和BC可以根据需要更改。
假设一个上下文是“文档核心”有界上下文(BC),它有一个“文档”实体,带有一个“作者”。使用IdentityAccessContext BC(如Implementing DDD book所述)将“用户、组和角色”分离到自己的上下文中是有意义的。
问题在于考虑获取100多个文档列表时会发生什么。
假设文档核心BC有自己的实体来标记文档的作者。
public class Author
{
long Id; // Same as UserId
long Document;
}
然后身份验证BC具有相关信息的用户。
public class User
{
long Id;
string FullName;
}
当获取文档列表时,如何从IdentityAccessBC中检索信息以便与文档作者一起显示(例如全名)?
似乎有几种替代方案:
1. 也许可以使用一个反腐层从两个表中获取数据? 2. 在两个BC之间复制用户的全名?
这两种方法都不太合适,因为#1需要在某个级别上连接来自2个BC的数据,而#2则需要在更改用户名称时可能更新多个BC。
对此应该怎么做?(如果相关的话,使用C#,MVC,NHibernate)
显然,先获取对象列表,然后稍后获取作者的姓名和其他数据是不现实的。
在考虑BC集成时,然而,在书中提到的3个选项RPC、Domain Events和RESTful服务集成中,至少后两个在这种情况下是没有意义的,因为应用程序是MVC,并且直接使用2个BC作为类库,它们都使用相同的数据库。可以通过Identity BC的应用程序服务直接从MVC更新用户信息。数据库和BC可以根据需要更改。