首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >EntityFramework CodeFirst中的有界上下文

EntityFramework CodeFirst中的有界上下文
EN

Stack Overflow用户
提问于 2013-08-25 18:24:39
回答 4查看 2.4K关注 0票数 0

我已经搜索了很多关于有界上下文的内容,我知道它是领域驱动设计中的一种模式,它是用来使用数据库上下文将我们的大模型划分成更小的模型,但它让我有点困惑。实际上我不知道它到底是干什么的?使用这种模式的好处是什么?

请帮助我理解这个模式。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-08-26 04:48:48

有界上下文不一定是将大型模型分解为较小的模型,而是用于识别业务中的不同域模型。每个BC都应该有自己的数据存储区。BC可以以各种方式(反腐败层、值对象)使用来自另一个BC的数据。

因此,您可能有资产BC、仓储BC、Invoicing、会计BC或CRM BC。优点是你可以一次专注于一个领域。要正确处理和识别边界可能有些棘手,这需要对各个领域有很好的了解,因此领域专家在完成这一任务时是非常宝贵的。困难就像识别聚集根一样。

最大的好处是,如果您得到解耦校正,您的维护将更容易。这是正确的做法:)

票数 5
EN

Stack Overflow用户

发布于 2013-08-27 05:34:48

我举一个例子,因为其他人已经给出了很好的解释。

假设你打了一个电话给旅行社,呼叫中心的接线员接了你的电话,他/她可能会回答“亲爱的Doe先生”(假设这是你角色的名字:John Doe),如果你之前打过电话,并且你的名字被记录下来并与你的电话号码绑定在一起。

几秒钟后,我给同一家旅行社打了个电话,接线员接上“亲爱的周先生”。

客户关系管理告诉运营商我们的姓氏,但这里有一些棘手的问题:我是一个中国人,所以我的名字是河马(姓第一),但大多数西方名字都是姓最后(约翰Doe)。考虑到这一点,CRM使用了以下模型:

因此,运营商可以直接发现客户的姓氏,无论订单。

另一方面,当我想订机票时,接线员需要我的全名。给出的全名必须与护照上的全名相同(以便我可以在机场办理登机手续)。航空订票系统采用以下模式:

在上面的示例中有两个PersonName,您当然可以使用一个规范模型,但这对它们都不容易使用:

1)在CRM中使用全名使操作者猜出哪一个是姓

2)在航空订票时使用姓/名是没有意义的,因为只要他们和护照上的姓/名一样,就不重要了。

在这个case:CRM.PersonName和AIR_BOOKING.PersonName中,有界上下文特定的模型工作得更好。

以前有人告诉我:如果某些东西被设计成通用的话,它是不容易使用的。

票数 3
EN

Stack Overflow用户

发布于 2013-08-26 15:40:59

当一种无处不在的语言是一致的时,就会产生有界的上下文。

特定模型的限定适用性。边界上下文使团队成员清楚和共享地理解哪些内容必须一致,哪些内容可以独立发展。

阅读这篇文章,它提供了一个有用的类比。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18432240

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档