设为首页  
联系我们  
加入收藏  
网页制作 冲浪宝典 图形图像 操作系统 软件教学 编程开发 认证考试 安全技术 站长专区 文学驿站 娱乐天地 游戏天地 办公软件
文章搜索
您的位置: 首页 >> 文章首页 >> 软件教学 >> 编程开发 >> 面向对象的应用服务层设计
精品推荐
编程开发点击TOP10
·Java进阶:JNI使用技巧点滴
·专家手把手教你安装MYSQL数据库
·e书工场--制造电子书全攻略
·删除流氓的SQL Server2005
·我的第一个VB程序--“跟我来学VB神童教程”
·Authorware自制拼图游戏
·使用Quick CHM软件轻松编译CHM格式的文件
·DIY自己常用的软件eXeScope
·用Authorware制作自检测在线答题系统
·精细讲述SQL Server数据库备份多种方法
软件教学点击TOP10
·自己动手制作USB启动盘快速简单
·学用金山游侠修改游戏
·几百个软件注册机
·常用软件序列号
·用eBook Edit 自己动手制作exe型电子书
·应用软件注册码大全(最新整理) 1
·Windows Media Player同步歌词秀全攻略
·五分钟玩转电脑迷共享空间
·冰点还原(DeepFreeze)使用帮助
·液晶显示器测试小工具--Monitors Matter CheckScreen
精选专题

面向对象的应用服务层设计

作者: 来源:网络文章 时间:2005-12-13 15:04:16

面向对象的应用服务层设计(6)
例如,Customer类的数据存取类可以定义如下:

public class CustomerEntityDAO:AbstractSingleTableDAO



然后,就可以在代码中这么使用:

Customer customer=......
using(CustomerEntityDAO CDO=new CustomerEntityDAO())
{
CDO.UpdateEntity(customer);
}



更加一般的,Wensharp也提供了PersistenceManager类,可以用于将EntityData中的数据存入数据库。这个类包含了两个方法:PersistEntity和DeleteEntity。如果不想为某个实体类编写专门的DAO类,那么,也可以使用这个类来操纵实体对象。不过,目前,只支持映射成单个表的对象的自动存贮。下面是一个例子:

PersistenceManager pm=PersistenceManager.Initial();
pm. PersistEntity(entity);



为了封装不同数据库的操作,统一的数据库访问接口是必须的。关于编写通用数据库访问类的内容,可以参见拙作:《 使用设计模式构建通用数据库访问类》。

在这个部分,另外需要注意的是,为了保证数据存储的完整性,应当考虑事务处理的功能。J2EE、JDO和Websharp都支持在数据存储的时候使用事务处理。

业务逻辑的处理

有了上面的工作,我们就可以把这些对象组合起来,编写我们的业务逻辑。在面向对象的系统中,业务逻辑表现为对象之间的交互。在一些简单的系统中,没有复杂的业务逻辑,只是一些数据的维护工作,那么,有了上面两个部分的工作,我们实际上可能已经忘成了大部分的工作。

在这个部分,由于不同系统之间业务逻辑千差万别,基本上没有办法提供统一的模式。但是,应当注意的是,在同一个系统中,采用基本一致的策略是非常必要的,这有助于消除项目内部的不一致性,使项目更加可控。甚至于,这些策略可以扩展成公司部分、甚至所有项目的策略。

值得指出的是,很多人在这个部分操纵数据库,把业务逻辑处理等同于数据库操作,这是不可取的。在业务逻辑处理中,处理的应该是对象,而不是直接同数据库打交道,这样,才能获得更好的系统结构。

在业务逻辑处理部分,由框架提供一些支撑的服务是非常必要的。这其中,最重要的一点就是事务的处理。业务逻辑的处理过程,会涉及到多个对象之间的交互,以及多次同数据库的交互。为了保证处理过程的完整性,必须使用事务处理的方法。框架必须支持事务处理。

事务处理的功能,基本上有两种选择:使用基于数据库连接的事务、使用外部事物处理服务。

使用基于数据库连接的事务,事务处理的性能相对比较高,但是,当系统涉及到多个数据库之间的交互时,基于数据库连接的事务便无能为力了。而使用专用的事务处理服务,能够适应更多的情况,并且,有测试表明,随着数据处理量的上升,两者之间的性能差异会逐渐减小。

在J2EE中,容器提供了事务处理的能力。在.Net平台上,事务处理是通过Windows COM+服务来提供的。在Websharp中,对COM+服务做了一个简单的封装。同时,也能够使用基于数据库连接的事务。

下面是一个简单的例子,表示了一张入库单入库的过程,在这个过程中,需要修改入库单上每种产品的现有库存量:

public void StoreIntoWarehouse(EntityData insertForm)
{
insertForm.SetCurrentTable("FormDetail");
TransactionManager transManager=new TransactionManager();
ProductEntityDAO productDAO=new ProductEntityDAO(true);

共8页 9 7 [1] [2] [3] [4] [5] [6] [7] [88 :>

面向对象的应用服务层设计 相关文章:
面向对象的应用服务层设计 相关软件:
特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
转载请注明来源:http://www.xgdown.com