.Net下基于数据库组件的ORM中间件的设计与实现

2016-09-13 07:25郭亚平马新春
电子设计工程 2016年3期
关键词:中间件开发人员控件

郭亚平,马新春,张 丽

(新疆电子研究所有限公司 新疆 乌鲁木齐 830049)

.Net下基于数据库组件的ORM中间件的设计与实现

郭亚平,马新春,张 丽

(新疆电子研究所有限公司 新疆 乌鲁木齐830049)

文中介绍.Net开发环境下,通过自定义数据库访问控件和对象关系映射技术(Object Relational Mapping,简称ORM)实现的一种全新的数据持久层中间件。该中间件实现数据库表对象到用户UI控件的自动映射,在降低对开发人员数据库开发技术掌握水平要求的同时,大大提高开发效率,使开发人员可以致力于后台逻辑与用户UI设计,为用户带来更好的体验。本中间件通过我公司在新疆维吾尔自治区开发的多个管理信息系统(MIS)的应用与实践,已经验证了其快捷性、稳定性和可伸缩性,能够有效的提高软件开发效率。

.Net;数据库控件;对象关系映射;中间件;管理信息系统

管理信息系统 (Management Information System,MIS)是一个以人为主导,利用计算机硬件、软件、网络通信设备以及其他办公设备,进行信息的收集、传输、加工、储存、更新、拓展和维护的系统[1]。是当前企事业以及政府信息化的一种主流的系统软件模式。在管理信息系统中,通过数据访问层操作数据库实现对信息的存储访问是其最基本而且必不可少的组成部分。用传统的方法开发数据访问层,存在编码工作重复、编码质量不一、代码可移植性差、可重用性低、难以维护等问题。对象关系映射(Object Relational Mapping,ORM)是通过使用描述对象和数据库之间映射的元数据,将应用中的对象自动持久化到关系数据库中,从而可以有效解决上述传统数据访问层存在的问题。目前已有的.Net下的几种ORM中间件解决方案,如Nhibernate、Subsonic、Genome等,分别存在配置使用复杂、灵活性差以及开发价格成本昂贵的缺点。

笔者曾经有过使用 Delphi开发 MIS的经验,对使用Delphi下使用Data Controls组件开发数据库管理信息系统的灵活和便捷深有体会。针对以上问题,笔者认为采用类似于Delphi下数据库控件技术实现ORM持久层不失为一种快捷而且灵活的方案。本文从对数据库管理信息系统的数据访问层一般实现方法的总结和分析出发,介绍和讨论了ORM技术的原理、实现方法和技术优势。在以上理论研究的基础上,本文从用户需求出发,使用组件技术和可扩展接口技术,设计实现了一个.NET平台下的基于ORM技术的跨数据库的数据访问中间件。该中间件以自定义数据库控件接口标准为基础,通过ORM技术屏蔽不同数据库和数据对象间的差异,提供一个通用的数据访问层中间件,实现对用户UI数据与数据库关系数据的自动映射,最大程度的缩减代码编制人员编写数据访问层的代码数量,有效的提高管理信息系统开发过程中的代码编制效率。

1 ORM技术简介

对象关系映射(Object Relational Mapping,ORM)是通过使用描述对象和数据库之间映射的元数据,将数据库应用中的对象自动持久化到关系数据库中。本质上就是将数据从一种形式转换到另外一种形式。

ORM技术是跟随着面向对象的软件开发方法发展而产生的。面向对象的开发方法是当前企业级应用开发环境中的主流开发方法[2]。关系数据库是企业级应用环境中永久存放数据的主流数据存储系统[3]。对象和关系数据是业务实体的两种抽象表现形式,业务实体在内存中表现为对象,在数据库中表现为关系数据。内存中的对象之间存在关联和继承关系,而在关系数据库中,关系数据无法直接表达多对多关联和继承关系。因此,对象-关系映射(ORM)中间件主要用于实现对象到关系数据库关系数据的映射。

实际应用中,我们通过ORM中间件在关系型数据库和业务实体对象之间作一个映射,通过中间件屏蔽不同数据库的差异,这样我们在具体编写应用逻辑的时候,就不需要再去编写复杂的SQL语句,只要通过操作ORM中间件就可以实现对象到关系的持久化任务。从而大大降低对开发人员数据库开发技术掌握水平的要求,提高开发效率。

2 中间件技术

中间件(Middleware)是基础软件的一大类,属于可复用软件的范畴。顾名思义,中间件处于操作系统软件与用户的应用软件的中间[4]。中间件在操作系统、网络和数据库之上,应用软件的下层,总的作用是为处于自己上层的应用软件提供运行与开发的环境,帮助用户灵活、高效地开发和集成复杂的应用软件。

