没有合适的资源?快使用搜索试试~ 我知道了~
© 2013作者。由爱思唯尔公司出版信息工程研究院可在www.sciencedirect.com上在线获取ScienceDirectIERI Procedia 7(2014)71 - 762013年应用计算、计算机科学与计算机工程国际会议面向服务和分布式对象Usha Batraa,Saurabh Mukherjeeb,Anuj Ramesh Yadavca,cITM University,Sector 23 A,Gurgaon,122017,India印度拉贾斯坦邦巴纳斯塔利大学摘要分布式对象计算是一种范例,它允许对象分布在异构网络上, 允许每个组件作为统一的整体进行互操作。一种革命性的编程范式的演变,有望对我们与计算机、人和地方的交互方式产生深远的影响,这就是众所周知的面向方面编程。中间件平台,如RMI、CORBA、DCOM、J2EE和.NET平台,为复杂的分布式环境提供了抽象。分布式中间件很难构建和实现,的 分布式 框架 征收 一 大 代码开销由于 到 的 具体 分布式系统编程公约。在本文中,我们实现方面与分布式对象技术和Web服务,并比较的实现行为的分布式系统的编程概念相比,基于Web服务的设计分布式中间件框架。的 研究 挑战 涉及 首先去除横切关切然后对分布式系统领域的三种主要技术RMI、CORBA和Web Services进行了实现和比较。© 2014作者。由爱思唯尔公司出版 这是一篇基于CC BY-NC-ND许可证的开放获取文章(http://creativecommons.org/licenses/by-nc-nd/3.0/)。信息工程研究院负责评选和同行评议关键词:面向方面编程,公共对象请求代理体系结构,远程方法调用,远程过程调用,面向服务的体系结构,Web服务。1. I介绍模块化是OOP成功的主要原则之一。因此OOP由多个模块组成;一个模块被定义为一个独立的功能单元。一些代码片段2212-6678 © 2014作者由爱思唯尔公司出版 这是一篇基于CC BY-NC-ND许可证的开放获取文章(http://creativecommons.org/licenses/by-nc-nd/3.0/)。信息工程研究所负责的选择和同行评审72Usha Batra等人/ IERI Procedia 7(2014)71不能集中到一个模块中。这样的片段往往分散在多个模块中,无视模块独立的定义,在面向方面的软件开发(AOSD)社区中,这样的上下文被称为横切关注点(CC)[1]。OOP支持一个巨大的功能字典没有自己的解决方案来处理CC的命名场景,它是来的,相应的编程范式没有考虑到CC的问题。安全管理、会话跟踪、会话过期、日志记录、跟踪和分析等模块都受到此类问题的影响。遵循CC上下文的后果是冗余、不合理、更新异常、效率低下、代码分散和混乱。AOP是前一个问题的解决方案,它提供了一种方法,可以将这样的代码片段集群起来,一个模块化的单元称为方面[2]。一个方面是一个功能单元,用于将横切代码合并到单个模块[3,4]。AOP并不是OOP的替代品,因为它并没有增强OOP的功能前景,而是通过以方面的形式消除CC来提供理想的模块化,因此前者是后者的扩展[2,3]。分布式系统是一个软件系统,它在分布在不同的组件之间进行交互和协调。 网络,以达到预期的效果。组件之间的这种交互基本上是通过RPC实现的。RPC是一种调用远程过程的方法,无需对交互的细节进行硬编码,远程过程的调用就像该过程在本地可用一样执行。同样的节目。Java版本的RPC称为RMI。RMI只支持本机Java调用,以利用编程独立的交互,另一种技术称为CORBA。例如,通过CORBA,Java过程可以对C++过程进行RPC类型调用。另一种大力宣传的分布式系统开发技术是基于SOA的WS。CC在OOP中的胎儿效应也被继承到RMI CORBA和WS中。因此,在我们的方法中,我们通过将方面与RMI CORBA和WS编织在一起来呈现更清晰的模块化[5,6]。1. 研究挑战a. 首先,通过将CC聚类成一个名为Aspect的单元来去除CC。b. 其次,对分布式系统领域的三个主要事实RMI、CORBA和WS进行了实现和比较本文的其余部分被组织为第二节讨论了Aspectized CORBA的实现技术,第三节讨论了Aspectized WS的实现,第四节给出了Aspectized Distributed Objects和Aspectized Web Service行为的表格比较,第五节给出了结论。2. 面向方面的CORBA。在我们以前的研究[8]中,我们简要介绍了方面和方面化的RMI实现。在CORBA [7,12]中,接口是用接口定义语言(IDL)编写的,这个特定的接口被编译成面向对象语言的特定代码,该代码由通过对象适配器相互通信的存根和骨架组成。对象适配器执行绑定和多态性。它通过协助ORB将客户机请求传递给对象实现来简化ORB的任务。一旦ORB接收到客户端2.1参考我们的基础应用程序开发方面化CORBA实现的步骤[7]步骤1在IDL中创建一个接口,在我们的实现中,接口是HealthCareA,它声明了三个方法estConnection(),getPatientInfo()和shutdown()。Usha Batra等人/ IERI Procedia 7(2014)7173Pe>u一HDRDOSTEP 2使用编译器编译.idl文件由于我们的实现是在java上下文中,因此我们使用idlj(idl到java编译器)。idlj该命令生成一个层次结构的类名为HealthCarePOA,医疗保健运营,HealthCareHolder,以及HealthCareHelper。这些类的专门作用将在本节中进一步阐述。STEP3定义HealthCareImpl类和HealthCareServer类,前者扩展HealthCarePOA并覆盖HealthCareA.idl中声明的方法。而后者处理ORB解析和处理命名上下文。步骤4定义一个名为LogAspect的日志方面。第5步实现名为HealthCareClient的客户端,该客户端使用的注册对象通过的协助HealthCareHelper。narrow(NamingContextExt_reference.resolve_str(name)).步骤6使用命令start orbd -ORBInitialPort 1050 -ORBInitialHost localhost启动ORB步骤7启动HealthCareServer类和HealthCareClient类,该类将调用前一个类方法。_方法:Hashta_id:String[]HealthCarePOA()<HealthCarePOAHealthCareA<>医疗保健运营医疗保健getPatientInfo():void_invoke(String,InputStream,ResponseStream):输出tStream_all_interfaces(OA,bytel[]):String[]_this():医疗保健_this(ORB):医疗保健stConnection():void shutdown():void<><>HealthCarHolderHealthCareA健康是HealthCareHolder()<>HealthCareHelperHealthCareA代码healthCareHelper()insert(Any,HealthCare):voidextract(Any):HealthCaretype():TypeCode:id():Stringread(InputStream):HealthCarewrite(OutputStr am,HealthCare):voidnarrow(Object):HealthCareunchecked_narrow(Object):HealthCare<>HealthCareImpl Corba.healthorb:ORB con:Connection ps:PreparedStatementHealthCareImplsetORB(ORB):void estConnect():voidgetPatientInfo():void shut own():void<>HealthCareServerCorba.healthSystem.out. println(String[]);HealthCareA0.. 1<>HealthCareClient科尔巴电子邮件HealthCareHolder(医疗保健)_read(InputStream):void_write(OutputStream):void_type():TypeCo e<>可串流Org.omg.CORBA.portable_read(InputStream):void_write(OutputStream):void type():TypeC deLogAspectCorba.healthLogAspect()publicMethodExecuted():voidbefore():voidaround():voidSystem. out. println(String[]);ble_id:字符串_typeCode:类型74Usha Batra等人/ IERI Procedia 7(2014)71图1方面化CORBA实现a) 医疗保健运营它是包含原始HealthCareA.idl中声明的所有过程/模块的接口接口,即 方法estConnection()、getPatientInfo()和shutdown()的java特定声明。b) 医疗保健该接口包含HealthCareOperations的特征和特定于CORBA的接口,如org.omg. CORBA.Object和org. omg. CORBA.portable.IDL。c) 医疗保健持有人它用于保存对实现HealthCareInterface的对象的引用该类用于处理Java中IDL中的out或inout在IDL中,如果参数是输出参数,则可以将其声明为out,如果 参数包含一个输入值,并携带一个输出值。d) 医疗保健POA可移植对象适配器(POA)是一种便于对象实现的对象适配器 与不同的ORB通信。这个Java类是一个框架,服务器端代理与可移植对象适配器相结合。它扩展了org.omg.PortableServer.Servant并实现了HealthCareOperations,org.omg. CORBA.portable.CORBA,如图1所示的类图。e) HealthCareStub在服务器端,必须提供两个类:Servant和Server。以前的类名为HealthCareImpl,后来称为HealthCareServer。Servant类是HealthCareA IDL接口的实现,因此扩展了HealthCarePOA并覆盖了方法。f) LogAspect 它声明了一个名为publicMethodExcitation()的切入点,表示任何公共方法,而不管返回类型、方法名和参数列表。 在同一个切入点publicMethodExecution()上定义两个advice before()和around()。 before()advice通过thisJoinPoint.getSignature()和Aspect位置记录当前执行的方法,Aspect位置在方法调用期间通过this关键字执行。 around()advice以纳秒为单位记录方法执行所需的时间3. ASPECTIZED WEB SERVICEWeb服务基于面向服务的架构(SOA)[8]。消息传递设计模式[9,10,11.]允许通过在组件和应用程序之 间 交 换 消 息 来 交 换 信 息 。 在 我 们 的 Web 服 务 实 现 中 , 服 务 器 端 程 序 是HealthCareWebServiceServer.java和与之关联的方面,名为LogAspect.aj,LogAspect类似于AspectizedCORBA中讨论的用于方面化日志CC的方面。3.1开发Aspectized Web Service的步骤[8]STEP 1创建基类。我们已经开发了一个名为HealthCareWebServiceServer的类以及一个方面LogAspect。前者由estConnection()、getPatientInfo()和execute()两个方法组成,后者与CORBA实现中的方法类似请参考图2所示的类图STEP 2在通用发现、描述和集成(Universal Discovery,DISC)中发布此服务为此,我们使用ApacheAxis 2作为实现SOA架构的Web服务注册表[8]。Web服务描述语言(WSDL)包含Web服务的所有重要配置细节、协议和位置,以便客户端可以调用这样的Web服务。Usha Batra等人/ IERI Procedia 7(2014)7175HvuSSSSWWWWW(MnnMeQ一G<>ealthCareWebServiceServerhealth.carecon:Connection s:PreparedStatementHealthCareWebS esConnection():v getPatientInfo():public int findDuplicate(int)<>HealthCareWebServiceServerStubclient.care<>客户端client.c re<>LogAspectclient.careHealthCareWebServiceServerStub(SystemationContext,String,b. HealthCareebServiceServer tub(会话上下文)HealthCare ebServiceServer tub()HealthCare ebServiceServer tub(String)getPatientInfo(GetPatientInfo):void execute(Execute):voidestConnection(EstConnection):voidClient()main(String []):void<>执行client.careMY_QNAME:QNamelocalall:LogAspect()publicMethodExec te():voidbefore():voidround():void<>获取患者信息GetPatientInfo)getOMElement(QName,QMFactory):OMElement serialize(QNa e,XMLStreamWriter):void serialize(QNa e,XMLStreamWriter,Boolean):voidgetPullParser(Name):XMLStreamReader<>EstConnectionclient.careEstConnection()getOMElement(QName,QMFactory):OMElementserialize(QNa e,XMLStreamWriter):voidserialize(QNam,XMLStreamWriter,Boolean):voidgetPullParser(Name):XMLStreamReaderserviceServer()oidoidclient.care一旦客户端接收到WSDL文档,它就可以生成Web服务的服务器存根,然后使用这些存根与Web服务通信。4.创造的目的存根类在我们实施背景正在HealthCareWebServiceServerStub类,然后使用存根方法调用服务。图2 Web服务和Web服务客户端的类图4. 面向方面的分布式对象与面向方面的Web服务面向方面的分布式对象与Web服务参数RMICORBAWeb服务议定书Java远程方法方案因特网ORB间协议简单对象访问议定书服务发现RMI注册表CORBA服务管理/WSDL规范Java远程接口定义Web服务描述接口数据库-IDLWSDL数据模型数学接口定义Web服务描述数据模型数据库-IDLWSDL通信Stub-Stub Skeleton之间通信面向服务骨架通过对象适配器和ORB体系结构语言中性否(Java特定)是(对象特定)是的级别互操作性无语法互操作性语法和语义图3 Aspectized Web Service和Distributed Objects的比较76Usha Batra等人/ IERI Procedia 7(2014)715. 结论本文提出了一种基于面向方面编程的实现方法,比较分布式技术和Web服务。据观察,互操作性的水平是最好的情况下,基于Web服务的分布式通信。面向服务体系结构中的Web服务作为中间件提供了端到端的解决方案。引用[1] Ladded R,《行动中的AJ》,第二版。Manning Publications. 2010年。[2] Filman,R.E. &Friedman D.P.的Aspect Oriented Programming is Quantification andObliviousness。在OOPSLA 2000上的高级关注点分离研讨会。[3] Saigal,N.:Modularizing Crosscutting Concerns in Software,http://www.cse.usf.edu/的横切关注点》,2011年[4] Kaur,A.,Johari,K.:横向问题的识别:一项调查。国际工程科学技术杂志1(3),166[5] 面向应用程序的编程网站,http://aosd.net[6] Amirat,A.K.:需求工程中横切关注点的模块化。国际阿拉伯信息技术杂志,2008[7] John Wiley和Sons,[8] 罗申,W.:基于SOA的企业集成:基于服务的应用程序分步指南,2009年5月[9] Usha Batra,Saurabh Mukherjee,企业应用集成(中间件):在分布式中间件中集成不同企业的烟囱应用程序与面向服务的架构,IEEE国际电子计算机技术会议,2011年[10] Usha Batra,Saurabh Mukherjee,用于医疗保健企业中stovepipe应用程序的消息驱动面向服务集成的软件设计模式,应用计算机和应用计算科学最新研究,2011年[11] Usha Batra,Saurabh Mukherjee,Shelly Sachdeva,Pulkit Mehndiratta,面向方面的编程,用于模块化关注点,以提高医疗保健应用程序的互操作性。论文发表于Springer Verlag LNCS 7813,pp. 197-211,DNIS 2013。[12] 刘景勇,张立臣,钟勇,陈勇。基于中间件的分布式系统软件过程。国际先进科学技术杂志,2009年第13卷。
下载后可阅读完整内容,剩余1页未读,立即下载
cpongm
- 粉丝: 5
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- ***+SQL三层架构体育赛事网站毕设源码
- 深入探索AzerothCore的WoTLK版本开发
- Jupyter中实现机器学习基础算法的教程
- 单变量LSTM时序预测Matlab程序及参数调优指南
- 俄G大神修改版inet下载管理器6.36.7功能详解
- 深入探索Scratch编程世界及其应用
- Aria2下载器1.37.0版本发布,支持aarch64架构
- 打造互动性洗车业务网站-HTML5源码深度解析
- 基于zxing的二维码扫描与生成树形结构示例
- 掌握TensorFlow实现CNN图像识别技术
- 苏黎世理工自主无人机系统开源项目解析
- Linux Elasticsearch 8.3.1 正式发布
- 高效销售采购库管统计软件全新发布
- 响应式网页设计:膳食营养指南HTML源码
- 心心相印婚礼主题响应式网页源码 - 构建专业前端体验
- 期末复习指南:数据结构关键操作详解
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功