惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

I
Intezer
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
博客园 - 【当耐特】
H
Heimdal Security Blog
I
InfoQ
Blog — PlanetScale
Blog — PlanetScale
Apple Machine Learning Research
Apple Machine Learning Research
Spread Privacy
Spread Privacy
腾讯CDC
大猫的无限游戏
大猫的无限游戏
Recent Announcements
Recent Announcements
V
Vulnerabilities – Threatpost
D
DataBreaches.Net
The GitHub Blog
The GitHub Blog
C
CXSECURITY Database RSS Feed - CXSecurity.com
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
G
Google Developers Blog
Application and Cybersecurity Blog
Application and Cybersecurity Blog
J
Java Code Geeks
MyScale Blog
MyScale Blog
P
Palo Alto Networks Blog
V
Visual Studio Blog
Microsoft Azure Blog
Microsoft Azure Blog
Google Online Security Blog
Google Online Security Blog
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
W
WeLiveSecurity
宝玉的分享
宝玉的分享
aimingoo的专栏
aimingoo的专栏
博客园_首页
S
Security @ Cisco Blogs
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Recent Commits to openclaw:main
Recent Commits to openclaw:main
P
Privacy International News Feed
H
Hacker News: Front Page
Vercel News
Vercel News
T
Troy Hunt's Blog
Forbes - Security
Forbes - Security
N
News and Events Feed by Topic
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
U
Unit 42
Cloudbric
Cloudbric
MongoDB | Blog
MongoDB | Blog
B
Blog RSS Feed
T
Threat Research - Cisco Blogs
C
Cyber Attacks, Cyber Crime and Cyber Security
Schneier on Security
Schneier on Security
Last Week in AI
Last Week in AI
H
Help Net Security
M
MIT News - Artificial intelligence
美团技术团队

博客园 - Anders小明

关于架构的思考 如何定义和建立架构 企业应用下的业务组件开发实践 浅谈领域驱动设计 浅谈基础平台 浅谈企业应用架构(二) 浅谈企业应用架构(一) 技术书籍推荐 AOSD的实践冲动——Use Case的实现 业务流程的层次和内容 基于业务模块组件的系统架构 小议领域模型(Domain Model)补充以及更新 软件架构乱弹——问题域及其解决方法 软件工程中的经济行为与软件架构师的工作 Web框架比较 AspectJ应用--软件产品化的新方法 Interface plays as Placeholder, without any class implement it [转贴]做好个人时间管理 基于抽象的分层结构
Domain Model的三种类型及其级别
Anders小明 · 2008-01-08 · via 博客园 - Anders小明

Author: Anders小明

(2008-1-12更新)

从以上的分析中,我们可以了解到Domain Model分为三种类型:
0. 全局常量对象
1. 长生命周期业务对象(类似保单对象);
2. 交易过程的Transaction对象,几乎没有生命周期的;
3. Request/Response对象。这类对象以前没有识别的,通常和VO混在一起;但是在IAA中以及电信业的模型是这类对象是独立存在,并被持久化的;Request对象建立在增量更新上很有用。当然他们也是几乎没有生命周期的。
 
并非所有的业务系统都拥有这三类对象!相当一部分的业务系统,并没有显著的长生命周期对象,因而没有明确的增量变更操作类型及其规则,业务操作是直接更新业务对象,也就没有Request以及Response对象;同时此类业务系统的Transaction对象也通常不存在;

Domain Model的级别:
但不论是那种类型对象,都拥有一个属性,对象等级;对于保险系统来说,保单对象,产品对象以及组织对象是一级对象,而险种和角色等都是二级对象;这点对于设计Repository以及服务粒度都有影响。

关于VO对象的讨论:
VO对象是一种技术类型对象,存在于Web,Domain等层次,其存在的意义是提供集成能力;其意义是:1. 保护系统的信息边界,提供一种结构可以使其它系统或者组件通过编码方式获取系统内信息的方式;2. 保护系统的事务边界,领域对象技术上携带着持久化信息,通过VO可以屏蔽得以屏蔽。常见的VO对象存在于Web层和Domain层。
因此,VO对象的存在只是为了集成而存在,其是否存在的取决于两个方面:框架提供的事务边界以及对象路径访问能力。
Domain层VO对象,通常是用于不同Domain组件间的访问。但随着架构的改进,集成代码独立存在,而不再嵌入到组件内部,组件的边界问题保护不复存在;更进一步的是,框架提供自动化的接口适配映射能力的增强。因而VO对象也失去存在的意义。
Web层VO对象,以SWF为例,早在SWF 1.x时代,框架就提供了丰富的对象路径访问能力,但其Web交互是典型的MVC2方式,事务边界在view的render前关闭,因而导致需要特定的VO对象来避免持久化信息问题;而SWF 2.x时代,view的render是在事务边界内,VO不再需要。