![]() 图8 数据访问子系统包含的类 |
3.3 ZIS软件配置
图9展示了一个完整的单区域集成服务器的配置概况和这一解决方案中的所有程序集。

|
图9 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
http://www.sifinfo.org
http://www.sifinfo.org
[2] CELTS-40-2004 EMIF规范(CD 1.1) http://www.celtsc.edu.cn
[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服务
