当前位置:首页 > 作文大全 > [分布式应用程序开发框架的研究] 应用程序开发框架
 

[分布式应用程序开发框架的研究] 应用程序开发框架

发布时间:2019-02-22 03:46:36 影响了:

  摘 要:本文介绍分布式应用的相关概念、技术,对CORBA,ICE分布式中间件技术进行讨论, 这种开发框架的软件具有高度的可扩展性与重用性、支持多编程语言开发和分布式部署的特点,非常适合系统实时性、稳定性、控制精度要求高的工业级应用中。
  关键词:分布式应用 CORBA ICE 接口定义语言
  
  引言
   一个分布式系统是若干个独立的计算机的集合,但是对该系统的用户来说,系统就像一台计算机一样。因此分布式应用软件不需要具有整体结构,同时它可以基于多种编程语言开发并运行在多种操作系统平台上。OMG(Object Management Group )对象管理组织在1992年提出利用对象技术的开发一个用于分布式应用的开源框架即CORBA (Common Object Request Broker Architecture)。分布式应用环境都采用Client/Server架构,CORBA的应用提高了分布式应用软件的开发效率。ICE(Internet Communication Engine)是新一代的面向对象中间件平台,开发者只需付出很少的努力,就能够用ICE构建出分布式应用。ICE在概念上与CORBA类似,但在许多方面都有突破性的进展:它的对象模型更简单、更强大;解决了过去困扰中间件的低效问题;提供了许多新特性,比如支持用户数据报协议、异步方法分派、内建的安全性、自动的对象持久,以及接口聚合。
  
  2 分布式应用程序的体系结构
   分布式应用系统基于面向对象的中间件,中间件是一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源。中间件位于客户机/服务器的操作系统之上,管理计算资源和网络通讯。中间件具有标准的程序接口和协议,可以实现不同硬件和操作系统平台上的数据共享和应用互操作。
  基于CORBA的系统架构
  3.1对象请求代理(ORB)
   CORBA是一种架构,它使用远程过程调用(RPC)的模式提供平台独立的进程间通信。一个远程过程调用看起来就像本地函数调用一个过程。对象请求代理(ORB)是CORBA规范的基础,其主要功能是定位服务对象,分析客户对象的请求,获取服务对象的功能接口,在客户与服务对象间建立通信连接。
  3.2接口定义语言(IDL)
   IDL是CORBA的另外一个重要组成部分,用于说明CORBA服务对象完成的功能,但不能够利用IDL实现该功能。IDL是独立于其他编程语言的功能描述性语言,这从另外一个侧面说明了CORBA的语言环境独立性。利用IDL,完成CORBA服务对象方法的说明,然后利用语言映射工具,将用IDL定义的CORBA对象方法说明翻译成高级编程语言(C++或Java)的接口说明,最后根据接口说明,利用C++或Java编写对象实现程序。
  Stub和Skeleton
   客户对象的Stub和服务对象的Skeleton是IDL与对象实现语言之间的桥梁。客户对象Stub是IDL定义的方法接口,经IDL编译器编译后,在编写客户对象时,高级编程语言可应用的用于识别服务对象方法的代码。客户对象Stub提供服务对象接口的简要说明。服务对象的Skeleton是IDL定义的方法接口,经IDL编译器编译后,形成的说明服务对象提供方法的框架。对于服务对象接口中的每个方法,必须在服务对象程序中实现。
   对于ICE的对象模型,Slice(Specification Language for ICE)就是用来描述ice的对象模型有哪些接口,有哪些操作,以及要交换的数据类型。可以把Slice看成是一个合约,各种平台,各种语言映射,相互调用的公共接口,共同遵守的规则。Slice 允许以一种独立于特定编程语言的方式定义客户-服务器的合约。 Slice 定义由一个编译器编译成特定编程语言的API,也就是说,与所定义的接口和类型对应的那一部分API,会由生成的代码组成。
  语言映射
   目前ICE提供了c++,java,c#,vb,python,php的语言映射。因为各种语言的对象模型是不一样的,必须把这些不同的对象模型映射到同一个模型上,进行操作。这就是一个抽象的过程。直接去定义接口,然后剩下的工作 就交给Ice Run Time来完成各种语言之间对象的相互转换。
   客户机与服务器的结构
   客户与服务器都由这样一些代码混合而成:应用代码、库代码、根据Slice 定义生成的代码。整个结构有两个方面:客户端/服务器,它们共同使用的就是ICE核心(Ice Run Time),上图中关键的部分就是ICE核心,也就是Ice Run Time 。ICE 核心为远地通信提供了客户端和服务器端运行时支持。其中的大量代码所涉及的是网络通信、线程、字节序,以及其他许多与网络有关的问题。客户端=ICE核心+代理代码+ICE API 。服务器=ICE核心+骨架(skeleton)代码+对象适配器+ ICE API ,Proxy和Skeleton都是由Slice的定义生成的。对象适配器会把来自客户的请求映射到编程语言对象上的特定方法。
  
  ICE的实际应用
   Client连接Server时一定要注意设置超时时间,不然很容易导致网络阻塞;在涉及到一些传递通信所需要的参数,如端口、IP、协议等,这些参数应该从配置文件里读取,或者通过参数传递,不要进行硬编码;在利用多线程进行异步程序开发时,要注意给共享资源加锁,以免导致数据被破坏;我们在编写ICE的程序时,可以将客户端程序封装成一个类,至少包括三个方法,初始化通信器,调用相关操作,销毁通信器。这样当项目组成员需要与服务器进行通信时,只需要实例化此类即可,从而提高效率并更加标准化;对于日志及编程调试信息可以继承并改写ICE::Logger类,从而定制记录跟踪、警告或错误消息。
  
  结语
   综上比较,ICE与CORBA 相比是一个简单的平台,使用它开发工作量更小,代码更少,复杂性也更小。它所遵守的将接口与实现分离、位置透明(服务的使用和服务的位置无关)、类型化的接口、接口支持多继承等原则,使它完全可以用来开发工业级的分布式应用。
  
  参考文献
  [1] Henning M,SpruieU M,Ice分布式程序设计 3.3.1b,2009-07.
  [2] Henning M,新一代面向对象中间件[J].程序员,2004(9).
   [3] Henning M,Steve Vinoski,基于C++ CORBA高级编程,译者 徐金梧,徐科,吕志民等.清华大学出版社,2000-07.
  
  作者简介:童琨 男 高级工程师 1976年3月出生 在马鞍山钢铁股份有限公司自动化工程公司从事计算机软件开发.
本文为全文原貌 未安装PDF浏览器用户请先下载安装 原版全文

猜你想看
相关文章

Copyright © 2008 - 2022 版权所有 职场范文网

工业和信息化部 备案号:沪ICP备18009755号-3