文章分类 -  系统架构

摘要:1.以业务独立性为边界,把模块切割为多个子组件。切割为多个子组件是一种极有效地降低业务复杂度的方法。其实从编程方面看来,切割子组件会增加编码的工作量——我们需要额外写代码让组件之间通讯;但从业务实现的角度来说,切割子组件是值得的——虽然编码的工作量提高了,但(切割之后)每个子业务的复杂性是有限的,比较容易实现——如果你觉得仍然不好实现,那么继续切割,直到业务逻辑单元的粒度达到能够把握的程度。也就是说,虽然无论我们如何切割,系统的业务逻辑的复杂度总量并没有减少,但复杂度却分散到了各个子组件中。我们一次性搬不走万斤大石,但我们可以切成100斤的小块带走。同时减小业务逻辑单元的粒度也利于重构。千头万 阅读全文
posted @ 2011-07-03 21:05 深圳大漠 阅读(438) 评论(0) 推荐(0) 编辑
摘要:为什么会有DTO?我认为DTO的出现,是因为Domain Model(领域模型)与Presentation的脱节。当领域模型设计人员只关注核心业务,满足于领域模型的精巧,而不关心具体实现的时候,DTO就会大量出现。在.net平台下,DTO的出现还有另一个原因:.net下大量地使用“数据绑定”功能,能够方便地以可视化的方式把数据与界面绑定起来。但数据绑定只能是一维结构(一级属... 阅读全文
posted @ 2010-11-10 20:30 深圳大漠 阅读(2886) 评论(1) 推荐(1) 编辑
摘要:总线(Bus)概述注意,本文仅仅是一点“遐想”,没有经过任何实证,也不能保证内容是正确的,请注意甄别。1什么是总线?总线有很多种,比如企业服务总线(ESB)、消息总线(MessageBus)、数据总线(Data Bus)等。总线,可以从英文字面bus上来意会,从中文字面上反而不好意会。总线就像一条公路,上面跑着一辆辆的汽车,每辆汽车都是代表了一个对象(业务对象、消息对象、数... 阅读全文
posted @ 2010-06-30 10:56 深圳大漠 阅读(1940) 评论(0) 推荐(0) 编辑
摘要:XAF是一个类似Naked Objects的框架,它的目的是想让开发人员把精力集中到业务逻辑的实现上,而不用关心界面设计。XAF采用了MVC模式。Module层与持久层XPO紧密结合在一起(必须从XPO的基类继承),无法自由替换ORM(XPO);Module层为了“智能”显示到View层,更是自定义了大量的Attribute,这使得Presentation“污染... 阅读全文
posted @ 2010-03-15 09:05 深圳大漠 阅读(347) 评论(0) 推荐(0) 编辑
摘要:POCO有以下优点:1、不从任何第三方继承,可以随心所欲地使用设计模式;2、没有第三方框架的侵入,移植和重用都很方便;3、利于单元测试;4、我讨厌DTO、DO、VO,觉得它们是重复劳动,POCO让Domain Object贯穿到底;POCO也有缺点:1、需要一个强大的ORM框架来支持,这个框架不但自动无缝支持Domain Object <--> Persistant Object(不支... 阅读全文
posted @ 2010-01-07 09:56 深圳大漠 阅读(1465) 评论(0) 推荐(1) 编辑
摘要:Open Session In View1. Lazy Load和Session为了效率和资源,NHibernate增加了Lazy Load(延迟加载)机制,即数据只有真正使用的时候才去数据库读取。而NHibernate读取数据是依赖Session的,数据库连接由Session管理,当Session关闭的时候数据库连接也会自动关闭。 Web架构下的Session管理Web架构下(JSP、ASP.N... 阅读全文
posted @ 2009-11-05 14:57 深圳大漠 阅读(955) 评论(0) 推荐(1) 编辑
摘要:PEAA笔记1. Transaction Script 21.1. What is it 21.2. How it works 21.3. When to use it 22. Domain Model 32.1. What is it 32.2. How it work. 32.3. When to use it 32.4. 和Transaction Script的区别... 33. Table... 阅读全文
posted @ 2009-10-30 08:38 深圳大漠 阅读(343) 评论(0) 推荐(2) 编辑
摘要: 阅读全文
posted @ 2009-10-08 14:32 深圳大漠 阅读(471) 评论(0) 推荐(0) 编辑
摘要:对于调用者(比如Controller层)来说,Façade与Service没什么区别,都是业务逻辑的调用入口。但实现机制上来说,Façade与Service是有差别的。Façade是很“薄”的一层,它本身并不实现业务逻辑,它只是负责根据外界的请求调用对应的业务逻辑类。相对Façade,Service是很“厚”的... 阅读全文
posted @ 2009-09-10 00:36 深圳大漠 阅读(1712) 评论(0) 推荐(0) 编辑
摘要:委托是粒度更细的接口接口(interface)是面向类(class)的,而委托(delegate)是面向方法(method)和属性(property)。接口必须应用在类上面,而委托却是应用在方法和属性上。当方法的参数是委托类型时,因为匿名委托的存在,使得调用更简便——这个时候方法就是属性,直接赋值给参数即可。委托使得“外界约束∕外界契约”... 阅读全文
posted @ 2009-09-10 00:03 深圳大漠 阅读(160) 评论(0) 推荐(0) 编辑
摘要:权限模型设计本权限模型是基于RBAC1模型。RBAC1的特点是Role可以继承,本权限模型仅使用了RBAC1的“受限继承关系”,即Role的继承关系是一个树结构,不允许多继承。1. IUserIUser是用户。这里的用户是指广义上的用户,不但包括员工,也包括用户组、职位等,它代表角色拥有者。2. IRoleIRole是角色。角色的作用是隔离用户和资源,避免资源直接耦合用户。2.1. IAdminRoleIAdminRole是有管理权限的角色。这类角色可以新建子角色,并且可以在本身的权限范围内给子角色分配资源。此类角色一般是分配给部门主管使用。2.2. IGeneralRoleIGeneralR 阅读全文
posted @ 2009-08-01 11:40 深圳大漠 阅读(8552) 评论(1) 推荐(6) 编辑
摘要:本文的核心思想来自用代理模式解决胀血模型的弊端,只是结合了POCO模式而已用DynamicProxy实现POCO ActiveRecord1. POCO1.1. 什么是POCOPOCO的概念是从java的POJO((Plain Old Java Objects))借鉴而来,两者的原理是一致的。POJO的由来是EJB的复杂,java的开发者就诞生了POJO。POCO是指简单C#对象(Plain Ol... 阅读全文
posted @ 2009-08-01 11:30 深圳大漠 阅读(749) 评论(0) 推荐(0) 编辑
摘要:从类模型转换到数据库表结构的思考Aaron从类模型转换到数据库表结构,或者说从UML类图转换为ER图,这个功能并不实用。为什麽呢?如果你的类模型能够完整地转换为表结构(每一个表都能找到与之相关的类,如果类之间是多对多关系,那么会增加一个中间表),那么说明你的类图是不完整的,它们仅仅抽象了领域模型的数据资源,并没有抽象出领域模型的业务行为,因为表结构只能描述静态资源,不能描述业务行为。也就是说,你的类模型是“失血模型”。我们这里不讨论“失血模型”与“充血模型”的优缺点,有兴趣的朋友可自己去javaeye上搜索。当然,你也可以认为,即使使用了充血模型,仍然可以从类模型映射为表结构。但从实际情况来看 阅读全文
posted @ 2009-02-04 23:22 深圳大漠 阅读(2610) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示