去马来西亚做网站网站,安徽省建设工程信息网站进不了,微信公众号里面免费做网站,网站需要条件1. 引言
领域一词#xff0c;主要有以下两个意思#xff1a;
一国主权所达之地。学术思想或社会活动的范围。
不管是指国家的主权范围也好还是学术活动范围#xff0c;都是在讲一个范围#xff0c;一个界限。比如我们常说的#xff0c;学术领域、思想领域、技术领域、语…1. 引言
领域一词主要有以下两个意思
一国主权所达之地。学术思想或社会活动的范围。
不管是指国家的主权范围也好还是学术活动范围都是在讲一个范围一个界限。比如我们常说的学术领域、思想领域、技术领域、语言领域、物理领域、医学领域、游戏领域、JAVA领域、.NET领域等等它们中不管是泛指还是特指某个领域都是限定在某个范围之内的。由此可见领域一词重在范围的界限。
下面我们就回归正传DDDDomain Drive Design全称领域驱动设计。那这个领域具体指什么呢在DDD中有什么特殊含义呢
2. DDD中的领域
我们要先弄明白DDD是干什么的。DDD是一种综合软件系统分析和设计的面向对象建模方法旨在帮我们设计高质量的软件模型是一种解决复杂中大型软件的一套行之有效的方式。
那既然是用来解决软件问题那自然要弄清楚软件系统的业务需求。
那就以我们之前的办公设备微信公众号开发的案例为例来分析一下。虽然是微信公众号开发但其实涉及到的主要是商品、用户、订单、报价、支付、物流、报修相关业务其本质还是电子商务系统开发。反过来看任何电子商务网站也都涉及到商品、用户、订单、支付、物流这些核心业务而这也正是所有电商领域都会涉及到的业务。
其实不管是普通的电子商务网站还是像京东、淘宝、亚马逊这样的电商平台其本质都是电商领域只不过是系统的复杂性不同而已。
所以我们的案例也就可以理解为一个基于微信公众号平台的电商领域普通电子商务网站的开发。
通过以上的举例说明只是想说明DDD中的领域也并没有什么特别之处它只是被界限在指定的业务需求之中有了更清楚的范围边界。
其实也可以参照原著《领域驱动设计:软件核心复杂性应对之道》的总结 一个领域本质上可以理解为就是一个问题域只要是同一个领域那问题域就相同。所以只要我们确定了系统所属的领域那这个系统的核心业务即要解决的关键问题、问题的范围边界就基本确定了。 弄清了业务领域接下来就是领域的拆分。下面我们就来细化我们案例中的业务场景来介绍引入的核心域和子域的概念。
3. 子域
回到我们的案例基于微信公众号的电子商务网站的开发。我们先抛开DDD按照我们传统的开发设计思路以数据优先的方式上来就建表写代码而且按照我们一贯的作风肯定会先设计Product表因为电商的哪一个环节都跟商品息息相关在这里Product对象就是一个核心对象。那既然Product对象是核心对象那Product对象所处的领域--商品列表领域是不是就是我们这一节讲的核心域答案是否定的。DDD跟我们传统的软件开发设计过程不同它注重领域建模。在了解了业务领域的业务规则之后我们为了完成对一个复杂领域的分析往往我们要先简化之即领域拆分。可以理解为把领域中的复杂大问题拆分成小问题各个击破。也就是将一个领域拆分成多个子域再针对每个子域进行分析。而子域又可以分为核心域、通用子域、支撑子域。那什么是核心域、通用子域、支撑子域呢下面我们就对我们的案例进行拆分来梳理这些概念。
对于我们的案例涉及到的业务商品、用户、订单、报价、支付、物流、报修相关业务我们可以大致拆分成以下几个子域
商品子域用户子域销售子域订单子域支付子域物流子域维修子域
3.1 核心域
如果从几个子域中确定核心域这也许难以决定没关系。我们先来回答一个问题。什么是电商网站在线商品买卖平台。电商领域的核心就是为了商品买卖我们知道开发这个电商网站的目的是为了寻求推广和销售利润的最大化。所以自然而然核心域就是销售子域了。
为什么要先确定核心域因为作为一个业务的核心存在它最能体现系统的核心价值也是核心竞争力。如果要最大化系统的价值我们必然要在核心域的设计上更胜一筹。确定核心域后我们在进行开发设计的时候就有了主次之分。
3.2 通用子域
通用子域顾名思义也就是服务于整个业务领域。比如我们要为该网站提供一个日志系统用来记录一些日志。我们可以设计一个日志子域来供其他子域使用。
3.3 支撑子域
支撑子域的作用于业务系统的某些重要业务而非核心业务它关注于业务的某一方面来支撑完善业务系统。我们划分的子域中除了销售子域其他都可以说是支撑子域。比如物流子域就是专注于物流相关业务支撑着订单发货以及物流跟踪的重要流程。
4. 总结
本节主要结合案例简要梳理了DDD中领域、核心域、通用子域、支撑子域的定义。
领域是有范围界限的也可以说是有边界的。核心域是业务系统的核心价值所在承载着一个系统的重中之重。通用子域可以理解为业务系统所有子域的消费者提供着通用服务。支撑子域专注于业务系统的某一重要的业务来支撑和完善业务系统。
这一节遗留了一个问题那就是文章开头就说领域是有范围界限的但这个范围界限在DDD中如何表述呢这就是下一篇文章要讲的——限界上下文。
相关文章
DDD理论学习系列1-- 通用语言DDD领域驱动之干货 一从事件和DDD入手来构建微服务WeText项目一个基于.NET实现的DDD、CQRS与微服务架构的演示案例【DDD/CQRS/微服务架构案例】在Ubuntu 14.04.4 LTS中运行WeText项目的服务端
原文地址http://www.cnblogs.com/sheng-jie/p/6865784.html .NET社区新闻深度好文微信中搜索dotNET跨平台或扫描二维码关注