摘 要
在web 应用开发中,之所以能够利用对象的概念,方便地创建灵活,稳定的web 服务,归功于j2ee 的多层体系结构。而在传统软件(非web 应用),如何利用面向对象技术,是本文的主要目的。本文基于一个分布式的开发工具模型 – softengine, 简要阐述了分布式系统的基本技术及特征,包括:任务驱动,分布式对象,流水线式设计模式,以及数据安全等关键技术 。
1. 前言
自从有了j2ee 体系结构,基于诸如:bea weblogic, ibm websphere 以及sun one 等多层结构的应用服务器,web 开发已变得如此的便捷、高效。web 程序工程师也不在过多的关心如何解决系统稳定性、高负荷等问题,而精力更多地集中在如何实现应用逻辑。比如:现在,很少有人在采用了上述的中间件产品后,还问津系统是否稳定、如何扩容等问题。因为j2ee 体系,已经解决了这些繁琐的技术难点。
而其他的、非web 方式的传统软件开发工程师就没有如此的幸运了。特别在一些基础分布式系统、实时系统及数据传输系统的开发项目,基于web 方式的应用已无法解决。j2ee 已无法提供更多的帮助。此时,只能依靠程序员从系统最基本的功能开始开发。除功能外,系统性能好坏,完全取决于开发人员的素质及经验。在短时间内构造出如同web 应用一样稳定、高效的系统,简直成为一种梦想。
为了实现这个梦想,软件的“总线结构”孕育而生。所谓总线结构,就是所有的功能部件以相同的方式连结在一个用来相互通信的结构性部件上。由此带来的好处是,部件的内部设计被独立出来,再也不必考虑部件之间的互连问题,设计人员可以专注于部件的功能设计 。
2. 分布式系统所应具有的体系结构
一个分布式计算系统(distributed computing system ),就好比现实生活中的一个公司。其中,某些职员负责日常的内部事务保证公司正常运作;某些职员负责对外联系工作,保持与其他公司的关系;在公司员工之间定义了一定的工作流程,通过固定格式的表单提交任务及交换信息。在公司运作中,只要员工的职责及工作流程保持不变,其他的可变因数,如:工作的物理位置或交换信息的不同,都不会造成本质的变化。
因此,在分布式系统中,需要定义出不同的职能对象。这些对象是可分布的。对象之间还需定义各种内容的信息/ 消息体。以softengine 为例,定以了三种最基本的元素对象:
功能对象(function object) ,负责内部功能操作。
服务对象(serve object) ,具备通讯能力。
任务对象(task object) ,在功能及服务对象间传递信息。
对象间的协调、信息传递等复杂的操作,被封装在softengine 的内核。通过简单的接口对象,演变出各种不同的应用系统。如下图,所示的体系结构 :
图表 1 the architecture of softengine
components area 组件局域 是一个开放式的区域。为应用组件提供了三种主要的接口: 功能接口(function interface)、服务接口(serve interface)、任务接口(task interface) 。继承了面向对象的特点,组件局域具备了许多“软总线”的特性,可以灵活地加载、卸载应用对象 。
softengine kernel 内核 是softengine 的核心部分,封装了大部份的内部操作,如: 对象间的协作、任务传递和对象的分布管理等。其中最主要有两个部件: 任务通道(task channel)和通讯通道(communication channel) ,用于安全,有效,准确地传输数据 。
task channel 任务通道 直接连接每个对象,传输任务信息从一个对象到另一个对象 。
communication channel 通讯通道 连接每个分布的softengine 内核。传输任务信息从一个softengine 到另一个softengine 系统 。
singleton model 独体运行模式. 如果应用系统不需要分布,也就是说:所有的应用组件发布在同一个softengine 环境中,那么这个单独运行的模式叫独体运行模式 。
group model 群体运行模式. 基于独体运行模式,应用组件被分布在不同的softengine 系统。彼此之间通过通讯通道连接在一起,形成一个分布的系统,称之为: 群体运行模式 。
softengine 的体系结构,以多态的方 式 ( 独体singleton / 群 体 group ) 存在。独体充分表现了软总线的特性;而多个独体组成的群体表现出分布式的系统特性。
从独体上看:是软总线结构的应用软件,其中的每个模块(对象object )以插件的方式,通过系统提供得接口及配置文件,发布在系统上。对象彼此之间,通过任务通道(task channel)协调工作在一起,而object 之间的构件操作被封装在softengine kernel 内。
从群体上看:是一个分布式的结构,每个独立运行的softengine 系统,通过kernel 的通讯通道(communication channel)彼此连接,协调工作,成为一个完整的强大的分布式系统 。
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器