0引言
电力市场系统[1,2]是以向电力市场运行提供安全、强大的软硬件支持为目标,同时能够反映电力生产一般特点、符合电力系统运行基本规律的庞大的信息管理系统。
随着我国电力系统市场化改革的深入,电力市场系统的数据来源越来越广泛,数据量越来越大,要做到数据的快速查询和安全传输,对应用系统的体系结构要求也越来越高。同时,电力系统系统还应对各种信息按照保密级别严格分类,并在此基础上采取保密措施,保证各种信息、数据的整体性和安全性。而传统的以两层(two-tier)平台为基础的软件系统将界面和应用逻辑都置于客户端,故对客户端的要求比较高,而且通常只有一个数据源(RDBMS),只能提供较低的安全保障,已经不适合电力市场系统发展的需要。
基于Internet/Intranet的多层次的浏览器—服务器(B/S)体系结构,利用成熟的Web应用服务器(WAS)和事务处理中间件,为应用程序提供Web运行环境。在B/S结构中,用户界面(即浏览器)与数据库被网页服务器和应用服务器分隔开。网页服务器响应浏览器对网页的请求,而应用服务器上则存储着应用逻辑,网页服务器与应用服务器互相配合实现服务器端的各种功能。这种结构将客户端的复杂性降到zui低,提高了系统兼容性,而在服务器端的集总管理使系统的安全性和稳定性得到充分保障。这种三层结构将有效地帮助电力市场系统实现近期和长远的目标。
国内外对多层体系结构编程技术的研究已经非常深入,但对其应用于电力市场系统开发的研究还很欠缺。文献[3]对应用Web技术的电力市场即时信息系统的体系结构及其可靠性、及时性、安全性等做了介绍。文献[4]在提及Internet在电力市场中的应用时主要集中于即时信息系统。文献[5]中提出的基于Web的电力市场于Web服务器的应用,没有逻辑应用层的概念。文献[6]中描述了基于多层架构的电力市场系统的总体构成、功能模块、网络结构和软硬件配置,但缺乏对系统整体设计、软件体系结构等关键技术的详细介绍。
本文描述了基于Internet/Intranet的电力市场系统的多层(multi-tier)体系结构设计,在电力市场系统开发的实践基础上,提出了个具体的实现方案。
1系统设计
1.1Internet/Intranet结构
电力市场系统包括主站端即电力市场交易中心的系统和厂站端的子系统。电力市场系统内部网(Intranet)由Web服务器、电子邮件服务器、数据库服务器以及应用服务器和客户端的PC机组成。
厂站端和主站端的用户通过Internet.浏览器访问Web服务器,调用应用服务器和数据库服务器提供的各种电力市场业务处理功能。电子邮件服务器为电力市场系统各用户提供电子邮件的发送和接收服务。
为了保证电力市场系统的安全,在Intranet与Internet连接时,必须采取必要的安全措施,主要手段是安装防火墙。
1.2系统体系结构
图1是本文提出的基于Web技术的电力市场系统软硬件体系结构。可以看出,系统的应用逻辑集中在服务器端,服务器端分为响应网页请求的网页服务器和处理各种商务逻辑的应用服务器。客户端是简单的浏览器,这实际上是一种“零客户端”的解决方案。数据库服务器与客户端的*分离保证了系统的数据安全性。
图2是传统的两层应用体系的一般结构。可以看出,应用程序的界面和应用逻辑都在客户端。由于两层体系结构对客户端的依赖,及其低下的运行效率,现代大型软件系统正朝着多层、分布的方向发展,电力市场系统也将必然摒弃传统的两层结构。
2系统实现
本文提出了一个基于Internet/Intranet的电力市场系统的具体实现方案。文中涉及的关键技术在这个实例中均有体现。
2.1J2EE体系结构
基于Internet/Intranet的网络编程技术已经成为当今开发新一代大型系统软件的主流技术,电力市场系统也不例外,而系统的可扩展性、可操作性、多样性、可用性和足够的灵活性则是主要的考虑内容。
这种平台目前有3种技术实现方式:①Sun公司(SunMicrosystem)的Java2企业平台(J2EEJava2EnterpriseEdition),其核心技术
是基于企业JavaBeans(EnterpriseJavaBeans,即EJBs)的组件体系结构;②开放管理组织(OpenManagementGroup)提出的公共对象请求代理结构(commonobjectrequestbrokerarchitecture);③微软公司提出的分布Internet应用结构(WindowsDNA),其核心技术是使用COM牛模型实现的服务器端组件体系结构(DCOM+MTS)。
本文推荐电力市场系统技术解决方案采用第1种方案,即J2EE,对比其余两种方案的优势在于以下几方面:
a.被大量的业界公司支持统一的工业标准。J2EE是由许多的业界公司合作提出的一个开放平台,拥有业界的广泛支持和众多的中间件软件提供商(比如IBM,Oracle,Inprise,Sun,Netscape等)。
b.通过*的中间件服务来快速开拓市场,实现创新的理念。*的基于J2EE平台的软件产品可以方便地使用第三方开发的中间件,从而减少应用开发人员的工作量,使得开发人员可以专注于其擅长的商业逻辑部分的开发,而无须面面俱到。
c.对投资的更好的保护和对变化的快速适应。电力市场系统软件的发展对技术的要求日新月异,新的功能需求层出不穷,而且往往要求在复杂的互异系统中进行部署。服务器平台应该具有使客户端迅速适应这种变化的能力。一个设计良好的JZEE应用只需做很少量的改动就可以在互异的操作系统中进行部署。
2.2WebLogic应用服务器
本文的电力市场系统所采用的多层结构的组成部分如表1所示。
BEA公司的WebLogic应用服务器提供对J2EE组件技术和服务的支持。其中:组件技术包括Servlets,JavaServerPage和Enterprise
JaveBeans;服务包括标准网络通信协议(HTTP,HTTPS,IIOP等)、对数据库系统访问(JDBC)和消息系统服务(JavaMessageService和JavaMail)等。
系统的应用逻辑被封装在这些组件(EJB或者JavaBeans)中,而WebLogic应用服务器提供一个完整的管理平台来管理组件,并且提供各种服务供应用逻辑使用。这样,大大加快了开发时间,开发人员可以把精力集中在具体应用逻辑的开发上。
3几个关键技术
3.1动态图表显示
在电力市场系统中,基于浏览器页面的动态图表显示是一项必须实现的关键技术。图表的动态显示和交互操作给电力市场系统操作人员带来直观的界面和操作上的便利。
实现动态图表显示的典型方法有两种。第1种方法是在服务器端将从数据库提取的数据绘成图,同时在服务器端生成图形文件,并将页面的链接指向该图形文件。这种方法的zui大好处是生成的图形文件比较小,对于网络速度较慢的用户(例如远程拨号上网)比较适用,但是不能交互操作,对不同图的表现形式(例如曲线图、柱状图、饼图)之间的转换缺乏灵活性。第2种方法是在客户端采用嵌入Applet,实现动态图表显示。Applet就是Java客户端小程序,适合于实现一些较复杂的功能,Apple编译后可直接嵌入HTML文件中,在浏览器中运行,可以提供给用户一个动态的页面,用户在页面中能够实现与服务器的交互。本文采用这种方法。但是,由于Applet是运行在客户端的Java小程序,其本身不能对服务器的数据进行存取,因此,如何实现客户端的Applet与服务器端的Servlet的数据交换是实现该技术的核心问题。
实现Applet与Servlet的数据通信有以下3种方式:
a.使用URL/URLConneetion类。URL是一种URL连接类,提供了访问网络资源的方法,因为每个Servlet的标识是惟一的,所以利用URL类可
以与远端的Servlet通信。
b.使用Socket(套接字)。Socket是网络编程的重要实现途径。Socket利用主机名和服务器端口号作为标识进行通信。在Java语言中,提供了java.net.Socket和java.net.ServerSocket类库,它们对Socket编程需要的各种子功能进行完整的封装,前者用于客户端,后者用于服务器端。Applet编程中可以利用上述两个Socket类中封装的函数实现与Servlet的数据通信。
C.使用RMI(remotemethodinvocation)。RMI是一种不同Java虚拟机互相调用对方对象函数、启动对方进程的一种机制。在这种机制下,某一台Java虚拟机上的对象在调用另外一台Java虚拟机上的函数时,使用的程序语法规则和在当地Java虚拟机上对象间的函数调用的语法规则一致。正是这种机制给分布计算的系统设计、编程都带来了极大的方便。只要按照RMI规程设计程序,可以不必过问在RMI之下的网络细节例如TCP/IP,Socket等,更不必担心其下面的软硬件环境,任意两台Java虚拟机之间的通信*由RMI来负责。Applet和Servlet都是运行在Java虚拟机上的对象,因此,可以利用RMI的强大功能进行远程通信。
3.2分布式应用和分布式数据库
3.2.1分布式应用
电力市场系统可以采用WebLogic的分布式集群技术,它将各个应用分布到不同的服务器上,然后将这些服务器组成一个集群(domain)来统一管理,这样既实现了应用的分布性,又保证了管理的集中性。
具体说来,可以把各个不同的应用子系统分布到不用的受控服务器(managedserver)上,然后用一个管理服务器(administrationserver)统一管理各个系统。
这样,各个应用分布在不同的机器上,形成一个彼此之间没有耦合的体系结构,其优点如下:
a.易于维护和管理。各个子系统在初始化时从管理服务器中读取各自的配置文件,生成数据库连接池、消息队列服务池和应用组件线程池。这些连接池和线程池可以通过管理服务器动态进行运行期配置,而不必重新启动服务器。
b、易于升级扩充。通过管理服务器可以新建受控服务器,将新开发的应用动态地发布到新的服务器上;如果发现某个服务器由于访问量过大而反应缓慢,可以动态地添加一台新的服务器来减轻负荷。
子系统和管理服务器之间可以通过JMS服务来互相通信,这样,管理服务器上运行的监控程序可以监控当前整个系统的运行状态。其中,在每个子系统上可以都开设一个消息通信服务,其他系统可以向它发送消息或者向它请求自己所需的消息。
3.2.2分布式数据库
电力市场系统采用分布式数据库来实现数据的分布式存储和统一管理。通过对数据库系统进行配置,可以把不同应用逻辑所使用的数据表分布到不同的物理机器上的数据库中,这样可以提高访问效率。而当应用建立数据库连接时只需要输入统一的数据库名称,分布管理服务器将根据用户所申请的数据动态地连接到对应的机器上。这一切对链接数据库的应用来说是透明的,应用本身并不关心数据的具体存储地点。
3、3系统应用级的集群和冗余
通过WebLogic应用服务器的集群功能,系统可以把多个应用子系统组成一个集群来提高应用的可靠性和可扩展性。一个集群对客户端来说是透明的。集群结构有以下优点。
a.可扩展性。一个多应用服务器组成的集群的处理容量比单一的应用服务器要大得多,而且新的服务器可以动态地加入来扩充处理能力。
b.高可靠性。一个集群使用多应用服务器的冗余来防止其中某一台服务器崩溃所造成的整个系统瘫痪。当一台服务器崩溃时,其他服务器可以继续响应客户端的请求。
WebLogic所提供的这些特性对于应用的编写人员和使用人员都是透明的。应用编写者无需关心服务器如何配置,只需专注于本身应用逻辑的实现,而客户在向服务器发出请求时,也不关心服务器内部的处理。一个集群可以管理多个受控集群。一个受控集群在该集群的各台服务器中提供某种特定的服务接口。HTTPsession状态集群和对象集群是受控集群类型。另外,还有一些受控集群提供JMS消息队列和JDBC连接池的集群服务。
3.4数据通信服务管理
本文介绍的电力市场系统的数据通信服务管理系统,建立在IBM公司的MQSeries通信中间件产品基础之上,主要用VC++语言开发完成。数据通信服务程序建立了基于“事务—规则—任务”的消息处理机制,构造了一个基于Win32平台的、标准化的、数据打包/解包/传输通信接口(协议);加强了电力市场交易中心与各发电厂之间数据传输的稳定性、安全性、可靠性。
数据通信服务管理系统的功能是:基于“事务—规则—任务”的消息处理机制,就是将电力市场交易中心和各发电厂的电力市场系统需要交换的数据,抽象描述为数据交换约束——规则;将可执行的规则分配给具体的事务;通过定义该事务所要处理的数据表,即完成了任务的定义;然后,数据通信服务程序对事务规则及时地解释执行,产生不同的消息包,放人MQSeries消息队列中;由MQSeries通道负责传输到目的地的消息队列中,目的地的数据通信服务程序从队列中取得消息包,将消息包解释成有意义的数据库操作命令,对目的地数据库操作,或将消息包解释成有意义的警示信息,给相应的应用程序使用。
3.5网络传输安全性
为了保证电力市场交易中心及发电厂数据传输和消息传输的安全性,电力市场系统可采用基于SecureSocketsLayer(SSL)和TransportLayerSecurity(TLS)协议的TheJavaSecureSocketExtension(JSSE)体系结构进行网络编程。其功能包括数据加密、服务器端和客户端的安全认证以及数据完整性的保障。
4范例
本文将结合一个实际的电力市场系统中预调度计划子系统的实现,对所提出的方案进行更明确的阐述。
图3是预调度计划管理系统的实际结构。客户端是普通的n浏览器,用户在执行查看预调度计划结果数据、设置计算参数等功能时,通过操作界面向网页服务器发出请求,网页服务器通过应用服务器访问数据库并反馈给用户;另一方面,用户在执行预调度计划核心算法时,由客户端向网页服务器发出计算请求,网页服务器调用计算服务器上的核心算法,同时接受其返回的信息,并将该信息反馈给客户端;计算结束后,用户又可以通过客户端访问网页服务器,查看计算结果。整个过程牵涉到的各台服务器分工明确,负担合理,安全性得到了充分保证。
通过此例可以看出,本文提出的基于Web技术的电力市场系统设计是可行的,它能充分保证系统运行的性和安全性。其中采用SSL加密技术对TCP/IPSocket通信协议提供安全保证。