基于SOA体系结构的未来软件开发实例分析

日期: 2012-05-07 来源:TechTarget中国 英文

  4 应用实例研究

  4.1计算机教学管理系统(CMI )分析

  国家远程教育标准化委员会制定的CELTS-20(计算机教学管理规范哟对于教学管理互操作性有下列要求:①同样的课可以在不同的CMI系统中工作;②分别开发的课能够结合而成为一个CMI系统的课程;③课程可以从一个CMI系统搬到另一个CMI系统;④方便分析学生数据。

  根据SOA在开放性和互操作性方面的原则,服务或模块要能够在不同的环境和平台下方便地共享。因此,对于第一点和第三点来说,以上原则完全可以满足这些要求。

  重用是SOA中的一个关键的核心概念。SOA中鼓励尽可能使用已有的服务,对象和应用来构建一个新的系统而不是重新编码。这样,就满足了第二点的要求,即为不同系统开发的课程就可以通过重用已有应用来形成新的一个CMI系统。

  基于SOA的体系结构又具备松祸合,分布性,灵活性,和可靠性等方面的特点,因此可以方便地从不同的数据来源甚至是不同的系统中分析数据而满足第四点的要求。

  再对CMI中要采用基于SOA体系结构的原因进行仔细分析。在CMI系统中常常要获取学生的基本信息。同样,在考试系统,教务管理系统中,此类的功能也必不可少。所以,同样的功能存在于三个不同的系统中。此外,就是在同一个系统中也有多个模块需要这样的功能,现有的面向对象和基于构件软件开发方法的解决之道同样是用到复用的概念,但这种复用和SOA中复用的重大差异在于前者的复用是一种“代码复用”,而SOA中的复用是一种“功能复用”。用面向对象和基于构件的软件开发方法可能会通过复制已有代码或实例化对象去解决。而在SOA中,只需要将这种“获取学生基本信息”的功能封装成服务,以后在任何一个系统中要用到此类功能时只需要对此进行调用即可。虽然用面向对象和基于构件的软件开发方法看起来存在着冗余编程的问题,可是也算是一种可选的解决方案。随着系统复杂性的增加,如果这三个系统是用不同编程语言运行在不同平台之上,那么用面向对象和基于构件的软件开发方法对于复用相同功能就无能为力,这三个系统必须分别编码去实现同样的功能。可是,如果利用SOA的重用服务的方法,代码无需更动,真正实现“一次编写,处处重用”的目的。因此,采用基于SOA的体系结构开发CMI计算机教学管理)系统较其它技术更具优势。

  4.2基于SOA的CMI系统设计

  由于Java技术具有跨平台的良好特性,而且J2EE提供的Web服务功能可以很容易地构建能够访问现有业务流程的SOA系统。因此使用J2EE技术开发基于SOA的CMI系统,其体系结构如图3所示。

CMI系统体系结构

