刘艳艳
(哈尔滨医科大学附属第一医院 信息中心,哈尔滨 150001)
设计模式下计算机软件总线体系结构研究
刘艳艳
(哈尔滨医科大学附属第一医院 信息中心,哈尔滨 150001)
随着计算机技术以及各软件应用的开发,其已经逐步成为我们日常生活以及各企业工厂开发生产中的一个重要工具;而目前在软件开发与应用上仍存在着一些问题,软件开发方式也急需改变;为此,提出设计模式下计算机的基础下进行研究,依据计算机软件总线的思想,采用CORBA作为主要标准,构造计算机软件总线的体系以及开发思想,并且设计出在整体结构当中各个模块所实行的功能;实现应用JAVA和C++语言,编写客户端以及服务器之间的通信构成,最后进行该思想改进后计算机跨语言通信实际检测,检测结果良好,具有很强的通信效果和对于软件以往问题的解决。
设计模式;计算机软件总线;CORBA标准;跨语言通信
随着计算机技术的提出以及不断发展,配合应用软件的开发与应用,其已经逐步成为当今我们日常生产生活中必不可少的一部分。而随着社会的不断进步,对于软件应用和相关的系统容量要求也不断地加深。软件构架化在20世纪90年代被提出,在很大程度上解决了这种问题。在当前的系统规模中,由于一个系统需要完成多项并行功能,为此,采用软件的复用以及集成将是非常重要的功能。目前,软件构造化理论的提出,软件构造模型已经成为当今较为普遍认同的开发总体标准和开发要求。在这种结构下进行软件开发为提高开发效率、开发质量,以及对于结构模式的充分利用,相关的开发人员对于开发过程则需要更多的使用软件复用方式进行软件构造的设计,并且根据新软件的相关要求建立有效的应用系统。但是在目前的环境下,基于构件的软件开发仍然面临着一些问题,最具代表性的就是单机性太强,不能适应当前网络环境的应用和当前网络发展的相应要求[1]。
因此,本文根据当前设计模式下计算机的复用方式以及结构模式进行研究,提出在此基础上进行软件总线体系结构建立,采用CORBA标准作为软件总线结构的开发标准,解决当前较为突出的单机性缺点,并设计出适用于当前网络环境运行的软件体系结构模型。其中,从软件总线结构的设计思想、结构服务、管理维护、总线接口、通信设计这几个方面进行详细介绍,旨在提高当前我国软件的应用开发水平[2]。
所谓设计模式即为代码编写真正工程化,设计模式的提出是根据某代码经过反复使用、多数人知晓、完整的分类编目、代码设计经验而进行总结得出的。设计模式最大的特点就是可以进行代码重复编写和使用,并且使得该代码可以更加容易的被人们所理解以及可靠性的保障。在当前的软件开发过程当中,设计模式已经成为当一个最基本的基础。为此,在当前分布式计算机模式下,应用设计模式的相关思想配合分布式计算机的构造进行软件总线结构的分析和建立很有意义。
在设计模式下可以进行复用的对象软件主要分为两种类型。第一种是应用程序工具箱,我们日常所使用的软件即为相应的应用程序,而工具箱种类繁多,其中举例JAVA的APL即为工具箱当中的一类。第二种则是框架(Framework),其主要是对于某项特定的软件进行复用设计,并且起到协作功能的类别。在当前的技术环境下这种类别也非常多,以JAVA系统为例,EJB(Enterprise Java Benans)就是其中一个较为普遍的,在企业计算环境中,有着广泛应用的框架结构。因为框架的定义属于整体结构类别以及对象参数设计方面,为方便做到具体的应用以及应用软件本身的细节设计,框架起到记录软件应用当中所存在的共同决策,并且根据设计模式的复用条件,进行框架设计。在此之外,应用设计模式下,对于分布式计算机环境的应用软件框架设计可以做到更加完善的理解。一个完整的应用软件框架采用了多种设计模式,为此,对于设计模式的充分理解则可以做到对于当前分布式计算机系统结构和应用软件的设计更有帮助[3]。
本文研究目前设计模式下对于系统构造和框架的设计,依据分布式计算机的相关技术支持特点,采用CORBA的标准作为当前设计模式下分布式计算机软件总线体系结构建立。
2.1 设计思想
在设计的思想当中,该软件总线设计依据4个原则,包括透明性、开放性、可靠性、通信性。
透明性原则是要求软件总线对于使用的用户是透明的,在用户使用软件总线系统的过程中,用户需要使用特定的应用程序向软件总线管理中心传输自己特定的信息并注册账号[4],接着应用程序可以根据所注册信息作为蓝本,发送相关参数符合的消息,并且该消息的格式以及数据的解释工作都由应用程序来进行规划,在透明性当中坚持访问透明性以及重定位透明性。
在开放性的原则当中,应用程序将为用户提供即插即用的服务,其中在开放性当中通信模块的设计如图1所示。在当前环境当中,所有功能以及系统都可以从总线接口处在符合相应的标准情况下接入到整体的总线结构系统当中,并且跟接入的其他软件和系统进行资源共享和信息传递的工作,可以做到对于数据的集成以及模块的随意访问通信要求。这种开发式的软件总线结构大大地降低了在应用程序当中系统和构件之间的耦合程度。
图1 基于软件总线当中的应用集成结构
在可靠性原则当中主要包含了两种意义,总结为两种可靠性原则,其中有软件总线本身方面以及在进行系统组装过程中。而软件总线的可靠性是根据IIOP网络协议以及软件总线的管理办法来实现的。IIOP是一种当前网络中较为普遍的网络协议,这种协议可以保证软件的开发部分以及在使用过程中及时不同的软件应用都可以进行交互操作,进行通信连接。为此,IIOP作为底层的传输协议,对于软件总线的可靠性保证是唯一的体现[5]。
在通用性原则当中,集中体现了应用程序与构件之间的互通操作性能。软件总线本身的数据传输协议较为简单,限制要求不高,采用其他应用程序以及软件进行构件连接和信息互通的过程中,只需要连接软件根据自身的要求和协议方式就可以进行通信连接,对于整体的连接限制极低,为此软件总线结构的通用性得到充分的体现[6-7]。
2.2 软件总线体系的结构设计
在设计模式下的分布式计算机软件总线体系的整体结构设计基本如图2所示。
图2 软件总线的基本组成结构
在此软件总线结果当中,始终以通用核心作为中心,在核心当中包含了适配器(POA)和通信传输协议(IIOP GIOP)等等,并且其都可以实现对象移植能力。在整体的结构当中,由上层的构件开发工作站,其中包括了构件测试、计算、开发、管理系统等方面以及构件储存系统功能组成。在接口界面当中,为实现不同语言应用程序的使用以及不同语音的构件通信功能,采用了IDL(IDL Compile)编译器以及CIDL(CIDL Compile)编译器方式来进行语言程序方面的编辑工作。再应用了APL应用程序来连接系统显示当中的接口界面。因为采用了安全防护技术的原因,应用系统以及软件总线布置上需要依靠安全阶层协议以及防火墙协议来进行接口的布置。并且在安全技术的支持下设立命名服务功能以及通知服务功能[8]。而通用核心的下层部分组成部分则包括了通信核心以及系统服务功能。在这些服务功能中主要有对象交易服务、按值对象、持续状态服务、软件总线控制管理端口、提供目录查询服务功能、鉴定授权管理部分等相关的服务组成部分。在经过了系统开发的过程后,推出的软件总线服务器以及结构应用,将应用后得到的系统使用操作合格文件储存在存放库当中。通过对以上的组成部分以及流程的安排形成一个完整的软件总线体系结构系统[9]。
2.3 软件总线的服务设计
在软件总线的服务设计中主要分为一下几个方面。通用核心、安全接口以及传输层安全性、命名服务、事件通知服务,对象事物处理服务、持续状态服务、按值传递对象[10]。软件总线的服务设计采用量化代码进行注入式编写设计,所示具体代码设计如下:
#inclfgude
insgt N;
int **mgaze;
}
ignt zx,zy;
void PrsdgintsdgMazsdge(int N){
int *l[2],i,j;
}
l[0]=(int*)masggsdlloc(sizeof(l)*N*N);
l[1]=(int*)malsdgloc(sizeof(l)*N*N);
for(i=0;i l[0][i]=-1; } for(i=0;i for(j=0;j if(mdgsdaze[i][j]>1){ l[0][mdgdsaze[i][j]-2]=i; } l[1][mgsdgaze[i][j]-2]=j; } }数据引入...... }for(i=0;i 2.3.1 通信核心设计 在通信核心的设计当中,主要关乎的两个设计方面,可移植对象适配器POA、通信传输协议IIOP,可移植对象适配器的设计目的是为了可保证在软件总线当中任何软件都可以进行通信,提供透明支持以及仆从隐式激活等方面。在每一个构件服务器当中可以存在多个POA,并且每一个适配器都支持一个特有的不同的软件应用,而且它们之间都是相对独立的存在方式。同时在构件组装的过程中,POA所具备的伸缩性决定了软件构件服务的定位策略[11]。而IIOP则是为了实现软件之间可以进行相互通信和操作功能。通信核心的设计过程用公式表示为: (1) 2.3.2 安全接口和传输层安全性 此功能服务是为了保证在通信过程当中为应用程序提供安全保障以及数据完整性的支持组件功能。传输层安全性是处于应用程序协议以及TCP/IP之间的安全协议。在采用CORBA标准进行协议通信的过程中,安全协议位于传输层协议之上,并且在经过了传输层安全协议之后进行相应的IIOP通信功能。在配置安全协议的方法上依靠单一的配置文件或是一系列的工具来进行配置策略。只需要在整体协议代码之上加入小部分的协议代码就可以实现安全协议的配置工作。协议代码如下所示。 if(l[0][i]!=-1)prdgdsintf("(%d,%d)
",l[0][i]+1,l[1][i]+1); elsebrdsgeak; } }intSelMadgze(intx,inty){ if(T>9||R>9||I<0||y<0)return(0) } retufrn(!mgaze[x][y]); }intFinfdMaze(intdsx,inty,intm){ if(x==zx&&y==zy){ msdaze[x][y]=m; return(1) 并且应用程序APL可以对于安全协议进行随时更改,符合当前的网络环境和数据传输的需求。对于安全协议进行更改的计算公式为: (2) 其中:Hj是传输层系数;pj(t)代表安全接口参量;βj为CORBA标准进行协议通信过程的检验数据;aij是养老金给付的管理费用。 2.3.3 命名服务 命名服务则是目录服务的统称,应用了对象的特有标记的名字就可以对于相关的对象进行引用。在结构当中的大部分对象都可以使用命名服务来进行体系内部查找,找得相关的数据或是服务支持。在操作上采用的绑定和释放的办法,在一个服务目录当中绑定一个特有的名字,便可以引用其相关的参数和数据等信息,并且将这些数据储存在目录当中。在使用的过程中用户只需要输入相应的名字信息,就可以搜索到相关的应用程序软件。搜索过程采用如下公式: (3) 其中:va表示命名服务的对象;xa代表相关数据的特征分量;ta代表用户的名字信息;ε为应用程序的参量,表示一个常数。 2.3.4 事件通知服务 在以往的情况中,应用程序所使用的是同步请求以及恢复机制。然而在客户机请求相关的服务器进行相应的操作过程中,为实现同步性的高要求,客户机和服务器之间的连接呈现出应用程序软件的缩放性和开放性会受到较为明显的限制。并且客户机和服务器应用程序之间的耦合状态还为体系处理相关故障中增加了复杂性,严重影响了体系的灵活性要求。采用事件通知服务可以在异步非耦合的状况下实现通信,减少了客户机询问服务器当前状况的次数,而且可以进行了异步通讯传输的功能,具有很大的优势。 2.3.5 对象事物处理 对象事物处理(OTS)定义了两种不同的传播方式:一种是隐式的传播方式;另一种是显式的传播方式。在隐式的传播方式党中,需要特定的IDL来激发远程传播的能力,并且参数附加了上下文。而在显式的传播方式当中,事物的上下文则由IDL的数据格式来进行表现,并且并列在IDL激发参数上。而在应用程序管理中体现为直接和间接这两种方式。直接方式中事物工厂之间生产出相应的新事物,间接方式中则体现出应用程序不会直接出现在事物当中。 2.3.6 持续状态服务 持续状态服务是为了保证软件总线体系可以正常运行并且做到储存相关信息而设立的高效嵌入式数据库。以依靠特定的编辑语言来实现储存功能。在通过更新储存对象化身的同时也会对数据当中的储存对象进行同步更新。而数据库的通信则依靠接口连接总控制端来进行。 2.3.7 按值传递对象服务 按值传递对象(ObV)是为了一个对象可以被按值传递而转化为某种特定的格式的工具。在某个应用领域中每一个对象都占有一个独有的系统内存,保证为它发送的相关指令可作出相应的消息反馈。要将该对象可以传递到其他的应用领域当中则需要将它进行串行化改变,使得消息形式为字节流并且在新的领域当中进行重新组合。 2.4 软件总线体系的管理和维护设计 在软件总线体系当中,应用分布式系统的管理方向主要包含了计算机管理、网络管理、应用程序管理以及数据管理等方面。在分布式网络管理当中主要包含了管理独享、代理、管理者等方面。网络管理协议则指定了代理方面和管理者之间的消息传递格式。其中网络管理当中的协议主要有SNMP、CMIP。在应用程序监控当中采用分布式管理的应用程序监控器,做到不会干扰到管理对象的组成结构而且减少其他技术的输入而实现对于对象的管理办法。主要是由连接到应用程序服务器当中的管理库来实现与管理对象的IDL接口,并且利用这些接口来进行管理器与对象之间的交互作用。而性能监控则在于有关性能瓶颈的信息。通常会产生的反应为立即反应和长久反应这两种方式。在数据库中所支持的动态数据参数发生了参数重新配置,其所在系统中则会立即产生相应的反应。在储存管理当中则起到了对于数据库当中的数据实现备份以及恢复工作,并且对于历史数据进行相应的删除或是更改为新数据。具体运算执行的代码为: truct jinzhanelem { infhjgt yidi; idfgnt erdi int direction strudfgct jinzhagnelem *next; } stdfgruct zhjdan { struct jinzdfhanelem *ding,*di };fg void main() { vodid inidfgtzahn(struct zhan *p) voidjd Datainput(struct mazeelegdm maze[jie][jie]) vjgoid mazecrogdss(struhct zhan *p,struct mazefgelem maze[jie][jie]); strdguct zhan *pstrugct mazeelem maze1[jie][jie] initzdjnahn(p) Dataingjput(jmaze1) mazecdfross(p,mdfaze1) 2.5 软件总线体系内的接口设计 在接口的设计当中基于软件总线体系当中的软件目标建立相应的高结合度的构件组合模式,并且实现每一个构件可以独立完成自身的任务实现构件当中的低耦合度。为此需要对于接口的设计和定义做到明确。将所有的构件规范的划分为多个独立接口,并且使得构件内部的关联性得到限制。在设计软件总线体系的接口时,应用IDL可以满足以上的需求。然而,因为IDL缺乏逻辑性以及控制结构的能力,只能进行相应的接口程序定义。具体运算式如下所示。 (4) (5) (6) (7) 2.6 通信结构设计 在通信结构设计当中主要由软件总线APL、软件总线接口、软件总线系统管理以及软件总线服务来组成。通信方式采用的是“客户机-服务器”的通信方式。在进程与通信结构之间都是一种对等关系。软件总线的功能性则需要根据用户的相应要求来决定,其结构如图3所示。 图3 软件总线体系的通信结构设计 与接口界面上侧连接的是应用程序A和应用程序B。与通用核心右侧为应用系统和软件总线API的安全接口,利用的是安全套接层协议(SSL)和防火墙技术。右侧为命名服务和通知服务。软线总线API的下部为软件总线通信核心的各种服务:对象交易服务OTS,持续状态服务PSS,按值对象ObV,软件总线管理控制,目录服务,鉴定授权管理。 3.1 实验目的 在软件总线平台当中应用Java语言以及C++语言分别编写应用软件,并且生成客户端和通信服务器,通过实际操作,观察该软件总线平台是否可以做到跨语言通信。 3.2 实验结果 在实验当中选择了上述论述当中的CORBA作为标准,并且应用JAVA开发系统开发出了软件总线体系的客户端以及服务器。首先应用OMG IDL语言对接口的语言进行编写和描述,接着再运用编译器来对客户端的存根类、服务器端框架、特定类库和接口进行生成。最后用JAVA语言对程序进行编写,生成客户端和服务器字节码。而另一方面利用C++语言编写程序。程序编写的方式同上步骤大致相同,并对两种编写语言在软件总线体系当中的显示结果进行展示和分析。 具体的编写流程如下: 1)应用IDL对接口文件进行定义,描述功能。 2)应用IDLJ转化IDL文件,并适合JAVA进行编程,生成代码存根和helper类。 3)应用omniidl转化IDL文件,并适合C++进行编程。生成同上。 4)启动服务。 5)启动JAVA编写的服务程序。 6)应用两种编程语言对客户机进行不同的调试和生成服务。 以Java调试服务器和C++语言调试服务器分别做实验,进行对比分析,得到Java调试服务器结果以及C++语言调试服务器结果分别如图4和图5所示。 图4 Java调试服务器结果 图5 C++语言调试服务器结果 结果显示,在启动命令服务的系统显示当中,采用的JAVA服务器端口或是C++语言编写的服务器端口的服务命令一样。为此,可以总结为不同的语言编写行驶在软件总线体系当中所呈现出来的框架是一样的,可以实现不同语言下的通信功能。 本文根据设计模式下的分布式计算机体系,分析当前在软件开发的过程中出现的相关问题依靠软件总线体系进行解决的办法。使得当前的软件开发可以满足多种编写语言通信功能,实现在当前网络环境下的软件开发发展。摒弃了原有的开发方式的单机性质,实现软件开发在网络环境当中进行,提高了开发效率以及质量。并且进行了跨语言程序编写的检测,检测结果显示在软件总线的体系当中完全实现了跨语言编写的功能。而目前这类研究范围极其广泛,其他相关的研究仍亟待开发。 [1] 张秋余,袁占亭,翟志万,等.分布式计算机软件总线体系结构研究与设计[J].计算机工程, 2004,30(20):109-110. [2] 翟志万.分布式计算机软件总线体系结构研究与设计[D].兰州:兰州理工大学,2003. [3] 王 雷,史伟光,周伯生.分布式通信工具TalkBench的设计与实现[J].计算机工程与应用,2002, 38(3):204-208. [4] 孙志安,窦 强.软件总线:体系结构分析与设计[J].指挥控制与仿真, 2009,4(2):15-19. [5] 劳宪银.基于插件式的软件总线构件平台的设计[J].电子世界,2016,6(10):25-29. [6] 解文涛, 王 锐, 徐 奡. 高可靠分布式容错计算机架构的研究[J]. 计算机测量与控制, 2016, 24(8):161-164. [7] 黎 晖, 石小华, 林柯军,等. 工程装备嵌入式软件测试环境平台技术研究[J]. 计算机测量与控制, 2016, 24(4):10-12. [8] 李占良, 郭科伟. 基于工业以太网和CAN总线的顶板数据检测系统[J]. 煤炭技术, 2015, 34(2):258-260. [9] 王立华, 江 楠. 基于CAN总线的分布式远程监控系统设计[J]. 仪表技术, 2015,15(1):12-14. [10] 莫世锋, 何贤江, 王秉中. 一种总线型软件体系结构的设计与应用[J].计算机应用, 2004, 24(5):98-101. [11] 郭 兵, 沈 艳, 彭 舰,等.一种基于工具总线的CASE环境体系结构风格研究与设计[J].小型微型计算机系统, 2005, 26(2):239-242. Research on Computer Software Bus Architecture Based on Design Pattern Liu Yanyan (Information Center,First Affiliated Hospital of Harbin Medical University,Harbin 150001,China) With the development of computer technology and software applications, it has gradually become an important tool in our daily life and the development and production of various enterprise factories. At present, there are still some problems in software development and application. Approving the basis of computer in design mode, based on the software bus thought to solve the problem, using CORBA as the main standard, construct the software bus system and the development of ideas, and designed the overall structure in which the implementation of each module function. Realize the application of JAVA and C++ language client and server communication composition. Finally, the idea of improved computer cross language communication actual detection, detection results are very optimistic, has a strong communication effect and software for the past to solve the problem. design pattern; computer software bus; CORBA standard;cross language communication 2017-01-18; 2017-02-15。 刘艳艳(1979-),女,黑龙江哈尔滨人,助理工程师,主要从事计算机软件设计方向的研究。 1671-4598(2017)04-0130-04 10.16526/j.cnki.11-4762/tp.2017.04.036 TP311 A3 软件总线体系建立中的跨语言通信实验
4 结论