EMIF下区域集成服务器的设计与实现

来源:岁月联盟 作者:周从军 时间:2010-08-30
摘  要 为了实现管理系统互操作,教育管理系统要求符合教育管理系统互操作规范。该规范提出了教育管理互操作框架(EMIF),该框架内的任意系统均能实现数据交换与系统互操作。本文主要讨论教育管理系统互操作框架下区域集成服务器(ZIS)的设计与实现技术。关键词 教育管理系统  互操作  EMIF   区域集成服务器   1 引言随着Internet和Intranet的应用普及,基于校园网的全校管理模式已成为教育管理信息系统的主流。这种模式是以各部门管理系统为基础,通过部门管理系统之间的互操作,实现校内信息的共享与交流。由于缺乏统一的数据规范和接口,各个学校原有的管理软件之间难以实现互操作,系统之间的信息资源不能共享,同样的数据需要录入多次,同样的系统功能也需要重复开发,势必造成原有资源的浪费。“校校通”工程的实施,又要求各个学校之间,学校与教育管理部门之间能实现数据的交流与共享。在国内教育软件行业,面对紧迫的互操作需求,教育部教育信息化技术标准委员会制定了《教育管理信息系统互操作规范》,又叫做EMIF (Education Management Information System Interoperability Framework) 规范。该规范提出了一个教育管理信息系统互操作框架(简称EMIF)的概念,通过对框架及其组件的描述,展现了一个由任意多个教育管理信息系统(简称EMIS)组成的开放型,任何符合规范的EMIS系统都可以成为EMIF框架的一部分,并与EMIF框架内的任意一个系统交换和使用彼此的信息,进行数据共享与系统互操作。本文主要讨论EMIF框架组件中的区域集成服务器(Zone Integration Server,简称ZIS)的设计与实现技术。2 EMIF框架EMIF是一个分布式的联网系统,由一个或多个EMIF区域组成,每个区域都由一台区域集成服务器和多个应用程序及其代理(Agent)组成。ZIS和Agent叫做EMIF区域的组件。ZIS和Agent通过使用EMIF规定的报文进行数据交换与系统互操作。报文是规范的XML文档,包含数据和对数据进行操作的信息。EMIF可以只有一个区域,也可以有多个区域。区域的大小是灵活的,可以小到一个单位、一所学校,大到几所学校,一个地区。单区域结构单区域结构EMIF通过一台区域集成服务器将一个或多个应用系统联结起来,各个系统都创建各自的代理程序作为与区域集成服务器的接口,实现各个应用系统之间的互操作(如图1所示)。这样就可以建立学校内部各个管理信息系统之间的信息共享与交流。

 2.2 多区域结构EMIF可以有多个区域,各个区域的ZIS互联可以使不同区域间实现互操作(如图2所示)。这样就可以建立学校与学校之间,以及学校与教委之间的互联系统。3 区域集成服务器ZIS3.1 ZIS功能ZIS是一个区域互操作的管理中心和信息交流中心,为所有注册的代理程序提供服务。ZIS的主要作用就是负责把报文送交给指定的组件,或根据需要向某个组件索要报文。这些组件可以是本区域的Agent,也可以是另一个区域的ZIS。代理程序之间并不直接通信,而是通过ZIS作为中介进行联系。同时ZIS还负责身份验证、加密保护、存取控制等安全管理。综合起来,ZIS应具备下列几个方面的功能:区域集成服务管理功能:定义哪些代理有权与ZIS连接;定义系统可共享的数据对象;定义每个代理对各个数据对象的存取控制权限。提供应用程序代理与ZIS的连接:为应用程序代理提供连接服务;对连接到ZIS的应用程序代理的每个请求进行身份验证。 报文处理功能:接收应用程序代理发送的报文,并对接收的报文按报文类型进行处理。报文转发功能:ZIS对接收到的请求报文、事件报文和应答报文先存放在报文队列服务器中,将注册为“推”模式代理的报文自动转发给代理。3.2 ZIS的软件体系结构ZIS按其功能需求划分成为六个子系统:区域集成服务管理子系统,为管理员对ZIS进行管理提供服务;应用程序代理登录连接与验证服务子系统,为应用程序代理登录连接及身份验证提供服务;报文处理服务子系统,提供对应用程序代理发送的报文进行处理的服务;报文转发服务子系统,为“推”模式且未处于休眠状态的代理报文队列中报文的自动转发服务;报文队列服务子系统,提供对消息队列服务器中队列的管理、存取服务;数据访问子系统,实现对数据库的数据访问。3.2.1 区域集成服务管理子系统

