随笔分类 -  架构模式基础

摘要:一:表数据入口(Table Data Gateway)表数据入口提供了用于访问单个表或者视图(也包含了联表查询)的所有SQL,通常一个表一个类。其它代码通过它来实现对数据库的交互。基于这个特点,表数据入口和事务脚本代码以及表模块结合的很好。在查询时候,表数据接口可以返回数据集 或者 DTO 或者 D... 阅读全文
posted @ 2014-09-18 09:14 陆敏技 阅读(2099) 评论(0) 推荐(0) 编辑
摘要:一:面向对象设计中最简单的部分与最难的部分如果说事务脚本是 面向过程 的,那么领域模型就是 面向对象 的。面向对象的一个很重要的点就是:“把事情交给最适合的类去做”,即:“你得在一个个领域类之间跳转,才能找出他们如何交互”,Martin Flower 说这是面向对象中最难的部分,这具有误导的成份。确... 阅读全文
posted @ 2014-08-15 09:18 陆敏技 阅读(60905) 评论(53) 推荐(13) 编辑
摘要:看到一些工作单元的介绍,有两种感觉,第一种是很学院,说了等于没说,我估计很多都是没有自己引入到实际的项目中去,第二种是告诉我一种结果,说这就是工作单元,但是没说为什么要这么使用。所以,本篇想要探讨的是:为什么工作单元要这么用。首先,要想将工作单元引入到自己的项目中去,急需要解决的一个问题是:工作单元的生命周期,即: 1:工作单元被谁创建,何时消亡? 2:工作单元被谁们持有? 3:工作单元的 4 个... 阅读全文
posted @ 2014-08-14 10:01 陆敏技 阅读(5093) 评论(0) 推荐(0) 编辑
摘要:表模块和领域模型比,有两个显著区别:1:表模块中的类和数据库表基本一一对应,而领域模型则无此要求;2:表模块中的类的对象处理表中的所有记录,而领域模型的一个对象代表表中的一行记录;一般情况下,我们可以基于第二点来严格区分你的设计是表模块的,还是领域模型的。如:如果我们有许多订单,则领域模型的每一个订... 阅读全文
posted @ 2014-08-13 14:26 陆敏技 阅读(1378) 评论(0) 推荐(0) 编辑
摘要:一:数据映射器关系型数据库用来存储数据和关系,对象则可以处理业务逻辑,所以,要把数据本身和业务逻辑糅杂到一个对象中,我们要么使用 活动记录,要么把两者分开,通过数据映射器把两者关联起来。数据映射器是分离内存对象和数据库的中间软件层,下面这个时序图描述了这个中间软件层的概念:在这个时序图中,我们还看到... 阅读全文
posted @ 2014-08-13 10:37 陆敏技 阅读(5242) 评论(7) 推荐(2) 编辑
摘要:一:标识域(Identity Field) 标识域(Identity Field)可以理解为主键。使用领域模型和行数据入口的时候,就要使用标识域,因为这两个对象代表的是唯一存在的那个数据记录。事务脚本、表模块、表数据入口等就不需要这个映射。 public abstract class DomainObj{ public string Id {get; set;} public string ... 阅读全文
posted @ 2014-08-13 10:02 陆敏技 阅读(1621) 评论(0) 推荐(0) 编辑
摘要:在编码中,我们常常会碰到一个概念:上下文,如 线程上线文(Thread.CurrentContext),Http上下文(HttpContext.Current)等,那么上下文到底是什么,它们存在的意义是什么?一:上下文1:来源可能无从追溯,但是早期 上下文 这个概念,可能来自于 CPU时间片 的切换... 阅读全文
posted @ 2014-06-30 16:25 陆敏技 阅读(1323) 评论(0) 推荐(0) 编辑
摘要:这里的实体类更倾向于数据传输对象(既DTO)。无论是编码风格采用 事务脚本 还是 领域模型,我们都会遇到各种各样的数据传输对象,尤其是传统事务脚本三层架构的编码中,更会遇到各类实体对象,一般来说,这些实体对象产生的原因如下:1:为各类报表和查询服务的联表查询,会导致字段变多,带来的实体的属性增多。怎... 阅读全文
posted @ 2014-06-17 20:14 陆敏技 阅读(2173) 评论(13) 推荐(7) 编辑
摘要:最近在公司内部做技术交流的时候,说起技能提升的问题,调研大家想要培训什么,结果大出我意料,很多人想要培训:面向对象编码。于是我抛出一个问题:你觉得我们现在的代码是面向对象的吗?有人回答:是,有人回答否。我对这个问题的回答是:语法上,是了,但是架构上或者思想上,不是。我们现在的大部分代码,如果要死扣一... 阅读全文
posted @ 2014-05-23 13:17 陆敏技 阅读(6216) 评论(34) 推荐(6) 编辑
摘要:一:频繁出现的代码可以使用委托类型的 AOP类似以下代码在控制器中(在Domain中也有若干)重复出现:try { if (!string.IsNullOrEmpty(categoryId)) { var model = new ExerciseCategory(); model.ParentId = parentId; this._exerciseCategoryDal.Update(model); } } catch { return 0; }r... 阅读全文
posted @ 2014-02-19 13:22 陆敏技 阅读(1001) 评论(0) 推荐(0) 编辑
摘要:AOP的特性使得它非常适合用来设计类似权限控制的功能,这是本文的基础,如果想要了解AOP的实现,可以参考《动态织入的AOP实现》。 在基于角色的访问控制(RBAC)中,有三要素:用户、角色、任务(或操作)(User、Role、Task),其稳定性逐渐增强,两个关系,User<->Role、Role<->Task,其中: User 是日常管理运行时建立 Role 是部署/交付建立 ... 阅读全文
posted @ 2012-01-13 17:38 陆敏技 阅读(3957) 评论(3) 推荐(3) 编辑

Web Counter
Coupon for Contacts