MVC(Model–view–controller)是软件工程中的一种软件架构模式,基于此模式把软件系统分为三个基本部分:
模型(Model)(实现业务逻辑,数据逻辑实现。)
视图(View)( UI设计人员进行图形界面设计,负责实现与用户交互。)
控制器(Controller)(负责获取请求,处理请求,响应结果。)
目的是通过这样的设计使程序结构更加简洁、直观,降低问题的复杂度。
MVC架构模式的设计中,首先基于单一职责原则(SRP-Single responsibility principle)让每个对象各司其职,各尽所能。
然后再基于“高内聚,低耦合”的设计思想实现相关层对象之间的交互。这样可以更好提高程序的可维护性和可扩展性。
领域驱动设计 domain-driven design 为解决场景下的问题而形成的一套模型,然后使用这套模型来解决业务问题。 根据重复劳动经验我们会形成一套模式。领域模型也一样会形成一套模式,他包括:实体、值对象、模块、领域服务。
使用资源库将领域模型更新到数据库。 在一个一对多的实体,例如:用户组和用户,用户组内有N个用户, 如果用户非常多,一次加载用户组肯定会造成性能损失,这种问题怎么设计呢? 使用了领域模型想的方案应该是拆分。
领域模式是解决领域内的业务问题的,他不是解决架构问题,所以领域模型本身不需要引入架构。 当你使用领域模型的时候,领域层之上你可以使用架构,比如CQRS
、MVC
等等。
CQRS(Command Query Responsibility Segration)就是一个系统,从架构上把 CRUD 系统拆分为两部分:命令(Command)处理和查询(Query)处理。其中命令处理包括增、删、改。然后命令与查询两边可以用不同的架构实现,以实现CQ两端(即Command Side,简称C端;Query Side,简称Q端)的分别优化。
1、CQ 两端数据库共享,只是在上层代码上分离。这样做的好处是可以让代码读写分离,更容易维护,而且不存在 CQ 两端的数据一致性问题,因为是共享一个数据库的。
2、CQ 两端不仅代码分离,数据库也分离,然后Q端数据由C端同步过来。同步方式有两种:同步或异步,如果需要 CQ 两端的强一致性,则需要用同步;如果能接受 CQ 两端数据的最终一致性,则可以使用异步。C端可以采用Event Sourcing(简称ES)模式,所有C端的最新数据全部用 Domain Event 表达即可;而要查询显示用的数据,则从Q端的 ReadDB(关系型数据库)查询即可。
标签:两端,架构,模型,模式,领域,CQ
来源: https://blog.csdn.net/waynedzy/article/details/112759377
本站声明:
1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。