ORM中间件介于底层数据库与上层管理信息系统应用之间,以屏蔽不同数据库之间的差异,支持数据库管理信息系统的开发、运行时共享,保障数据库管理信息系统的可靠部署与管理等内容为主要目标。为数据库管理信息系统提供了快速构建的架构支撑的工具与手段,对于数据库管理信息系统的规范化和标准化具备凝炼作用。中间件结构示意图如图1所示。

图1 中间件功能示意图Fig.1 Middleware function diagram

3 .Net开发环境

.Net是微软的新一代技术平台,为敏捷商务构建互联互通的应用系统,这些系统是基于标准的,联通的,适应变化的,稳定的和高性能的。从技术的角度,一个.NET应用是一个运行于.Net Framework之上的应用程序[5]。

本中间件设计理念全部基于.Net开发平台,属于.Net开发技术在数据库管理信息系统开发方面的应用拓展。本中间件设计理念针对于客户端/服务器(C/S)和浏览器/服务器(B/ S)架构均适用。

4 数据库控件设计概念

文中所述的数据库控件是指满足本中间件所规定的标准数据库接口定义的控件。为充分利用已有的各种控件,本中间件规定了一种标准的数据库控件接口,现有的各类系统控件以及第三方控件通过实现该接口即可成为数据库控件,从而保证本中间件的开放性、兼容性和可扩展性。该接口的主要定义如下:

属性:

1)DBField:控件对应数据到数据库字段的映射。

2)AllowEmpty:是否允许控件为空。

3)DefalutValue:控件为空时候的默认值。

4)ValueType:控件值类型。

5)Format:控件值格式。

6)Caption:控件代表字段的中文含义。

方法:

1)CheckEmpty:检查控件是否空值。

2)CheckFormat:检查控件值格式。

3)GetValue:从控件取值。

4)SetValue:向控件赋值。

5)SetDefaultValue:为控件赋默认值。

事件:

A、TriggerValueChangedEvent:触发控件值改变事件。

数据库控件是本中间件的基础。本中间件通过数据库控件实现数据库数据到用户UI的自动映射,同时自动完成用户UI控件数据到数据库的持久化存储功能,最大化的缩减数据访问层的代码编写量。这里笔者只针对数据库持久化的过程中的一对一模型接口设计做出了说明。一对多模型接口设计类似,在此笔者不再缛述。

5 ORM中间件的设计与实现

5.1ORM中间件的设计目标

ORM中间件的主要目的是提供一个独立的、可复用的数据持久化解决方案[6]。数据库管理信息系统编码人员利用这个中间件通过简单配置和属性设定就可以完成用户UI数据到数据库的持久化工作,而基本不需要了解底层数据库的的任何细节。在降低对开发人员技能掌握要求的同时,使开发人员从传统数据访问层代码编写过程中繁琐的、机械的工作中解脱出来,致力于系统逻辑和用户UI设计,在提高软件开发效率的同时,能够为用户带来更好的用户体验。

5.2ORM中间件功能需求

O/R Maping中间件主要功能特点如下:

1)中间件应忽略不同数据库间的差异,通过定义标准数据库访问接口来提供对不同数据库的扩展支持。

2)中间件应能够根据目标数据库准确的生成标准的增删改sql语句,省去开发人员代码重复编写的麻烦。

3)开发人员通过简单的定义即可完成数据库关系数据到用户界面的映射和采集工作,从而使程序员专注于业务逻辑处理。

4)支持单表、一对一以及一对多表间的数据处理工作,同时支持数据库事务处理,保证不同表数据间的完整性。

5)提供丰富的事件处理接口,便于开发人员应对变化多样的客户端开发要求。

6)以组件、类的多态性和继承性保证中间件的可扩展性和可伸缩性。

5.3ORM中间件结构设计

整个中间件由数据库访问层(Data Access Layer)、持久层(Persistent Layer)和由数据库控件组成的UI设计层组成。如图2所示。

其中数据访问层主要类和接口设计如下:

DatabaseFactory类:数据库工厂类,其主要作用是根据目标数据库的不同产生不同的数据库访问类。

ISqlMaker接口:主要实现自动编写目标数据库的增删改Sql语句。

DbOperator类:调用ISqlMaker结果实现对具体数据表的增删改操作。

图2 中间件结构设计示意图Fig.2 Middleware design schematic

SortedListRow类:Dictionary类数据结构,类似于数据表的行对象,数据表对象以行对象集合SortedListRowCollection的形式展现。

