博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
DDD 之 Multiple Canonical Models
阅读量:4579 次
发布时间:2019-06-09

本文共 3102 字,大约阅读时间需要 10 分钟。

 

 

Scratch any large enterprise and you'll usually find some kind of group focused on enterprise-wide conceptual modeling.

Most commonly this will be a data management group, occasionally they may be involved in defining enterprise-wide services. They are enterprise-wide because rather than focusing on the efforts of a single application they concentrate on integrating multiple applications.

 

 

 

 Most such groups tend to focus on creating a single comprehensive enterprise model. The idea is that if all applications operate based on this single model, then it will be much easier to integrate data across the whole enterprise - thus avoiding stovepipe applications.

Much of this thinking follows the shared database approach to enterprise integration - where integration occurs through applications sharing a single logical enterprise-wide database.

 

 

A single conceptual model is a tricky beast to work with.

For a start it's very hard to do one well - I've run into few people who can build these things. Even when you've built one, it's hard for others to understand.

Many times I've run into the complaint that while a model is really good - hardly anyone understands it. This is, I believe, an essential problem.

Any large enterprise needs a model that is either very large, or abstract, or both. And largeness and abstractness both imply comprehension difficulties.

 

 

 

These days many integration groups question the shared database approach, instead preferring a messaging based approach to integration.

I tend to agree with this view, on the basis that while it's not the best approach in theory, it better recognizes the practical problems of integration - especially the political problems.

 

 

 

One of the interesting consequences of a messaging based approach to integration is that there is no longer a need for a single conceptual model to underpin the integration effort.

Talking with my colleague Bill Hegerty I realized that

  • You can have several canonical models rather than just one.
  • These models may overlap
  • Overlaps between models need not share the same structure, although there should be a translation between the parts of models that overlap
  • The models need not cover everything that can be represented, they only need to cover everything that needs to be communicated between applications.
  • These models can be built through harvesting, rather than planned up-front. As multiple applications communicate pair-wise, you can introduce a canonical model to replace n * n translation paths with n paths translating to the canonical hub.

The result breaks down the modeling problem, and I believe simplifies it both technically and politically.

 

So far, however, it seems that the data modeling community is only beginning to catch on to this new world. This is sad because data modelers have a tremendous amount to offer to people building canonical messaging models.

Not just are skills not taking part, many also resist this approach because they assert that a single enterprise-wide model is the only proper foundation for integration.

 
 
 
 

 

 

转载于:https://www.cnblogs.com/panpanwelcome/p/10195194.html

你可能感兴趣的文章
android的用户定位(一)
查看>>
creat-react-app搭建的项目中按需引入antd以及配置Less和如何修改antd的主题色
查看>>
IIS安装
查看>>
html块级元素和行级元素的区别和使用
查看>>
for循环嵌套
查看>>
寒冬夜行人
查看>>
poj1151 Atlantis
查看>>
HTML页面之间的参数传递
查看>>
java面试题集锦
查看>>
scikit-learn:4.2.3. Text feature extraction
查看>>
Spring Security构建Rest服务-0800-Spring Security图片验证码
查看>>
AE待整理
查看>>
java8中规范的四大函数式接口
查看>>
宝塔apache配置
查看>>
shell脚本中使用nohup执行命令不生效
查看>>
PHP 文件上传七牛云
查看>>
ZT:Unity与C++之间进行socket通信
查看>>
【转载】Maven入门实践
查看>>
【SQL Server备份恢复】提高SQL Server备份速度
查看>>
移位操作的疑问
查看>>