做a爱片网站,网站开发属于什么科目,游戏开发和网站开发哪个好玩,抚州做网站公司哪家好领域驱动设计系列文章#xff0c;点击上方合集↑
1. 领域
领域#xff08;Domain#xff09;是一个组织所做的事情以及其中所包含的一切#xff0c;领域可以表示整个业务系统。
领域#xff0c;简单来说#xff0c;是指一个业务或行业领域#xff0c;例如电商、社交媒…领域驱动设计系列文章点击上方合集↑
1. 领域
领域Domain是一个组织所做的事情以及其中所包含的一切领域可以表示整个业务系统。
领域简单来说是指一个业务或行业领域例如电商、社交媒体、金融等。在软件开发中将领域抽象出来以便更好地理解业务需求并将其作为设计和实现的核心。领域由一组相关的业务概念、规则、流程和行为组成它们共同构成了业务领域的核心要素。通过理解和建模领域我们可以更好地设计出与实际业务需求相符合的软件系统。
2. 子域
在DDD中一个领域被分为若干子域领域模型在限界上下文中完成开发。
子域Subdomain是领域的一部分它代表了领域中的一个较小的特定业务领域。在一个大型复杂的领域中可以将其拆分为多个子域来进行设计和开发。子域通常具有自己独特的业务概念、规则和流程而且往往有着较高的内聚性因此可以将其当作一个相对独立的业务模块进行开发。每个子域都有自己的上下文和职责可以由一个团队或多个团队来负责。
一个简单的电商的例子
商家向买家展示不同类别的产品允许买家下单和付款还需要安排物流。在这个领域中零售商的领域可以分为4个主要的子域产品目录ProductCatalog、订单Order、发票Invoicing和物流Shipping。 如上我们还加入一个库存Inventory系统还有地图系统支撑子域、算法推荐支撑子域日志和监控通用子域认证和授权通用子域。 核心域Sub Domain它是一个唯一的、定义明确的领域模型要对它进行战略投资并在一个明确的限界上下文中投入大量资源去精心打磨通用语言。它是组织中最重要的项目因为这将是你与其他竞争者的区别所在。正是因为你的组织无法在所有领域都出类拔萃所以必须把核心域打造成组织的核心竞争力。做出这样的决定需要对核心域进行深入的学习与理解而这需要承诺、协作与试验。这是组织最需要在软件中倾斜投资的方向。 支撑子域Supporting Subdomain这类建模场景提倡的是“定制开发”因为找不到现成的解决方案。对它的投入无论如何也达不到与核心域相同的程度。也许会考虑使用外包的方式实现此类限界上下文以避免因错误地认为其具有战略意义而进行巨额的投资。这类软件模型仍旧非常重要核心域的成功离不开它。 通用子域Generic Subdomain通用子域的解决方案可以采购现成的也可以采用外包的方式抑或是由内部团队实现但我们不用为其分配与核心域同样优质的研发资源甚至都不如支撑子域。
3. 子域与微服务
子域在领域驱动设计中是对业务领域的逻辑划分而微服务是一种实现架构上的解决方案将系统拆分为独立的服务。子域可以指导微服务的划分并帮助实现系统的松耦合、可扩展的微服务架构。
具体来说每个子域可以作为一个微服务的边界该微服务负责实现子域的业务逻辑。每个微服务可以独立开发、部署和扩展通过接口和交互来实现子域之间的通信和协作上下文映射。
上述的电商系统我们就可以创建类似如下的多模块项目
商品服务Product Service订单服务Order Service发票服务Invoicing Service物流服务Shipping Service库存服务Inventory Service地图服务Map Service推荐服务Recommendation Service日志服务Logging Service监控服务Monitoring Service认证服务Authentication Service授权服务Authorization Service…
4. 最后
虽然很多开发人员没有专门学习过领域驱动设计DDD,但是实际上创建项目也是按照上述这么创建的多模块实际上我们在开发中应用了领域驱动设计的思想因为我们使用的微服务架构本质上就是符合领域驱动设计的理念来构建系统。
需要指出的是微服务架构概念是由Martin Fowler与James Lewis于2014年提出的而领域驱动设计则早在2004年就由Eric Evans提出。领域驱动设计比微服务架构早了整整10年。在当时JSP和单体应用架构是主流但Eric Evans就思考并提出了领域驱动设计的概念。 关注微信公众号“小虎哥的技术博客”让我们一起成为更优秀的程序员❤️