基于WebService的数据查询平台技术

更新时间:2023-05-20 19:52:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

基于WebService的数据查询平台技术

科技信息计算机与网络

基于WebService的数据查询平台技术

西安航空技术高等专科学校

徐光辉

西安工业大学计算机学院

[摘要]MIS系统中数据库的访问技术已经从传统的基于API的直接访问技术演化到基于面向对象的对象-关系映射(ORM)阶

不匹配的问题,但是ORM缺乏弹性和对复杂查询能力的不段。尽管ORM技术解决了应用程序和数据库系统之间“抗阻不匹配”

足。本文提出了一种基于.net的数据查询平台技术,使用WebService技术将数据查询和业务处理进行分离,大大提高了查询的执行效率且增强了系统的鲁棒性。[关键词]MIS系统ORMWebService

数据库

1.引言

随着计算机及网络技术的迅猛发展和广泛应用,政府和企业的信息化程度得到了大幅度的提高,基于B/S架构的MIS系统因具有良好的可扩展性和易维护等优点而迅速发展起来。

在传统的开发模式中,通过JDBC、ODBC、ADO.NET等API直接对数据库进行访问,由于对象和关系模型之间存在“阻抗不匹配”问题[1],因此把面向对象的一些操作映射到关系数据库时,需要编写繁琐的数据访问代码,而这些代码总是有大量重复内容。而且程序代码和SQL语句混合在一起,分散了程序员的注意力和关注点。

后来随着面向对象的软件开发方法发展而产生的对象-关系映射

Object/RelationMapping,简称ORM)[2]

,一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术。通过使用描述对象和数据库之间映射的元数据,将程序中的对象自动持久化到关系数据库中。本质上就是将数据从一种形式转换到另外一种形式。基于JAVA平台的Hi-bernate[3]和基于.NET平台的NHibernate便是这样的ORM框架工具,通过XML配置文件,将持久化类映射到SQL关系数据表结构,允许开发

人员使用面向对象的思想对关系数据库进行操作[4]

从而使应用系统与数据库分离,提高了系统开发效率。

但是在以处理数据为主要任务的MIS系统中,所使用的数据库表数量非常多,使用ORM技术会在系统中产生大量的映射类,而且需要为每个表编写复杂的XML映射文件以实现对象到关系数据的映射,针对MIS系统易变的业务需求,ORM缺乏弹性,一旦出现业务需求的变更,就必须修改持久化层的接口;ORM是一种完全的面向对象的做法,

而面向对象的做法也会对性能产生一定的影响。对于复杂查询,

ORM仍然力不从心。

本文主要目的是研究一种在.NET平台下的数据查询平台,该平台

的主要设计思想是使用WebService技术[5]

,将数据查询的功能转移到应用系统外部,使开发人员将精力放到业务的处理上;利用可自定义的数据查询对象,直接使用SQL语句访问数据库,提高执行效率的同时适应系统的易变性。

2.系统的工作方式

整个系统的工作方式如下:

应用程序管理员登陆管理界面对应用程序进行配置,将每一个数据查询定义为一个对象,设置该对象的数据来源、参数定义和显示方式;

业务系统根据数据查询对象ID,获取数据查询定义,带入当前的环境参数,获取数据后根据数据查询定义的显示方式生成界面。

整个系统以中间的服务层为核心,数据查询定义系统和应用程序都通过WebService的形式调用接口以完成业务操作。

3.平台的整体架构设计

整个数据查询平台体系结构被设计为5大部分组成。(1)业务系统实现客户端的业务应用(2)数据查询管理系统实现对数据查询对象的的定义和设计数据(3)查询服务层实现对数据的提取并通过WebService的方式对外提供调用

(4)数据界面服务层实现对数据查询服务层提供的数据根据定义组织成标准的页面,通过WebService的方式供业务系统直接使用

(5)数据存储层提供数据的存储和访问操作如图1所示。3.1数据存储层

数据存储层主要包括2种数据源:(1)数据查询数据:存放数据查询对象的数据及其相关的资源数据,这些数据是整个数据查询平台的

—614—

核心数据;(2)业务系统数据库:存放具体业务数据的数据库。

图1数据查询平台体系结构

3.2数据查询服务层

对数据查询数据库进行访问操作,并通过服务的形式提供包括查

询定义、

参数定义和显示定义等服务接口,通过这些服务接口访问者可以获取并操作这些基础数据,实现数据查询功能,从而实现数据和应用的高层次复用。

3.3数据界面服务层

对数据查询得到的定义信息和业务信息,组织成可在页面直接使用的内容,通过服务接口实现数据查询的简单调用,达到免代码的目的。

3.4数据查询管理系统

是一套基于B/S结构的数据库应用程序,它主要负责实现对数据

查询对象的可视化管理。前台采用Web的方式提供应用程序界面,

后台通过调用WebService层的服务接口进行数据访问与操作。

4.平台的实现

4.1系统开发架构及关键技术

ASP.NET是统一的Web应用程序平台,它提供了为建立和部署企业级Web应用程序所必需的服务。ASP.NET为能够面向任何浏览器或设备的更安全的、更强的可升级性、更稳定的应用程序提供了新的编程模型和基础结构。ASP.NET是Microsoft.NETFramework的一部分,是一种可以在高度分布的Internet环境中简化应用程序开发的计算环境。.NETFramework包含公共语言运行库,它提供了各种核心服务,如

内存管理、

线程管理和代码安全。它也包含.NETFramework类库,这是一个开发人员用于创建应用程序的综合的、面向对象的类型集合。

在实现WebService的开发时使用了微软ASP.NETWebMethods框

