`
yimlin
  • 浏览: 139454 次
  • 性别: Icon_minigender_1
  • 来自: 福州
社区版块
存档分类
最新评论

Domain Model的三种类型及其级别

阅读更多
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不再需要。
0
0
分享到:
评论

相关推荐

    互联网及其应用串讲笔记

    ### 互联网及其应用串讲笔记 #### 计算机网络概览 计算机网络,特别是互联网,作为现代信息技术的基石,其重要性不言而喻。本文将深入解析互联网的架构、原理及其在计算机网络中的应用,旨在为自考计算机网络本科...

    AD域提升为域控服务器报ADPrep执行失败处理.docx

    这个错误可能是由多种原因引起的,下面我们将详细探讨这个问题及其解决方法。 首先,当尝试提升域控制器时,如果收到“System.ComponentModel.Win32Exception 连到系统上的设备没有发挥作用”的错误信息,这通常...

    Hibernate5.2.11高清版,最新版本

    域模型(DomainModel)讨论了如何定义域对象以及与数据库表的映射关系。这是建立对象和数据库间映射的第一步,对于整个应用的数据模型至关重要。 引导(Bootstrap)部分指导开发者如何初始化Hibernate,包括配置...

    基于HALCON的模板匹配方法总结

    - **步骤三:** 通过`reduce_domain()`函数获取ROI内的图像数据。 - **预处理:** 对ROI进行预处理操作,如阈值分割或数学形态学处理,以便后续更好地创建模型。 ##### 2.3 创建模板 - **步骤四:** 利用`create_...

    MDD Tutorial 教程1

    在《MDD Tutorial 教程1》中,作者Gerd Wagner和Adrian Giurca介绍了模型驱动开发(Model-Driven Development, MDD)的基本概念,并通过一系列示例详细解释了如何从领域模型(domain model)逐步发展到设计模型(design ...

    OOAD第四五章1

    接下来,我们讨论领域模型(Domain Model)。领域模型是OOAD中的核心概念,它是一个对现实世界问题域的抽象表示。通过确定一组对象或概念类,我们可以更好地理解业务领域中的关键要素。概念类是业务领域中的基本单元...

    所有数据库的系统表.pdf

    本文档详细介绍了所有数据库中的系统表,特别是模型数据库(Model database)中所包含的18个核心系统表及其功能。这些系统表在创建新的数据库时会被复制,确保新数据库能够继承必要的元数据结构。此外,文档还涉及如何...

    计算机软考高级真题2022年上半年 系统分析师 综合知识.docx

    - **Socks**(Socket Secure):一种代理协议,提供网络级别的代理服务。 #### 3.7 生物特征认证技术 - **指纹识别**(Fingerprint Recognition):利用个人独特的指纹特征进行身份验证。 - **人脸识别**(Facial ...

    Acegi_使用.doc

    Acegi支持三种类型的安全管理对象: 1. **MethodInvocation**:这类对象用于管理Spring容器中的业务对象,开发者可以通过它们保护这些对象。通常情况下,Spring管理的Bean会通过`ProxyFactoryBean`和`...

    面试常遇到的问题

    以下是一些常见的Java面试问题及其解析: 1. 如何把一段逗号分割的字符串转换成一个数组? 使用`String.split()`方法可以将字符串按照指定分隔符(这里是逗号)切割成数组。 2. `request.getAttribute()`和`...

    CISCO交换机配置AAA、802.1X以及VACL

    - **细粒度授权**:提供更高级别的授权服务,如第二层协议过滤、第三层过滤、第四层过滤、速率限制等。 - **动态授权策略**:可以根据特定用户或用户组制定细粒度的安全策略。例如,只允许网络管理员访问SNMP,而非...

    UML 建模 教程

    - **MDA(Model Driven Architecture)**:这是一种强调模型驱动的设计方法论,它将软件系统分为PIM(Platform Independent Model)和PSM(Platform Specific Model),其中PIM是独立于平台的模型,而PSM则是特定于...

    Software Architecture 吉大简答题软件学院整理

    - **三个级别**:Buschmann 将软件开发过程中出现的模式分为三个层次:架构模式、设计模式和实现模式。 - **架构模式示例**:MVC(Model-View-Controller)是一种典型的架构模式,用于分离表示逻辑、数据逻辑和...

    Pentaho Metadata Editor指南

    这种映射允许用户在抽象级别上操作数据库中的表,而无需直接处理底层的SQL语句或其他数据库特定的细节。 **特点:** - 实体表能够提供对数据库表结构的高级视图,使得数据建模更加直观和易于管理。 - 它们通常包含...

    网页设计面试题

    - **解析**:CSS可以以三种方式插入:内联式(在HTML元素中直接插入),嵌入式(在HTML文档的`<head>`部分使用`<style>`标签插入),外部式(通过`<link>`标签链接外部CSS文件)。没有所谓的“索引式”。 12. **...

    TUXEDO_UBBCONFIG文件详解

    - `MODEL`: 应用架构类型,如单机配置(SHM)或多机配置(MP)。 - `OPTIONS`: 可选特性,例如网络应用(LAN)或支持迁移(MIGRATE)等。 2. **机器信息(*MACHINES节)** - 描述参与TUXEDO应用的每台机器的基本...

    PetShop4.0的系统架构设计分析

    除了传统的MVC模式之外,PetShop4.0还应用了PageController模式,这是一种将控制器的概念细化到页面级别的模式,使得每个页面都有自己的控制器来处理用户的请求。 **5.3 ASP.NET控件** 在表示层中,PetShop4.0广泛...

    Windows 环境变量大全

    在Windows中,存在两种类型的环境变量:系统环境变量与用户环境变量。 - **系统环境变量**:这些变量对所有用户都可见,并应用于整个系统。 - **用户环境变量**:这些变量仅对特定用户有效,并且只会影响该用户的...

Global site tag (gtag.js) - Google Analytics