图2 SOA架构的系统模型结构图
3.3 UDDI系统的应用
首先安装MySQL数据库,在数据库中运行juddi-0.9rc3\sql\mysql\create_database.sql和juddi-0.9rc3\sql\mysql\insert_publishers.sql,数据库准备完成。
访问http://127.0.0.1:8080/juddi/happyjuddi.jsp页面后,完成jUDDI的正确配置以及数据库连接成功,即可进行webservices的发布发现等服务。
使用uddi4j测试,运行juddi-0.9rc3\src\uddi4j\org\apache\juddi\uddi4j,使用uddi4j作为客户端进行测试。
完成后可将校内各部门的资源和业务功能的Web服务发布到UDDI节点[4]。在内网中允许服务发布者设置访问权限,以及对可用性和发布保有更多的控制。对于校外公有UDDI注册中心而言,各部门资源的发布,可以在互联网上查找和使用的Web服务需发布到这类公有UDDI节点,如IBMUDDIBusinessTest 。这些注册中心针对不同的应用类型,根据服务访问者的权限对服务描述进行分类屏蔽访问。
3.4 数据库结构设计
根据SOA架构的系统模型,以教务管理为例,部门内部大量的业务需要处理,同时又要提供必要的网上查询等信息服务功能[5]。因此选择分层的C/S与B/S相结合的开发模式比较符合业务要求,能够提供高效的系统功能。因此需要以下的软件开发环境。
3.4.1开发环境
服务器端:Windows Server系统,IIS构成Web服务器,它能为基于网络的应用提供服务平台;利用MS SQL数据库和Windows Server系统相结合,实现内部网络数据库服务。
客户端:在广域网和局域网上使用浏览器;内部可使用建立在W98及以上操作系统上的客户端软件和应用软件。
3.4.2系统开发工具
(1)网上用户:使用Microsoft.NET的ASP.NET开发工具等。
(2)内网用户:使用Microsoft.NET的VB.NET或C#.NET等。支持面向对象的、可视化的开发环境,能够很好的支持MS SQL数据库。
3.4.3数据层设计
(1)数据库设计
以教务管理系统为例,选用的是MS SQL关系型数据库作为核心数据库。关系数据库设计是对数据进行组织化和结构化的过程,通常采用3NF范式。细化二维表的划分,通常一个表只描述一个实体,可有效地消除冗余数据,理顺数据的从属关系,使数据库具备较好的稳定性。
限于篇幅,只给出学生成绩子系统的数据库设计范例。数据库表/字段的分析要在E_R模型基础上建立,并且要符合规范化设计的要求,关键字段如Student、Teacher、Cousre;数据库名为MS-Course。
(2)存储过程设计
数据访问层对数据库的访问要尽量采用存储过程的方式进行。[6]利用存储过程可以保持应用程序的执行效率,并简化数据层。在数据库发生变化时,有时可以通过改变存储过程语句无需改变程序代码即可实现。该方式有效利用了MS SQL数据库对性能优化的特点,在教务系统中:
给出 Select_Student_1 和Insert_Student_1 存储过程代码示例,其他过程创建方法类似,不再赘述。
CREATE PROCEDURE [Select_Student_1]
(@Student_id [varchar] (50)
)
As Select*
From Student
While Student_id=@ Student_id
CREATE PROCEDURE [Insert_Student_1]
(@Student_id [varchar] (50),
@ Student_sex[char](4),
@ Student_nation [char](6),
……
)
As
INSERT INTO [MS_Course],[DBO], [STUDENT]
([Student_id],
[Student_sex],
[Student_nation],
[Student_birthday],
……
VALUSE
(@Student_id,
@Student_name,
(3)连接数据库及配置
为保持良好的可移植性,采用对数据库配置进行统一管理的方法,将程序中用到的所有连接字符串信息统一放于Config.web配置文件中,在程序中对这一文进行调用,进行数据连接。当系统进行移植时,只要修改配置文档中的相应数据库信息便可实现数据库的转移。
Config.web配置文件中,数据库的设置部分集中在<appSetting> 与</ appSetting >之间。设数据库在本地,数据库名为MS-Course,相关代码如下:.
<appSetting>
<add key=”dsn”value=”data Source=localhost;UID=sa;PWD=sa;
Database=MS-Course/>
</ appSetting >
在程序中读取Config.web配置文件中得数据库设置信息的方法:
string strconn=configurationSettings.appSettings(strconn)
Cn.Open()
既可打开数据库。
3.4.5服务层设计
服务层是数据库系统设计和实现的关键点,开发工作主要集中于此。在进行SOA构架情况下,它也是服务提供者与消费者的边界,系统的总体性能与数据库系统设计关系紧密。如学生基本信息、教学计划等的增删改,属于数据维护服务。在实现这类处理时,定义相应的类来描述的操作对象。这些类在客户端和服务端各有一份声明。如学生基本信息类,定义为:
publicckass Studinfo
{
private string stud_Name; //学生姓名
private string stud_Id; //学生学号
}
通过定义学生基本信息类,在开发客户端程序时,可以认为对学生基本信息的处理就是对此类的操作。
在中间服务断定义服务:CopeStudInfo,此服务包括一个ProStudInfo方法。基于ProStudInfo函数,在客户端构造一个StudInfo对象,调用ProStudInfo()函数即可完成对该对象的增删改操作。StudInfo对象中包含了数据库/表所需的所有学生基本信息。
4 结束语
随着高校发展和布局的调整,应用系统功能的不断扩大,对信息管理系统更高的要求,利用基于SOA构架的信息系统,是对多种应用整合的有效方法。SOA 架构的不同服务之间保持一种松耦合的关系,即一种相对独立无依赖的关系,从底层架构的级别来保证整个系统的松耦合性以及灵活性,有利于异构系统的整合。
SOA基础技术平台、实现信息管理功能的服务、各种已经存在的应用系统和数据资源、使用各种服务的应用程序,以及建立SOA应用系统和监控系统运行的辅助工具等。
参考文献
[1]柴晓路,梁宇奇,Web Services技术、架构和应用[M].北京:电子工业出版社,2003:1-13.
[2]刘辉,李建华,刘明生,SOA在数据库应用集成中的研究与实现[J].微计算机信息,2007,10(3):181-183
[3]张广胜,蒋昌俊,汤宪飞等,面向服务的企业应用集成系统描述与验证[J].软件学报,2007.12:56-58.
[4]Newcomer E, Lomow G. Understanding SOA with Web Services[M].徐涵译.电子工业出版社,2006:172.
[5]杨柳,李秉智,SOA架构下的电信运营支撑系统[J].微计算机信息,2007,01(1):248-249
[6]陈浩然,教务管理系统开发与.NET Web Services 应用[J],企业技术开发,2003,10:234.-235