图3 区域集成服务管理子系统类图
本子系统的设计采用开放性好、跨平台性好、升级维护方便的三层模式的B/S模型。这三层分别是Web层,业务逻辑层和数据访问层。其中Web层为管理员提供通过诸如IE浏览器对应用程序的访问,包含下列类:LoginUI、ZISManageUI、UserManageUI、DataObjectManageUI、ACLManageUI、ModifyPasswordUI。业务逻辑层提供用于管理员登录、用户管理、数据对象管理、代理权限管理、修改密码等业务逻辑。包含下列类:LoginWorkflow、UserManageWorkflow、DataObjectManageWorkflow、ACLManageWorkflow、ModifyPasswordWorkflow。数据访问层由数据访问子系统实现,本子系统业务逻辑层利用数据访问子系统提供的接口实现数据访问。这些类及其关系如图3所示。

 3.2.2 应用程序代理登录连接与验证服务子系统本子系统设计成Web服务。包含类LoginService。与该子系统相关联的类有UserDataAccess、TokenDataAccess。这些及其关系如图4所示。

图4 应用程序代理登录连接与验证服务子系统类图

3.2.3 报文处理服务子系统本子系统设计成Web服务。包含下列类:MessageProcessService、ProcessRegisterWorkflow、ProcessUnregisterWorkflow、ProcessProvideWorkflow、ProcessUnprovideWorkflow、ProcessSubscribeWorkflow、ProcessUnscribeWorkflow、ProcessRequestWorkflow、ProcessResponseWorkflow、ProcessEventWorkflow、ProcessSystemControlWorkflow、ProcessPingWorkflow、ProcessSleepWorkflow、ProcessWakeupWorkflow、ProcessGetWorkflow。与该子系统相关的类有LoginService、AgentDataAccess、ProviderDataAccess、SubscriberDataAccess、ACLDataAccess、MSMQ。这些类及其关系如图5所示。 

 

 3.2.4 报文转发服务子系统本子系统设计成Windows服务。包含下列类:MessageTransmitServer、MessageTransmitService、MessageTransmitThread。与该子系统相关的类有AgentDataAccess。这些类及其关系如图6所示。

 

3.2.5 报文队列服务子系统本子系统设计成类库。包含类MSMQ。其类图如图7所示。

图7 报文队列服务子系统类图

3.2.6 数据访问子系统本子系统设计成类库。包含类UserDataAccess、DataObjectAccess、ACLDataAccess、AgentDataAccess、ProviderDataAccess、SubscriberDataAccess、TokenDataAccess、UserData、ACLData、DataObjectData、AgentData、PorviderData、SubscriberData、TokenData。这些类如图8所示。
图8 数据访问子系统包含的类
 3.3 ZIS软件配置图9展示了一个完整的单区域集成服务器的配置概况和这一解决方案中的所有程序集。

图9  ZIS部署图
软件系统运行环境:Windows 2000 Server—用于部署报文转发服务和消息队列服务以及证书服务。Web服务器:IIS、.NET Framework-用于部署区域集服务管理ASP.NET Web应用程序、应用程序代理登录连接与验证ASP.NET Web服务、报文处理ASP.NET Web服务。数据库服务器:SQL Server 2000-用于部署ZIS必需的数据库。

区域集成服务管理在程序集Manage中实现,是一个ASP.NET Web应用程序。Manage程序集依赖DataAccess程序集和MsmqService程序集。其中Manage程序集通过DataAccess程序集连接到数据库,这样可以查询和更新用户、数据对象、代理权限等信息和修改管理员密码。通过MsmqService程序集连接到报文队列服务器,这样可以建立、删除代理对应的报文队列。ZIS管理员可通过IE这样一类客户端程序来访问程序集Manage中的程序实现对区域集成服务管理。应用程序代理登录连接与验证服务在ASP.NET Web服务程序集LoginService中实现,它依赖DataAccess程序集,通过DataAccess程序集查询用户信息和身份验证信息。应用程序通过其代理来调用程序集LoginService中的Web方法实现与ZIS的登录连接获得身份验证令牌与注销连接。报文处理服务在ASP.NET Web服务程序集MessageProcessService中实现,它依赖LoginService程序集、DataAccess程序集和MsmqService程序集。其中MessageProcessService程序集能够调用LoginService程序集中的Web方法实现报文发送者的身份验证,通过DataAccess程序集连接到数据库,这样可以查询和更新代理注册信息、提供者信息、预约者信息。当代理的注册信息发生变化时,通过MsmqService刷新报文队列。应用程序通过其代理程序来调用程序集MessageProcessService中的Web方法向ZIS发送报文,并获取返回的通知报文。报文转发服务在程序集MessageTransmitService中实现,是一个Windows应用程序的程序集。它依赖DataAccess程序集和MsmqService程序集。其中MessageTransmitService程序集通过DataAccess程序集连接到数据库,查询代理注册信息。通过MsmqService从报文队列中获取要转发的报文。3.4 关键技术3.4.1系统的安全性ZIS对系统的安全性要求很高。为保证系统安全,我们采用了下面一些技术:3.4.1.1 基于窗体的身份验证在区域集成服务管理Web应用程序中,对管理员的身份验证我们采用ASP.NET基于窗体的身份验证,所有对应用程序的访问必须经过口令检查和安全验证。如果有一个页面被用户直接访问而没有经过口令检查和安全验证,该页面会自动定向到登录页面。3.4.1.2 统一身份认证服务在报文处理Web服务程序中,对报文发送者的身份验证我们采用了统一身份认证服务。如图10所示。