图3 CMI系统体系结构

  表示层可以包括用户处理接口,与用户交互组件,浏览器或者使用其他编程语言编写的客户端程序。所有的这些客户端程序都可以向不同的服务发送请求。

  防火墙是一种非常有效的网络安全模型,通过它可以隔离风险区域与局域网的连接,同时不会妨碍对风险区域的访问。防火墙可以监控进出网络的通信量,仅让安全的信息通过,同时又可以阻止不安全服务和非法用户以抵制具有危害的数据。

  ESB即企业服务总线,用以实现在通信,集成以及服务交互等方面的功能。本系统使用SOAP/HTTP和WSDL去实现其最低功能。虽然只实现部分功能,但为系统留下增加如内部安全性,服务质量,和消息处理等功能的扩充余地。

  Web服务层即通过无状态会话Bean或Jav-aBean来提供Web服务。

  数据访问层使用不同的技术(比如EJB-CMP,JDO,ADO)和不同的持久性技术访问数据。这一层包含优化的数据访问代码,负责与数据源进行交互,并以相应的Web服务方法所期望的格式把数据返回给这些方法。这样就能保护数据的完整性。

  数据源即各种关系型数据库或是基于XML的数据库,也可以是一组文件,甚至可以是外部的Web服务。

  4.3基于SOA的CMI系统实现

  综上所述,考虑到学生注册在多个系统中也是必不可少的功能,所以结合CMI系统中的学生注册为实例说明如何在Java中创建Web服务。采用的开发工具是Websphere Studio Application Developer5.1。WSAD可以根据Bean创建Web服务,并使用Bean中的消息自动生成WSDL文件,描述所创建的Web服务,使用SOAP分析HTTP的数据等。

  在项目CMI中包括有如下两个类,StuInfo和StuRegisterManager。其中Stulnfo保存有学生信息,在类StuRegisterManager中有createNewStuInfo方法可以写人学生信息。

  启动WSAD中的Web服务向导将。reateNewStuInfo封装成Web服务。在这个过程中可以选择测试Web服务,生成客户代理来方便地进行测试。也可以选择“启动Web服务资源管理器以将此Web服务发布到UDDI注册中心”来将要生成的Web服务直接发布出去。

  在生成Web服务之后,WSAD会自动生成一系列的WSDL文档,其中最重要的是StuRegisterMan-ager.wsdl文件。WSDL文档已被作为描述Web服务的通用方法,对此的理解可以帮助理解Web服务的运行机制。

  WSDL文档的根元素是definitions,message元素表示在客户和Web服务之间传递的变量。port肠pe元素表示在客户和Web服务之间怎样发送该消息。Binding元素表示了客户和Web服务之间如何互发消息,在其transport属性中定义为transport=“http://schemas.xmlsoap.orglsoap/http”,表示客户和服务之间的SOAP消息将采用HTTP协议。Service元素规定客户调用该Web服务的URL,在这里使用本地地址进行测试并且在发布时将把它改为外部可以访问的地址。

  在编码和生成Web服务之后,就可以将它发布出去。在此系统的开发和运行初期,采用了私有的UDDI注册中心,因为主要是要建立基于内部的发现模式,当然也可以把它们发布到公共注册中心。

  最后的一步就是客户端使用所发布的Web服务。不同于EJB客户端通过名字引用EJB,Web服务客户端无需服务名但是必须首先定位Web服务。首先,读取关于学生注册Web服务的WSDL并为客户端生成代理,然后客户端就可以通过RPC使用代理来输人学生信息。

  编码,生成,发布和调用已经完整地构成了一个Web服务开发的全过程。通过对系统进行分析设计出符合前文所述SOA中关于服务要求的Web服务,再根据上述Web服务开发过程将其创建出来,最后对这些Web服务进行恰当的流程整合,一个基于SOA架构松祸合的CMI系统就形成了。

  5 结束语

  SOA的提出代表着标准化、松藕合、粗粒度的软件体系结构的出现,不仅如此,它更代表着不拘泥于具体技术实现方式的一种新的软件开发思想。当然,Web服务的技术在SOA达到成熟过程中起到关键作用,从SOA强调跨越异构平台和不同开发环境方面考虑,Web服务是目前分布式技术中符合SOA提倡标准化的不多选择之一。

  在本文中我们对于SOA的现状、背景、优势、体系结构以及实现方法等各方面进行了介绍和分析。对Web服务作为一种SOA的实现技术也进行了重点介绍。最后,结合了一个具体的实例对于在SOA中开发Web服务进行了详细的说明。

由于SOA自身具有的优势符合了未来软件发展的趋势,并随着各大软件供应商在此展开的深入研究和激烈竞争,它必然会成为成熟的下一代主流开发技术而得到广泛支持和应用。

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

相关推荐

  • 事件驱动框架和SOA在空军的应用

    空军正在利用SOA来改善数据共享,并实时跟踪战机,美国空军机动司令部的Michael Marek解释了企业可从中学习的经验。

  • 揭秘New Relic APM技术细节

    New Relic应性能管理(APM)套件主要用于Web软件开发。它允许用户在面向服务的架构(SOA)上跟踪关键事务性能,并且支持代码级别的可见性来评估特定代码段和SQL语句对性能的影响

  • 仅凭SOA和云无法解决业务数据管理风险问题

    SOA和云可以是某些恼人问题高效的解决方案;这一点我们已经知道了。但是也要记住它们并不是所有事情的直接答案,特别是当你的问题是业务数据管理风险,而不是技术问题时。

  • 总线技术究竟该不该用?

    曾几何时企业服务总线(ESB)被视为企业IT的核心。今天,不仅ESB受到了比被废弃还要糟糕的攻击,若干开发趋势似乎对更简单的消息总线也发起了质疑。