持久层主要类和接口设计如下:

IDBControl接口:数据库控件接口定义标准。

IDBControlsContainer接口:数据库控件容器接口,该接口负责在数据访问层和UI层之间传输数据。

DbTransactionController类:事务处理类,负责多个数据库容器间数据持久化的事务统一性处理工作。

InputHelper类:UI数据有效性检查及数据收集类,主要负责向用户界面的数据控件收集数据以及赋值。

UI层主要包括各种实现了数据库接口定义的系统控件、第三方控件以及自定义控件。

5.4ORM中间件主要类工作流程说明

中间件主要类工作流程如图3所示。

图3 中间件工作流程示意图Fig.3 Middleware work flow diagram

如3图中所示IDBControlsContainer容器接口类调用Input Helper类从符合IDBControl接口的数据库控件获取用户数据,同时进行数据有效性验证,同时调用 DbTransaction Controller类将用户数据封装成为行数据对象SortedListRow及表数据对象 SortedListRowCollection。DbOperator类接收SortedListRow及 SortedListRowCollection类型对象,调用DatabaseFactory类创建目标数据库对象,进而调用ISqlMaker接口对象自动构造相应数据持久化SQL语句,从而完成用户UI数据到目标数据库的持久化工作。反之,则可完成持久化数据到用户UI界面的自动映射工作。

从上述类工作流程中我们可以看到,在UI设计人员完成用户界面设计并设置相应控件属性之后,中间件就可以自动完成用户数据向底层数据库的持久化工作,大量减少了代码编写人员的代码编写任务,避免了重复而且机械性的工作,对提高工作效率,减少程序编制Bug有着重要意义。

6 结束语

数据库管理信息系统是目前各类企事业单位实现信息化的主要手段,如何提高管理信息系统的开发效率,有效解决传统数据库管理信息系统编制过程中编码工作重复、编码质量不一、代码可移植性差、可重用性低、难以维护等问题,对于提高社会生产力有着重要意义。

文中从上述问题出发,根据本人多年的.Net平台管理信息系统的开发经验,提出了一种全新的.Net平台下基于数据库控件的ORM中间件模式。该中间件已在我单位完成编制工作,并通过我单位在新疆维吾尔自治区实施的多个项目的应用和实践之后,取得了较为良好的使用效果。使用该中间件后,可以减少一般性管理信息系统数据访问层80%以上的代码编写任务,极大的提高了我单位的工作效率并带来了良好的经济效益,极大地提高了我公司在新疆软件行业的行业竞争力。

[1]史益芳,王志平.管理信息系统(2013版)[M].北京:人民邮电出版社,2013.

[2]Timothy A.Budd.面向对象编程导论[M].北京:机械工业出版社,2003.

[3]萨师煊,王珊.数据库系统概论(第四版)[M].北京:高等教育出版社,2006.

[4]李文菲.基于中间件技术的数据交换平台的设计与实现[D].北京:中国科学院.2006

[5]李律松.VisualC#数据库高级教程[M].北京:清华大学出版社,2005.

[6]韩万江.软件工程案例教程[M].北京:机械工业出版社,2007.

Design and implementation of the.Net ORM Middleware based on database control

GUO Ya-ping,MA Xin-chun,ZHANG Li
(Xinjiang electronic institute Co.,LTD,Urumqi 830049,China)

This article describes how to achieve a brand new middleware of data persistence layer under the.Net environment through custom database access controls and object relational mapping technology.The middleware can map database tables with UI controls automatically,reducing database development requirement of the developers,and greatly Improve development efficiency,allows developers and users committed to the buiness logic and UI designment for better user experience.Through our several management information systems in Xinjiang Uygur Autonomous Region,The middleware has verified its quickness,stability and scalability.It can make software development more effectively.

.Net;database access control;ORM;middleware;MIS

TN02

A

1674-6236(2016)03-0029-03

2015-03-19稿件编号:201503253

郭亚平(1978—),男,新疆阿克苏人,工程师。研究方向:架构设计。

猜你喜欢
中间件开发人员控件
基于.net的用户定义验证控件的应用分析
Semtech发布LoRa Basics 以加速物联网应用
RFID中间件技术及其应用研究
关于.net控件数组的探讨
基于Android 平台的OSGi 架构中间件的研究与应用
后悔了?教你隐藏开发人员选项
中间件在高速公路领域的应用
一种支持智能环境构建的中间件
基于嵌入式MINIGUI控件子类化技术的深入研究与应用
三星SMI扩展Java论坛 开发人员可用母语