精华内容
下载资源
问答
  • 企业应用架构模式领域逻辑模式领域逻辑的组织可以分为三种主要的模式:事务脚本,领域模型,表模块。 面向过程的开发模式:事务脚本 事务脚本是这样一个过程开发逻辑:从表示层获得输入,进行校验计算处理,...
    企业应用架构模式 之 领域逻辑模式
    

    领域逻辑的组织可以分为三种主要的模式:事务脚本,领域模型,表模块。 

    面向过程的开发模式:事务脚本
             事务脚本
    是这样一个过程开发逻辑:从表示层获得输入,进行校验和计算处理,将数据存储回数据库中,以及调用其他系统的操作等。然后,该过程将更多的数据返回给表示层,中间可能要进行大量的计算来组织和整理返回值。基本的组织模式就是让每个过程对应用户可能做的一个动作。所以,我们可以将这一模式想象成一个动作或业务事务的教本。该教本可以拆分为不同的子过程,这些子过程可以在不同的事务脚本中共享。但是每个动作都由一个过程来驱动的。
             事务脚本的开发模式是基于过程的,所以它发挥不了面向对象开发语言的优势,尤其是在领域逻辑复杂性增加时候,缺点就显的更为明显。企业应用开发中,往往类似的业务很多,所以相似的动作不可避免,通常会使多个脚本包含某些相同的代码。通过将这些代码提取为公共的子过程可以部分的消除这种情况,但在很多时候,消除副本,检测副本都很困难。这使的应用程序没有清晰的结构,带来测试,修改,维护等等的不便。
             所以,事务脚本一般只用在简单的案例中,但是建议面向对象的开发人员,即使在简单的案例中也宁愿使用领域模型。虽然适应领域模型的思维方式比较困难,但是,一旦习惯了领域模型,从而受益终生。

    面向数据集的开发模式:表模块
            
    表模块是处理某一数据库表或视图中所有行的业务逻辑的一个实例。表模块通过强类型或弱类型的数据集与对象结合使用,使用主键查询数据,是.Net中使用的很多的一种模式,主要使用主键、半对象化的操作数据。之所以说是半结构化,是因为所用的对象基本上只具有行为,通过传入参数执行特定的操作或者查询记录集,而几乎不承载任何数据。在.net中,这种模式因为其容易和UI进行绑定和交互,所以倍受欢迎。
             DotNet以及Delphi都提供了大量的数据感知组件,可以使用Rad的快速开发模式来开发基于DataSet,DataTable的企业级应用。这种开发模式其实就是基于表模式的。我们只要在界面上摆放一些数据感知组件比如DataGrid等,然后设定同数据源的连接,以及 连接的表,显示的字段,一个简单的程序就搞定了。
             面向数据集的开发模式非常使用于中小型的企业级应用开发,也是国内很多公司的开发模式。但是对于复杂的应用程序来说,业务逻辑的复杂程度会使该种开发方式显的力不从心。
             首先,使用RAD和数据感知组件,就使数据显示层和数据库表紧耦合,任何对数据模型的改变都会导致所有绑定到改动的表字段的数据感知组件的修改。这就是在Delphi开发中,很多开发者宁愿使用StringGrid以及ListView等数据非感知组件做数据显示控件的原因了。
             其次,从弱类型数据集中读取数据时,通常是根据字段名来获取字段的对象的值,比如DataTable["Name"].Tostring(),该方法是以字符串为索引来获得数据集中的字段值,所以如果字段名称写错了,错误也不会在编译期发现,只有在运行期报错,这就给排错带来困难。
             使用数据感知组件,意味着和数据库的特有特性的紧耦合。比如为了减少代码量和提高效率,经常需要使用一些数据库平台相关的特殊sql,或者将一些复杂的sql写成平台相关的存储过程,这样当向不同数据库平台移植时,需要重新编写大量的业务逻辑,这也就是企业级开发中,建议少用甚至不用存储过程的原因了【注意是企业级应用开发】。而面向对象的开发方式有一般基于面向对象的查询语言,比如Hibernate的HQL语言,具有一致性,更加容易实现数据库平台无关性,实现系统方便地迁移。
             基于数据集的开发模式难于应用继承,多态,设计模式等面向对象的开发方法,而且数据集对象不能包含自定义的操作。而领域模型则没有这样的障碍,开发的系统更加直观,更加容易维护。

    面向对象的开发模式:领域模型
             在最坏的情况下
    ,业务逻辑可能会变的极其复杂。此时,规则和逻辑描述了许多不同的用例和行为的变化。对象正是针对这种复杂性而设计的,面向对象的特性加上设计模式足以应对复杂的业务逻辑。
             企业级应用的信息载体是各种数据库,而数据库表是基于关系的,假如能够把关系数据表转化为对象,使得操作数据表如同操作对象一样灵活,消除对面向数据集的Sql的依赖,也就可以应对复杂的企业业务,该有多好啊!
             这也就是面向对象的开发模式:领域模型。领域模型创建了一张由对象组成的业务网。其中的每一个对象都代表某个有意义的个体,可能大到一个公司也可能小到订单的一行。
             面向对象的领域模型通常和面向关系的数据库模型类似,但仍然有许多不同。领域模型混和数据和处理过程,拥有赋值属性和复杂的关联,并且可以使用继承。
             所以,领域模型衍生了两种风格:简单领域模型和复杂领域模型。
             简单领域模型可以使用活动记录,即简单的单条数据记录和单个对象对应的模式,一个对象对应数据库中的一个表。
             复杂领域模型需要使用数据映射器,它可能使用继承、策略或者其他的设计模式,是一张由互联的细粒度对象组成的复杂网络,我们经常会看到:多个类通过交互来完成很简单的任务。复杂领域模型更适用于复杂的逻辑,但它到数据库的映射比较困难。
             领域模型的要点在于隐藏数据库的存在,转化业务操作为对象操作。
             ORM[对象关系映射]是现在流行的解决数据库转化为对象的思想,而Hibernate框架是其中的佼佼者。
             【注:活动记录和数据映射器都是企业应用架构模式。】 

    展开全文
  • 企业应用架构模式领域逻辑模式

    千次阅读 2007-06-28 01:22:00
    领域逻辑的组织可以分为三种主要的模式:事务脚本,领域模型,表模块。 面向过程的开发模式:事务脚本 事务脚本是这样一个过程开发逻辑:从表示层获得输入,进行校验计算处理,将数据存储回数据库中,以及调用...

    领域逻辑的组织可以分为三种主要的模式:事务脚本,领域模型,表模块。 

    面向过程的开发模式:事务脚本
             事务脚本
    是这样一个过程开发逻辑:从表示层获得输入,进行校验和计算处理,将数据存储回数据库中,以及调用其他系统的操作等。然后,该过程将更多的数据返回给表示层,中间可能要进行大量的计算来组织和整理返回值。基本的组织模式就是让每个过程对应用户可能做的一个动作。所以,我们可以将这一模式想象成一个动作或业务事务的教本。该教本可以拆分为不同的子过程,这些子过程可以在不同的事务脚本中共享。但是每个动作都由一个过程来驱动的。
             事务脚本的开发模式是基于过程的,所以它发挥不了面向对象开发语言的优势,尤其是在领域逻辑复杂性增加时候,缺点就显的更为明显。企业应用开发中,往往类似的业务很多,所以相似的动作不可避免,通常会使多个脚本包含某些相同的代码。通过将这些代码提取为公共的子过程可以部分的消除这种情况,但在很多时候,消除副本,检测副本都很困难。这使的应用程序没有清晰的结构,带来测试,修改,维护等等的不便。
             所以,事务脚本一般只用在简单的案例中,但是建议面向对象的开发人员,即使在简单的案例中也宁愿使用领域模型。虽然适应领域模型的思维方式比较困难,但是,一旦习惯了领域模型,从而受益终生。

    面向数据集的开发模式:表模块
            
    表模块是处理某一数据库表或视图中所有行的业务逻辑的一个实例。表模块通过强类型或弱类型的数据集与对象结合使用,使用主键查询数据,是.Net中使用的很多的一种模式,主要使用主键、半对象化的操作数据。之所以说是半结构化,是因为所用的对象基本上只具有行为,通过传入参数执行特定的操作或者查询记录集,而几乎不承载任何数据。在.net中,这种模式因为其容易和UI进行绑定和交互,所以倍受欢迎。
             DotNet以及Delphi都提供了大量的数据感知组件,可以使用Rad的快速开发模式来开发基于DataSet,DataTable的企业级应用。这种开发模式其实就是基于表模式的。我们只要在界面上摆放一些数据感知组件比如DataGrid等,然后设定同数据源的连接,以及 连接的表,显示的字段,一个简单的程序就搞定了。
             面向数据集的开发模式非常使用于中小型的企业级应用开发,也是国内很多公司的开发模式。但是对于复杂的应用程序来说,业务逻辑的复杂程度会使该种开发方式显的力不从心。
             首先,使用RAD和数据感知组件,就使数据显示层和数据库表紧耦合,任何对数据模型的改变都会导致所有绑定到改动的表字段的数据感知组件的修改。这就是在Delphi开发中,很多开发者宁愿使用StringGrid以及ListView等数据非感知组件做数据显示控件的原因了。
             其次,从弱类型数据集中读取数据时,通常是根据字段名来获取字段的对象的值,比如DataTable["Name"].Tostring(),该方法是以字符串为索引来获得数据集中的字段值,所以如果字段名称写错了,错误也不会在编译期发现,只有在运行期报错,这就给排错带来困难。
             使用数据感知组件,意味着和数据库的特有特性的紧耦合。比如为了减少代码量和提高效率,经常需要使用一些数据库平台相关的特殊sql,或者将一些复杂的sql写成平台相关的存储过程,这样当向不同数据库平台移植时,需要重新编写大量的业务逻辑,这也就是企业级开发中,建议少用甚至不用存储过程的原因了【注意是企业级应用开发】。而面向对象的开发方式有一般基于面向对象的查询语言,比如Hibernate的HQL语言,具有一致性,更加容易实现数据库平台无关性,实现系统方便地迁移。
             基于数据集的开发模式难于应用继承,多态,设计模式等面向对象的开发方法,而且数据集对象不能包含自定义的操作。而领域模型则没有这样的障碍,开发的系统更加直观,更加容易维护。

    面向对象的开发模式:领域模型
             在最坏的情况下
    ,业务逻辑可能会变的极其复杂。此时,规则和逻辑描述了许多不同的用例和行为的变化。对象正是针对这种复杂性而设计的,面向对象的特性加上设计模式足以应对复杂的业务逻辑。
             企业级应用的信息载体是各种数据库,而数据库表是基于关系的,假如能够把关系数据表转化为对象,使得操作数据表如同操作对象一样灵活,消除对面向数据集的Sql的依赖,也就可以应对复杂的企业业务,该有多好啊!
             这也就是面向对象的开发模式:领域模型。领域模型创建了一张由对象组成的业务网。其中的每一个对象都代表某个有意义的个体,可能大到一个公司也可能小到订单的一行。
             面向对象的领域模型通常和面向关系的数据库模型类似,但仍然有许多不同。领域模型混和数据和处理过程,拥有赋值属性和复杂的关联,并且可以使用继承。
             所以,领域模型衍生了两种风格:简单领域模型和复杂领域模型。
             简单领域模型可以使用活动记录,即简单的单条数据记录和单个对象对应的模式,一个对象对应数据库中的一个表。
             复杂领域模型需要使用数据映射器,它可能使用继承、策略或者其他的设计模式,是一张由互联的细粒度对象组成的复杂网络,我们经常会看到:多个类通过交互来完成很简单的任务。复杂领域模型更适用于复杂的逻辑,但它到数据库的映射比较困难。
             领域模型的要点在于隐藏数据库的存在,转化业务操作为对象操作。
             ORM[对象关系映射]是现在流行的解决数据库转化为对象的思想,而Hibernate框架是其中的佼佼者。
             【注:活动记录和数据映射器都是企业应用架构模式。】

    展开全文
  • 企业应用架构模式》是一本由Martin Fowler著作,机械工业出版社出版的平装图书,本书定价:59.00元,页数:363,特精心从网络上整理的一些读者的读后感,希望对大家能有帮助。《企业应用架构模式》精选点评:●是...

    《企业应用架构模式》是一本由Martin Fowler著作,机械工业出版社出版的平装图书,本书定价:59.00元,页数:363,特精心从网络上整理的一些读者的读后感,希望对大家能有帮助。

    《企业应用架构模式》精选点评:

    ●是我工作很好的指导,解决了我实际工作中很多困惑的地方!强烈推荐!

    ●比较老的书了。大多数都是孰知的概念。领域对象要有属性和行为这个观念在本书中也一直延续,反观自己现在的java代码都不是面向对象

    ●前后读了半年 书六星 翻译扣一星

    ●看豆瓣的评分这么高,但是我看的时候完全不知所云,话说,如何学习hibernate的话看这书是相当的好,里面好多例子啊,说的也是比较清楚。只是我目前对关系型数据库没什么兴趣。

    ●已买,在读,企业级的模式,自然要应对企业级的问题,没遇到自然就感受不到,慢慢吸收中~~感觉确实高屋建瓴,但无法化到项目里去运用。

    ●开始学习,有点晦涩

    ●到处看到这本书的影响, 现在来拜读一下。 只有豆瓣可以买到这本书的电子书, 但是不能支持kindle很不爽。

    ●讲述了很多应用系统中设计时的可选方案及其优劣。

    ●02的书,想想10年的时候望而却步,第一部分现在读起来很平实。 2015-09-08 又读了一遍。 配合DDD实践终于回顾完了。 接下来ppp。 【模式运动】******。从实践中来,到实践中去。总结自己的模式。

    《企业应用架构模式》读后感(一):虽然有点过时了,但是对思考软件设计的发展很有帮助

    2007年以前读的话帮助会很大。

    书中的很多内容,如三层架构、持久化与业务逻辑分离等现在已经成为了业界常识,但是本书的地位还是值的肯定得。

    如果没有读过其他比较新的设计思想,用这本书用来补充自己对架构发展上方面认识还是很有帮助的。

    《企业应用架构模式》读后感(二):每天看一点,学习中。。。

    最近想深入学习ORM,而且久闻这本书的大名,买来看看,看得我晕乎晕乎,但是还是能探得一点奥秘的。各种模式,如何能熟练使用,那么做出来的产品在响应新的需求,在架构调整方面,会有很大的灵活性。准备认真读个几遍,然后在项目中应用orm,和一些模式。

    思维比较乱啊。。。

    《企业应用架构模式》读后感(三):博大精深的一本书

    1 本书几乎涉及到架构的所有方面,从服务层,逻辑层到数据层,到接口,到各种模式。无所不包。

    2 书有些年头,但内容真的很经典。作者很善于把日常中的思路归纳整理成一个模式,并且相互比较。

    3 书不但有理论,还有代码实例和运用场景。但如果没有长期的代码经验,看上去会有些抽象。

    4 这本书值得看多遍,反复咀嚼。

    《企业应用架构模式》读后感(四):翻译太太太太差!

    (打分只针对翻译)

    正在读, 强烈建议买原版. 这版的翻译, 只是在“勉强能看”的程度. 很多专业名词的翻译让你云雾缭绕的, 比如把单例翻译成单子,还有什么“现场识别”, 听都没听说过的东西. 而且完全是字面翻译, 丝毫不考虑中文表达习惯和上下文, 经常需要反推英文去理解意思. 读着真是一种痛苦, 希望想买这本书的豆油先下载电子版看看自己有这耐性去揣摩译者没有, 再做决定吧!

    《企业应用架构模式》读后感(五):不错的书,翻译也还行

    学软件工程的估计都没少做过这种”企业应用“——其实就是做个网站。这本书从比较抽象的角度,理了一下这里面的各种“模式”(不是GoF的那23种)。读完最大的感受就是,回头再看各种框架,只不过是种种模式的组合体而已,挑选的时候也不用再做无谓的纠结。而且,就像作者在书里说的那样,所有的书本知识都只是给你提供信息,作为你做决策的基础;至于做出什么决策,还是看自己;决策所带来的益处或者痛苦,都得自己品尝。

    展开全文
  • 本书详细介绍了如何在.NET平台上应用Eric Evans的《领域驱动设计》思想Martin Fowler的《企业应用架构模式》思想,Martin FowlerEric Evans分别为本书作序。Jimmy Nilsson的著作还有《.NET E

    时间

    2006年8月30日(周三)晚上19:00-21:00

    演讲人

    Jimmy Nilsson。《Applying Domain-Driven Design and Patterns : With Examples in C# and .NET》的作者。本书详细介绍了如何在.NET平台上应用Eric Evans的《领域驱动设计》思想和Martin Fowler的《企业应用架构模式》思想,Martin Fowler和Eric Evans分别为本书作序。Jimmy Nilsson的著作还有《.NET Enterprise Design》等。

    jimmynilssonphoto.jpg

    applyddd.jpg

    jimmy_scr.jpg

    主持人

    Sicilia

    声音记录

    网盘下载(71M)http://pan.baidu.com/share/link?shareid=73667&uk=1795750932

    UMLChina早期的很多国外专家讲座是通过越洋电话举行,所以音质和后来的讲座相比稍差。

    幻灯片

    Applying Domain-Driven Design,下载:http://umlchina.com/chat/slide/ddd.ppt


    聊天记录

    (18:55:47)[*umlchina_seminar]与所有人说:Jimmy Nilsson。《Applying Domain-Driven Design and Patterns : With Examples in C# and .NET》(中译本暂名《

    (18:55:51)JAMES与所有人说:PPT早就可以下载了

    (18:55:55)[*umlchina_seminar]与所有人说:幻灯下载:http://webseminar5.unix105.cn4e.com/webseminar/ddd.ppt

    (18:56:09)justin79与所有人说:书上市了吗?

    (18:56:27)[*umlchina_seminar]与所有人说:大家欢迎嘉宾

    (18:56:45)[*umlchina_seminar]与所有人说:Can you hear?

    (18:56:54)LT与所有人说:no

    (18:57:01)*wonderqi与所有人说:yes

    (18:57:02)lucky与所有人说:不是很清楚

    (18:57:02)JAMES与所有人说:yes

    (18:57:07)david与所有人说:yes

    (18:57:16)justin79与所有人说:yes,but not clear

    (18:57:18)[*umlchina_seminar]与所有人说:听不见声音请手工安装http://www.bliao.com/help/Bluesky.exe,讲座室帮助:http://www.umlchina.com/Chat/cn_guide.htm

    (18:57:34)zxwu20060830与所有人说:yes,but not clear

    (18:57:53)skyleau与所有人说:yes

    (19:00:14)leiboincn与所有人说:声音很低

    (19:00:45)*polaricebear与所有人说:装了还听不到

    (19:03:15)[*umlchina_seminar]与*polaricebear说:你的语音没打开

    (19:03:59)epaizuhe4与[*umlchina_seminar]说:我也听不到 )

    (19:04:18)*yang_zh与所有人说:sadfsadf

    (19:06:24)[*umlchina_seminar]与epaizuhe4说:你的语音也没打开

    (19:06:31)[*umlchina_seminar]与epaizuhe4说:听不见声音请手工安装http://www.bliao.com/help/Bluesky.exe,讲座室帮助:http://www.umlchina.com/Chat/cn_guide.htm

    (19:07:20)epaizuhe4与[*umlchina_seminar]说:我已经安装了,需要重新启动机器吗/ )

    (19:07:21)epaizuhe4与[*umlchina_seminar]说:? )

    系统: 主麦克风被您交给*umlchina2。

    (19:08:43)[*umlchina_seminar]与epaizuhe4说:不需要吧?重新进来就可以了

    系统: 主麦克风被您交给*umlchina2。

    (19:10:52)tianshi612与所有人说:讲座的ppt在那下载?〉

    (19:11:05)[*umlchina_seminar]与*umlchina2说:幻灯下载:http://webseminar5.unix105.cn4e.com/webseminar/ddd.ppt

    (19:16:04)*umlchina2与所有人说:大家如果有什么问题也可以先提出来,一会儿有Q&A时间,再请专家回答.谢谢!

    (19:17:34)*wonderqi与所有人说:`大·家·好~

    (19:18:57)*wonderqi与[*umlchina_seminar]说:我想问一下Mr. Nilsson,有没有目前使用DDD方法的比较成功的大的案例

    (19:19:17)*umlchina2与所有人说:嗯,记下来了,一会儿请他回答.

    (19:20:00)leiboincn与所有人说:现在在第几张ppt?

    (19:21:39)*umlchina2与所有人说:pg8 Table Module

    系统: 主麦克风被您交给*umlchina2。

    系统: 主麦克风被您交给*umlchina2。

    (19:30:29)*umlchina2与所有人说:Slide10

    (19:30:42)tianshi612与所有人说:DDD方法和MDA 有关系么?

    (19:31:25)[*umlchina_seminar]与*umlchina2说:大家问问题也可以用中文

    系统: 主麦克风被您交给*umlchina2。

    系统: 主麦克风被您交给*umlchina2。

    (19:32:21)*umlchina2与所有人说:11

    系统: 主麦克风被您交给*umlchina2。

    (19:34:55)*umlchina2与所有人说:Slide12

    (19:35:11)*umlchina2与所有人说:13

    (19:39:29)*umlchina2与所有人说:14

    (19:41:42)*umlchina2与所有人说:15

    系统: 主麦克风被您交给*umlchina2。

    (19:46:04)worldheart与所有人说:when begin?

    (19:47:55)*umlchina2与所有人说:16

    (19:47:58)[*umlchina_seminar]与*umlchina2说:正在进行

    (19:48:07)[*umlchina_seminar]与*umlchina2说:听不见声音请手工安装http://www.bliao.com/help/Bluesky.exe,讲座室帮助:http://www.umlchina.com/Chat/cn_guide.htm

    系统: 主麦克风被您交给*umlchina2。

    (19:50:15)blueice与所有人说:hoho,好像没认识的哈。

    (19:51:22)*umlchina2与所有人说:17

    系统: 主麦克风被您交给*umlchina2。

    (19:52:06)tianshi612与blueice说:你进来这么快呀

    (19:52:47)blueice与所有人说:。。。效率还是要的,这里聊啥的?

    (19:52:58)blueice与所有人说:uml china看到了,hoho

    (19:53:52)tianshi612与blueice说:http://webseminar5.unix105.cn4e.com/webseminar/ddd.ppt

    (19:54:08)blueice与所有人说:问题是我这没声音 !_-

    (19:54:38)tianshi612与blueice说:http://www.bliao.com/help/Bluesky.exe

    (19:55:03)[*umlchina_seminar]与*umlchina2说:听不见声音请手工安装http://www.bliao.com/help/Bluesky.exe,讲座室帮助:http://www.umlchina.com/Chat/cn_guide.htm

    (19:58:43)blueice与tianshi612说:!_-搞不定

    (20:00:15)AmosShi与所有人说:To: 搞不定 --> You should do it earlier.

    (20:01:18)tianshi612与blueice说:晕

    (20:01:34)*umlchina2与所有人说:19

    (20:02:11)*umlchina2与所有人说:21

    (20:03:46)*umlchina2与JimmyNilsson说:*wonderqi: Is there any large scale project

    (20:03:58)*umlchina2与JimmyNilsson说:successful story on the application of DDD methodology?

    系统: 主麦克风被您交给*umlchina2。

    (20:04:37)*umlchina2与所有人说:有没有目前使用DDD方法的比较成功的大的案例

    (20:05:01)*umlchina2与JimmyNilsson说:tianshi612与所有人说:Is DDD mothodology related to MDA?DDD方法和MDA 有关系么?

    (20:05:57)JimmyNilsson与所有人说:Q: "Is DDD related to MDA?"

    (20:06:12)JimmyNilsson与所有人说:Well, I think they are in some sense, but the differences are big.

    系统: 主麦克风被您交给*umlchina2。

    (20:06:55)JimmyNilsson与所有人说:For example as I understand MDA it's relying heavily on UML as an executable UML.

    (20:07:15)JimmyNilsson与所有人说:For DDD, UML is also used, but much more as a way of sketching.

    (20:07:27)*umlchina2与所有人说:刘虎 在企业应用时对于资源怎么考虑使用模式?

    (20:07:56)JimmyNilsson与所有人说:So how I proceed is to sketch somethinng VERY raw, then kick up my code editor, write a test and...

    (20:08:11)JimmyNilsson与所有人说:...try out the sketched model, refining it in the code editor instead.

    (20:08:47)*umlchina2与JimmyNilsson说:How to consider the use of Pattern of modeling Resources in enterprise application

    (20:09:32)worldheart与JimmyNilsson说:Can you talk about AOP and DDD?

    (20:10:22)wxohyer与所有人说:在抽取和组织领域模型,有什么好的实践吗

    (20:10:25)tianshi612与所有人说:O/R Mapping 能支持多少客户端同时访问,O/R Mapping 怎么对内存进行控制

    (20:13:05)*umlchina2与JimmyNilsson说:Q no.3: Is there any large scale project successful story on the application of DDD methodology?

    (20:13:21)*umlchina2与JimmyNilsson说:Q No.4:Is there any good practice in the extract and orgnization domin pattern?

    (20:13:46)*umlchina2与JimmyNilsson说:Q No.5: How many client side would be supported by O/R Mapping,

    (20:13:57)*umlchina2与JimmyNilsson说:and how it controls its memory access?

    系统: 主麦克风被您交给*umlchina2。

    (20:16:21)*umlchina2与所有人说:大家稍等

    (20:16:24)*wonderqi与[*umlchina_seminar]说:我想知道在维护模型完整性上有什么好的经验

    (20:16:32)jarryji与jarryji说::D

    (20:17:13)JimmyNilsson与所有人说:Q: "How many clients would be supported by using O/R Mapping?"

    (20:17:32)JimmyNilsson与所有人说:Unfortunately the "boring" (but correct) answer is "it depends".

    (20:18:02)JimmyNilsson与所有人说:There are so many factors that affects that answer. For example, how much data will be fetched...

    (20:18:04)*umlchina2与所有人说:Q.6 )*wonderqi与*umlchina_seminar说:我想知道在维护模型完整性上有什么好的经验

    (20:18:18)*umlchina2与JimmyNilsson说:Would you please provide us some good advice on maitaining the model integrity?

    (20:18:27)JimmyNilsson与所有人说:...in each request. And how often will objects be fetched.

    (20:19:46)tianshi612与所有人说:同时支持上百万登陆的用O/R Mapping来做内存大概需要多少

    (20:20:21)JimmyNilsson_384与所有人说:Q: "How to maintain model integrity?"

    (20:20:44)JimmyNilsson_384与所有人说:First of all, I think the aggregate pattern can help quite a lot with that.

    (20:20:57)tianshi612与所有人说:data 一个月大概在1g 左右

    (20:21:17)JimmyNilsson_384与所有人说:It provides you with a simplification of lessen the number of different situations to deal with...

    (20:21:21)JimmyNilsson_384与所有人说:...as one thing.

    (20:21:41)JimmyNilsson_384与所有人说:Another thing regarding maintainging model integrity that I'm...

    (20:21:54)JimmyNilsson_384与所有人说:...very fond of is to use state transitions as a way of "guardening"...

    (20:22:24)JimmyNilsson_384与所有人说:For example: It's probably OK to have an order that is too "big" as long as the user hasn't...

    (20:22:37)JimmyNilsson_384与所有人说:..."confirmed" the order.

    (20:23:10)JimmyNilsson_384与所有人说:But at the moment the user says "yep, this is it. Please send it", that might be the time when...

    (20:23:15)JimmyNilsson_384与所有人说:...integrity must be checked.

    (20:23:28)JimmyNilsson_384与所有人说:This can be compared to how a word processor works.

    (20:23:47)*umlchina2与JimmyNilsson说:Q.7 If needed to support access number more than millions, and use O/R Mapping,

    (20:23:49)JimmyNilsson_384与所有人说:You can misspell as much as you want, the word processor won't stop you from writing more.

    (20:24:02)*umlchina2与JimmyNilsson说:what is the memory cost required?

    (20:24:28)JimmyNilsson_384与所有人说:It's very common to find in business applications that they won't allow "misspellings"...

    (20:24:55)JimmyNilsson_384与所有人说:What I'm saying is that I think "context" must be remembered... During work, a misspell is fine.

    (20:25:12)JimmyNilsson_384与所有人说:When done, you probably don't want it there... The transition is important.

    (20:26:56)JimmyNilsson_384与所有人说:Well, the memory requirement of using O/R Mapping is very different depending upon product.

    (20:27:14)JimmyNilsson_384与所有人说:But lets talk a little bit about how it is regarding NHibernate.

    (20:27:27)JimmyNilsson_384与所有人说:So we become concrete. :-)

    (20:27:54)JimmyNilsson_384与所有人说:One problem regarding memory and NHibernate is how detecting dirty objects are dealt with.

    (20:28:20)JimmyNilsson_384与所有人说:When you read an object from the database, a snapshot of that object will be stored and then used

    (20:28:34)JimmyNilsson_384与所有人说:...when it's time for Flush().

    (20:28:48)JimmyNilsson_384与所有人说:So at Flush() the snapshot will be compared to the current object in memory. Different?

    (20:29:12)JimmyNilsson_384与所有人说:That basically means that the memory consumption became double of the loaded objects...

    (20:29:24)JimmyNilsson_384与所有人说:But as always, there are solutions to that of course.

    (20:29:49)JimmyNilsson_384与所有人说:For example, if you know that you aren't going to update the instance, you can take it out from the

    (20:30:04)JimmyNilsson_384与所有人说:Identity Map of the session-object and therefore the snapshot will be gone.

    (20:30:20)JimmyNilsson_384与所有人说:That was just one of very many aspects regarding memory consumption of course.

    (20:30:41)JimmyNilsson_384与所有人说:I think the answer to your question is that if you have millions of users of your application, that

    (20:31:00)JimmyNilsson_384与所有人说:might be a situation when you don't consider it too expensive to choose a more explicit or hand-

    (20:31:33)JimmyNilsson_384与所有人说:written solution. But again, if you give it a try with a simulation and it works, fine, then you

    (20:31:34)JimmyNilsson_384与所有人说:are happy. :-)

    (20:32:50)*umlchina2与JimmyNilsson_384说:Is there any good practice in the extract and orgnization domin pattern?

    (20:33:07)*umlchina2与JimmyNilsson_384说:Would you please provide us some good advice on maitaining the model integrity?

    (20:33:30)JimmyNilsson_384与所有人说:Q: "Is there any good practice in the extract and orgnization domin pattern?"

    (20:34:02)*umlchina2与JimmyNilsson_384说:How many client side would be supported by O/R Mapping, and how it controls its memory access?

    (20:34:23)JimmyNilsson_384与所有人说:Let's see if I understood the question correctly.

    (20:34:29)wxohyer与所有人说:Sometimes, object entitis is not map of table. how to deal with use Hibernate

    (20:34:53)JimmyNilsson_384与所有人说:I would recommend books such as the one I mentioned before about Archetype Patterns.

    (20:35:02)JimmyNilsson_384与所有人说:And Analysis Patterns from Martin Fowler.

    (20:35:39)JimmyNilsson_384与所有人说:But you can and should also read books that aren't from the IT field, but about the domain at hand.

    (20:35:42)JimmyNilsson_384与所有人说:That will help you a lot with organizing the domain logic!

    (20:36:07)JimmyNilsson_384与所有人说:Q: "Sometimes, object entitis is not map of table. how to deal with use Hibernate"

    (20:36:11)JimmyNilsson_384与所有人说:Yet another very good question! :-)

    (20:36:16)JimmyNilsson_384与所有人说:True, very true.

    (20:36:52)JimmyNilsson_384与所有人说:The thing about NHibernate is more to be considered for situations when you have to.

    (20:37:07)JimmyNilsson_384与所有人说:If you don't need to persist your objects, then you should just be glad! :-)

    (20:37:22)JimmyNilsson_384与所有人说:And then NHibernate won't come in to play.

    (20:37:51)JimmyNilsson_384与所有人说:So O/R Mapping can actually be considered a necessary evil. :-)

    (20:37:52)JimmyNilsson_384与所有人说:Please let me know if I misunderstood the question!

    (20:38:31)wxohyer与所有人说:I use IBatisNet ,but I don't think it's very good

    (20:38:47)JimmyNilsson_384与所有人说:OK! What is causing you problems?

    (20:39:15)wxohyer与所有人说:It's not agility

    (20:39:23)JimmyNilsson_384与所有人说:As a matter of fact, that reminds me that I should clearly state that O/R Mappers aren't a silver

    (20:39:28)JimmyNilsson_384与所有人说:bullet!

    (20:39:56)JimmyNilsson_384与所有人说:You mean that you have to think too much about implementation details up front?

    (20:39:59)wxohyer与所有人说:yeah

    (20:40:45)JimmyNilsson_384与所有人说:OK. Unfortunately I don't have much experience at all with iBATIS, but I think it especially shines

    (20:40:55)JimmyNilsson_384与所有人说:when you have a database you have to use.

    (20:40:57)JimmyNilsson_384与所有人说:Do you agree?

    (20:41:16)wxohyer与所有人说:yes

    系统: “*umlchina2”尚未打开语音或处于双工语音状态。

    (20:41:44)wxohyer与所有人说:It's not allow me to change the database

    (20:41:58)JimmyNilsson_384与所有人说:agile.

    (20:42:18)JimmyNilsson_384与所有人说:Oops, one sentence disappeared. :-) I'll try again.

    (20:42:34)JimmyNilsson_384与所有人说:Yep, so it's more the situation itself that causes you the problem, isn't it?

    (20:42:56)JimmyNilsson_384与所有人说:It's definitely problematic if you aren't allowed to change the database...

    (20:43:04)wxohyer与所有人说:So I use iBATIS to constructor my object

    (20:43:06)JimmyNilsson_384与所有人说:But it's not uncommon... :-(

    (20:43:56)JimmyNilsson_384与所有人说:Do you see another approach for your current sitaution that would have been better than using...

    (20:43:59)JimmyNilsson_384与所有人说:iBATIS?

    (20:44:25)JimmyNilsson_384与所有人说:(I'm definitely saying that iBATIS is right or wrong for you, I'm just curious.)

    (20:44:58)wxohyer与所有人说:It's agility than Hibernate

    (20:45:38)wxohyer与所有人说:now I'm doing a oil' project

    (20:45:43)JimmyNilsson_384与所有人说:It's better supporting agility than Hibernate for your specific situation?

    (20:46:46)JimmyNilsson_384与所有人说:I *think* iBATIS is best when you have to adopt to an old database.

    (20:46:59)JimmyNilsson_384与所有人说:And/or when you want to have much control over the database access code.

    (20:47:45)JimmyNilsson_384与所有人说:NHibernate is a bit more magical... And might be a better fit if you start from scratch.

    (20:48:21)wxohyer与所有人说:iBATIS can constructor a object from many table or database

    (20:49:10)JimmyNilsson_384与所有人说:Yep, NHibernate can too, but it quickly becomes troublesome...

    (20:49:23)JimmyNilsson_384与所有人说:It's easiest if the database and the object model are as "similar" as possible.

    (20:49:40)JimmyNilsson_384与所有人说:Otherwise you will put too much energy into just that piece of the whole solution.

    (20:51:14)*umlchina2与所有人说:大家有问题请抓紧时间问,快到时间了,谢谢?!

    (20:52:14)JimmyNilsson_384与所有人说:Q: "Any big projects built with DDD?"

    (20:52:15)*umlchina2与JimmyNilsson_384说:Is there any large scale project successful story on the application of DDD methodology?

    (20:52:36)JimmyNilsson_384与所有人说:I'm afraid I don't know about any REALLY large such projects...

    (20:53:12)JimmyNilsson_384与所有人说:But in Eric Evans book (Domain-Driven Design) he spends a lot of time talking about patterns for

    (20:53:41)JimmyNilsson_384与所有人说:such situations also. How to design the larger pieces so to say.

    (20:54:04)JimmyNilsson_384与所有人说:I can't say I see why DDD wouldn't work out for really large projects as well...

    (20:54:22)JimmyNilsson_384与所有人说:As long as you are very aware about the reality regarding implementation requirements.

    (20:54:41)JimmyNilsson_384与所有人说:For example, if you find that an O/R Mapper will be too costly performancewise, then you have to

    (20:54:44)JimmyNilsson_384与所有人说:choose another solution.

    (20:55:05)JimmyNilsson_384与所有人说:But an O/R Mapper isn't at all a requirement for DDD... On the contrary.

    (20:55:25)JimmyNilsson_384与所有人说:It's just a tool for helping you with the implementation, if it's suitable.

    (20:55:59)JimmyNilsson_384与所有人说:So, really understanding the problem and creating a maintainable solution, I think that are goals

    (20:56:18)JimmyNilsson_384与所有人说:of DDD and that is definitely extremely important for REALLY large applications as well. Perhaps

    (20:56:25)JimmyNilsson_384与所有人说:just more important than for small applications. :-)

    (20:56:26)*umlchina2与*wonderqi说:Do you agree? :)

    (20:56:53)wxohyer与所有人说:yes

    (20:58:06)*wonderqi与[*umlchina_seminar]说:如果你有一个成功的案例,那么你说服你的boss会很有把握,呵呵

    (20:58:16)wxohyer与所有人说:能不能讲讲如何抽取领域模型

    (20:58:39)*umlchina2与所有人说:对不起 时间到了,专家要下线了. 谢谢大家!

    (20:58:49)*wonderqi与[*umlchina_seminar]说:agree, please talk about how to exact domain model

    (20:59:29)*umlchina2与JimmyNilsson_384说:so. can you answer the last question as above?

    (20:59:47)*umlchina2与JimmyNilsson_384说:talk someting about exact domain model

    (21:00:35)*umlchina2与JimmyNilsson_384说:可能他看不到这些问题了.谢谢大家,我们今天到这里结束了.bye bye!

    (21:01:02)*wonderqi与所有人说:谢谢 umlchina :)

    (21:01:18)*umlchina2与*wonderqi说:也谢谢你提问题!

    (21:01:26)*umlchina2与*wonderqi说:bye!

    (21:01:29)wxohyer与所有人说:bye :)

    (21:01:42)JimmyNilsson_384与所有人说:Bye! And thanks for talking to me! :-)


    展开全文
  •  如果开发环境拥有大量基于记录集的工具(.NetVS),可以选择表模块;  开发小组经验丰富时,选择领域模型;  3种模式并不互相排斥,可以同时使用 2. 服务层:  1)服务层是从领域层分离出来的,用于置于...
  • 企业应用架构模式》(POEAA)读书笔记 (1) -- 企业应用的特点 《企业应用架构模式》(POEAA)读书笔记 (2)-- 表述 领域逻辑模式分为 事物脚本、领域模型、表模块服务层四种模式  很多设计者喜欢把业务...
  • 大多数业务应用都可以被看做是一系列的事务。一个事务可能将某种信息看做是以特定方式组织的,然后另一事务则会改变它。在客户系统服务器系统之间的每次 交互都包含一定数量的逻辑。 事务脚本将所有这些逻辑...
  • martin fowler老爷子的《企业应用架构模式》一书在江湖上流传已久,在十几年前就企业应用中的典型场景及设计模式进行了思考总结,可以看到书中提及的常用模式在如今流行的企业应用框架中已经落地。近日拜读,受益...
  • 1. 事务脚本  1)调用数据库:事务脚本将所有逻辑...  3)运行机制:  事务脚本应该置于与其他处理表现层数据源层的类相独立的类中,把事务脚本组织成类的两种方法:  a. 将数个事务脚本放在一个类中,每...
  • 1. 事务脚本 1)调用数据库: ...事务脚本应该置于与其他处理表现层数据源层的类相独立的类中,把事务脚本组织成类的两种方法: a. 将数个事务脚本放在一个类中,每个类围绕一个主题将相关的事务脚本组...
  • 领域逻辑的组织可以分为三种主要的模式: 1.事务脚本 2.领域模型 3.表模块 保存领域逻辑最简单的方法是使用事务脚本。简单的说,事务脚本是这样一个过程:从表示层获取输入,进行校验计算处理,将数据存储到...
  • 1. 模型抉择: 1)领域逻辑复杂度: ...    3种模式并不互相排斥,可以同时使用 2. 服务层:   1)服务层是从领域层分离出来的,用于置于底层的领域模型或表模块之上   2)服务层用于放置事物控制安全等...
  • 领域逻辑的组织可以分为三种主要的模式:事务脚本、领域模型、表模块。1.事务脚本:事件驱动的处理过程。根据用户界面操作、外部调用动作,从表示层获取输入,进行验证计算,将数据存储到数据库或数据文件中的处理...
  • 引言在讨论DDD分层架构模式之前,我们先一起回顾一下DDD分层架构的相关知识。DDDDDD(Domain Driven Design,领域驱动设计)作为一种软件开发方法,它可以帮助我们设计高质量的软件模型。在正确实现的情况下,我们...
  • 企业应用中层次的演化 1.在表现层实现用户界面 2.在领域层实现领域逻辑 3.在数据源层存取数据  第二章 组织领域逻辑 领域逻辑的组织分为三种主要的模式: 1. 事务脚本  从表示层获得输入,进行校验计算...
  • 架构 架构的定义 最高层次的系统分解. ...虽然部分模式适合于所有软件,但是大多数模式仅适合于某些特定领域和分支. 特征 持久化数据. 程序多次运行都需要这些数据. 数据的生命周期可能比软件...
  • 读 《企业应用架构模式》7 过程 VS...面向过程:一只无形的手,包揽全部处理,责任分层不是不可能,只是有些难,选择的动机就是简单高效,就像《企业应用架构模式》里讲组织领域逻辑选择“transaction script”的时机
  • 企业应用架构模式之Web表现模式

    千次阅读 2012-10-29 09:38:13
    模型表示领域信息对象;视图表示UI中模型的显示;控制器获得用户输入,对模型进行操作并更新视图。 MVC关注两个分离:从模型中分离表现从视图中分离控制器。 (2)页面控制器:在Web站点上为特定页面或者动作...
  • 第二章:管理领域逻辑 三个主要的模式:Transaction Script,Domain Model,Table Model 最简单的方法是使用Transaction Script,Transaction Script本质上就是从表现层接受输入,进行验证计算,保存进数据库,调用...
  • 模型:一个表示领域信息的对象,它是一个不可见对象,包括除了用于UI的那部分数据行为之外的所有的数据行为。在纯面向对象的概念里,模型是 领域模型中的一个对象。视图表示UI中模型的显示。因此,加入我们的...
  • 架构模式要解决的问题是驱动领域逻辑访问数据库的方式。 把sql访问从领域逻辑中分离出来,并把它放到独立的类中,是明智之举。有一种方法能很好的组织这些类:让它们以数据库中的表结构为基础,这样,每一个数据库...
  • 读《企业应用架构模式》8 在一起 Author:zfive5(zhaozidong) Email:zfive5@163.com 晚上吃完饭,又开始读,在这本书中有一个观点---领域逻辑最好不要在客户端服务器都存在,这种选择让我们不知道新的...
  • 三个基本层次:表现层、领域层、数据源层 层次 职责 表现层 ... 领域层 ...与数据库,消息系统、事务管理器及其他...关于依赖性的普遍性原则:领域数据源层绝对不要依赖于表现层。 一旦选择了处理节点,接下来就...
  • 很好的一本书,看了前两章。大多数内容都能理解,只是有两个概念...下面是前两章的读书笔记: 企业应用架构模式 引言 1)构架 最高层次的系统分解 系统中不易改变的决定 层次 大多数企业应用都是按照某种形式的层次...
  • 1. 从领域层开始  1)事务脚本模式最简单,适合于在关系数据库之上构建;领域模型需要非常专业的技术,还有鱼数据库的连接;表模块模式折中,在.Net这类有非常强大记录集支持的环境非常合适  2)理论上,可以根据...
  • 思考三个方面的技术实践:持续集成、驱动测试开发重构 1. 从领域层开始 1)事务脚本模式最简单,适合于在关系数据库之上构建;领域模型需要非常专业的技术,还有鱼...可供选择的数据库模式为:行数据入口表数据...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 499
精华内容 199
关键字:

企业应用架构模式和领域