浅谈Asp_net中使用“充血模型

浅谈Asp_net中使用“充血模型

ID:46856556

大小:54.00 KB

页数:7页

时间:2019-11-28

浅谈Asp_net中使用“充血模型_第1页
浅谈Asp_net中使用“充血模型_第2页
浅谈Asp_net中使用“充血模型_第3页
浅谈Asp_net中使用“充血模型_第4页
浅谈Asp_net中使用“充血模型_第5页
资源描述:

《浅谈Asp_net中使用“充血模型》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、浅谈Asp.net中使用“充血模型”好的软件都要有架构模式,软件开发行业发展到今天,估计每个开发人员或多或少都接触过架构模式、设计模式,我们公司也不例外,我们公司的项冃主要使用微软的Asp.net做基于B/S结构Web应用开发。一般的软件我们都采用“事务脚本”架构模式,到具体的面向对象代码结构组织时进行分层,再根据不同需要采用工厂、抽象工厂、原型等设计模式o相信这种模式很多开发人员都有接触过,将Model、DAL>BLL各层分开设计,最后在UI后台aspx.cs或aspx.vb中进行调用,这样使得代码结构很清晰,维护和扩展起来非常方便,比如:我现在想把开发

2、好的软件数据库由MSSQL换成Oracle,我直接修改DAL层即可,如果釆用了工厂设计模式,甚至不需要改任何类代码就可以适配不同数据库。虽然上述设计已经略显便捷,但整体架构过于繁琐、领域对象非常空洞、业务逻辑变得沉重、且不够面向对象,也因而被国际著名的面向对象专家MartinFowler称之为"贫血模型”,同时也与之对应的有“充血模型”,从字面上看就应该优于“贫血模型”,那么什么是“充血模型”呢?它和“贫血模型”有什么区分呢?贫血模型:上面的“事务脚本”架构模式的举例就是。在领域对象里只有get/set属性,所有的业务逻辑都不包含在内而是放在业务逻辑层,所

3、有的CRUD放在数据持久层。优点是系统的层次结构清楚,各层之间单向依赖。缺点是不够面向对象,领域对象只是作为保存状态或者传递状态使用,领域对象中没有行为动作,要增加扩展一些行为动作要一层一层去写,所以被称为“贫血模型”,相信做过几年开发的同胞都能理解。充血模型:符合“活动记录”架构模式。领域对象里面包含get/set.业务逻辑、数据持久化等一切属性和行为动作,业务逻辑层可以没有(如果有需要也可以封装部分控制事务、权限等放在业务逻辑层)。缺点是如何再划分业务逻辑层比较模糊。优点是结构更加轻量化,扩展更加简洁灵活,特别适合Web快速开发,且更加面向对象:如同一

4、个人,既有眼睛、鼻子、嘴巴、耳朵、眉毛、四肢……等属性同时也有行、处、卧、立、跑、跳、蹲……等行为动作,所以被称为“充血模型”。“充血模型”设计具体要求:(1)每一个数据库表对应创建一个类,类的每一个对象实例对应于数据库中表的一行记录,通常表的每个字段在类中都有相应的Fieldo(2)领域对象同事封装了业务逻辑。(3)领域对象同时负责数据持久化,在其中封装对数据库的访问的CRUD行为。这样的设计结构与数据库耦合更加紧密。下面以我们公司开发的一套“龙腾政府投资工程项目管理系统”项目为例做一介绍。这个项目中有个“项目基本信息管理”模块,需求是:录入项目名称、项

5、目码、项目分类、占地面积、建设地址……等属性,同吋有项目添加、修改、删除、查询、导出等动作。MSSQL数据库中有一张表XiangMu,结构如下:WIN-K3RAEM43DEE...-dbo.XiangMu列名数据类型允诈空IDkit□MingChengvarchar(200)BianMavarchar(50)匣1FinLEivarchar(50)匣1MianJikit匣1DiZhivarchar(200)匣1FuZeRenvarchar(50)匣1ShiJiandatetime匣1TianJiaRenvarchar(50)匣1VisualStudio中Ap

6、pCode结构如下:丄EApp_Code丄&Entities53XiangMu.es丄&Utils宀DataBaseExtension.esc#ExcelRender.esc#SMSMessage.esEntities冃录中放置了所有的实体类(领域对象),每张数据表对应一个类oUtils冃录下放置了一些公共类,女Ch数据库公共方法、Excel导入导出公共方法、短信发送公共方法等。领域对象XiangMu类中的具体代码结构如下:usingSystem;usingSystem.Collections.Generic;usingSystem.Data;usingS

7、ystem.Data.Common;namespaceCormin{III

///项冃基本信息IIIpublicclassXiangMuIll///唯一标识IIIpublicintID{get;set;}III///项冃名称IIIpublicstringMingCheng{get;set;}IIIvsummary〉///项目码IIIpublicstringBianMa{get;set;}III///项目分类I

8、II

publicstringFenLei{ge

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。