图10统一身份认证服务

 ⑴ 应用程序代理在发送报文之前,必须调用LoginService服务与ZIS登录连接,并提供应用程序名和密码。⑵ LoginService服务将对它们进行检查。如果代理确有与ZIS连接的权限,LoginService服务就会创建一个身份验证令牌给应用程序代理。⑶ 当应用程序代理调用MessageProcessService服务的Web方法向ZIS发送报文时,必须在SOAP报头中传递会身份验证令牌。⑷ MessageProcessService服务的Web方法读取SOAP报头中的身份验证令牌后,调用Web服务LoginService对身份验证令牌进行检查。⑸ LoginService将身份验证结果返回给报文处理服务。⑹ 当身份验证为合法有效时,报文处理服务处理报文,并将处理结果返回给应用程序代理,否则,不进行报文处理,返回错误给代理。3.4.1.3 使用SSL保证数据传输的安全性在报文转发服务将报文转发给应用程序代理报文接收程序时,为保证报文传输的安全,我们使用IIS的安全套接字层SSL,利用HTTPS协议对传输的报文进行加密传输。在接收报文的服务器端,给服务器添加SSL支持,并申请安全通道。若使用客户证书进行身份验证,则还应选中“申请客户证书”选项,并建立客户证书与Windows用户的映射,这样可以使用客户证书控制对资源的访问。3.4.2 XML报文处理在报文处理服务子系统中,区域集成服务接收并处理应用程序代理发送的各类报文,报文必须是符合EMIF规范的XML报文。在处理XML报文的过程中,涉及到下列相关技术:3.4.2.1 报文有效性验证在区域集成服务接收到应用程序代理发送的XML报文后,首先要验证该XML报文是否符合EMIF规范,为此,我们根据EMIF报文规范和数据规范,定义一个XML架构文档用于验证EMIF可以利用.NET的System.Xml命名空间中的派生于XmlReader的两个类XmlTextReader和XmlValidatingReader,对报文进行验证。3.4.2.2 DOM编程接口技术在EMIF报文通过验证之后,我们在处理该报文的过程中需要获取文档中的XML项的信息,我们可通过文档对象模型(Document Object Model,DOM)的.NET框架中的类来解决这一问题。主要涉及到的类有System.Xml命名空间中的XmlDocument,XmlNode、XmlNodeList、XmlNamedNodeMap等。3.4.2.3 将报文存储到相应报文队列为了保证报文的坚稳性,我们采用了报文队列服务。当区域集成服务接收到应用程序代理发送的应答报文、事件报文或请求报文时,它会根据报文获取该报文的接收者,将该报文存储到该代理对应的报文队列中,而不是直接转发给报文接收者。3.4.3 利用报文队列服务和多线程技术实现报文转发在报文转发服务中,为实现报文的自动转发,我们采用了多线程技术。为每一个定义为“推”模式的应用程序代理定义一个线程,该线程监视应用程序代理对应的报文队列,当报文队列中存在报文时,该线程依次读取队列中的每一个报文,并自动连接到应用程序代理用于接收报文的Web应用程序(或Web服务),完成报文的自动转发。4结束语       随着信息技术的,“校校通”工程的实施,管理信息系统之间实现数据共享和互访,必将是未来的趋势。本文根据EMIF规范,提出了一个区域集成服务器的解决方案,同时对实现的关键技术作了简要说明,希望对解决教育管理系统互操作有些帮助。 [1] Schools Interoperability Framework Implementation Specification(SIF)V1.1
[2] CELTS-40-2004 EMIF规范(CD 1.1)  [3] 余胜泉,杨琰华 从互联到应用互联——“校校通”的“通途” 电化教育研究 2004.06[4] Matthew Reynolds, Karli Watson 著 .NET应用高级编程—C#编程篇 清华大学出版社2002[5] Chris Knowles,Stephen Mohr等著 ASP.NET XML高级编程—C#编程篇 清华大学出版社2002[6] [美]Kenn Scribner, Mark C.Stiver著, 应用SOAP实现.NET XML Web服务

图片内容