架组件。

ASP.NET为.asmx终结点(称为WebServiceHandler)发布了一个特定的IHttpHandler类,它提供必要的XML、XSD、SOAP和WSDL功能的范本文件。因为WebMethods框架组件把你从下层XML技术的复杂性中解放了出来,你能够快速聚焦于手头的业务问题。在使用WebService时只需在开发项目中通过添加Web引用将对应的WebService加入本项目,VS.Net将自动为该WebService建立一个代理类,在开发时可以完全按照面向对象的方法来使用WebService的各个接口。

4.2数据查询的实现

首先使用ER图工具设计查询定义的存储结构,如图2:

基于WebService的数据查询平台技术

科技信息计算机与网络

图2查询定义的存储结构E-R图

在生成一个具体的查询定义后,通过数据查询服务层的接口来得到数据。因为有多种显示效果,因此使用AbstractFactory设计模式,通

过统一接口来调用服务,接口定义如下:

[WebMethod(Description="根据类型和编号得到语法")]

publicstring[]PageSyntax(PageTypept,stringPno,stringRendTo,DataTableParameterDt)

然后根据具体PageType类型,调用对应具体界面类来生成具体的显示语法。

以数据表格Grid为例,

当程序判断PageType类型为PageType.Grid时,创建类CpageGrid并调用PageSyntax方法生成具体语法,代码如下:

ArrayListal=newArrayList();

switch(pt){

casePageType.Grid:

CPageGridcpGrid=newCPageGrid();

al=cpGrid.PageSyntax(Pno,RendTo,ParameterDt);cpGrid=null;break;

Case其他类型}

string[]s=newstring[al.Count];al.CopyTo(s);returns;

4.3数据显示的实现

在数据显示时采用著名的“富客户端”(RichClient)工具Ext,该工具是基于面向对象开发的,提供了丰富的,非常漂亮的外观体验。仍以数据表格Grid为例,

al.Add("Ext.onReady(function(){");

al.Add("Ext.QuickTips.init();");

al.Add("varxGrid_"+Pno+"=Ext.grid;");

al.Add("varxGridRd_"+Pno+"=newExt.data.ArrayReader({},

[");//字段定义

string[]ColsType=newstring[dtcCol];//每个字段的数据类型ColsType[0]=dtCol.Rows[0]["dataType"].ToString();//组织业务数据表头信息

al.Add(",{header:'"+dtCol.Rows[i]["colTitle"].ToString()+"',sortable:true,dataIndex:'"+dtCol.Rows[i]["colname"].ToString()+"'}");

al.Add("]);");

al.Add("Ext.grid.dummyData=[");if(dtcData>0){

//组织业务数据}

al.Add("];");al.Add("]);");

4.4数据查询调用的实现

在项目中通过调用数据界面服务层的接口,获取语法数据,直接在页面显示,例如语法

Ext.onReady(function(){Ext.QuickTips.init();

varxGrid9900003=Ext.grid;

varxGridRd9900003=newExt.data.ArrayReader({},[

{name:'subno',type:'string'},{name:'menutext',type:'string'},{name:'parentno',type:'string'},{name:'menuscript',type:'string'}]);

Ext.grid.dummyData=[

['10','业务系统','',''],['80','系统管理','',''],['81','系统工具','',''],['82','在线问答','',''],['83','帮助','','']];

varxGridSm9900003=newxGrid9900003.CheckboxSelectionModel();varxGridCm9900003=newxGrid9900003.ColumnModel([xGridSm9900003,

{id:'subno',header:'编号',sortable:true,dataIndex:'subno'},{head-er:'名称',sortable:true,dataIndex:'menutext'},{header:'父编号',sortable:true,dataIndex:'parentno'}

,{header:'代码',sortable:true,dataIndex:'menuscript'}]);vargrid9900003=newxGrid9900003.GridPanel({id:'Grid9900003',width:600,height:300,frame:true,

title:'测试grid',renderTo:'xgrid',store:newExt.data.Store({reader:xGridRd9900003,data:xGrid9900003.dummyData}),cm:xGridCm9900003,sm:xGridSm9900003,viewConfig:{forceFit:true},

tbar:['[',{text:'刷新'},'-',{text:'恢复',tooltip:'如果可编辑就可恢复'},'-',{text:'筛选'},'-',{text:'排序',tooltip:'如果有分页就有排序'},']',{text:'存盘'}]});

});

显示效果如图3:

图3数据查询实际效果图

5.结束语

本文系统地介绍了一个基于WebService的数据查询平台的体系结构和解决方案,该系统面向实际企业业务需求,该系统通过WebSer-vice方式提供了集中式管理分布式应用的数据查询服务,不仅为业务系统提供了统一的数据查询显示功能,减少了开发和维护成本,更使得企业的数据得以统一管理。

参考文献[1]刘金,徐苏,冯豫华.基于Hibernate的J2EE数据持久层的设计与实现.计算机与现代化,2007,23(4):56-58.

[2]何铮,陈志刚.对象/关系映射框架的研究与应用[J].计算机工程与应用,2003,39(26):188-191,194.

[3]刘冰,李正凡,刘邦桂.基于Hibernate的数据持久化应用研究.科技广场,2008:49-51.

[4]覃宇,马铁军.Hibernate数据持久化技术在轮胎企业MES中的应用.计算机工程与应用,2006,42(35):208-210.

[5]TSALGATIDOUA,PILIOURAT.Anoverviewofstandardsandrelatedtechnologyinwebservices.DistributedandParallelDatabases,20022-3).

—615—

本文来源:https://www.bwwdw.com/article/1244.html

Top