软件项目实训及课程设计指导——为什么要应用和实现面向服务的系统架构设计
面向对象的架构设计能够适应不断变化的软件系统的需求,而面向切面架构设计是对面向对象架构设计的进一步扩展和完善,但面向对象的架构设计和面向切面架构设计都是针对单一的软件应用系统设计的方法。面向服务的软件系统体系架构设计方法能够更好地解决企业级的软件应用系统之间的集成、整合等方面的问题。
作者将在本系列文章中为读者介绍面向服务的软件系统体系架构设计方法及应用示例等,欢迎读者提出建议和给出理性的评论。
1、了解企业信息化平台及信息化应用系统构建的客观环境
(1)企业的信息化应用系统的建设是分历史阶段完成的
由于历史和企业本身发展的原因,企业的信息化应用系统的建设是分历史阶段完成的。这就导致企业的信息平台在构建之初都有自己的特定技术平台和系统体系架构,而随着企业经营规模和业务变化等原因,需要对企业的信息化应用系统不断地进行功能完善和修补,这将导致对企业的信息化应用系统的维护和管理更加复杂、同时也加大企业在信息化领域应用的成本。
(2)各个历史阶段所构建的企业的信息化应用系统之间是相互独立而导致数据很难共享
企业目前所面临的信息化状态——也就是企业信息化平台及信息化应用系统的应用环境是异构状态,这将导致企业在具体应用信息化系统的过程中会出现一系列的应用问题:比如企业工作人员为了能够完成某种业务形式的数据统计、数据分析和基于对数据分析的结果而构建出相关的报表和图表,需要分别浏览企业的人事、财务、生产和销售等有关的软件应用系统以获得相关的数据。
但问题是,这些软件应用系统之间却是相互孤立的——不同时期开发的应用系统、不同系统平台中开发的应用系统,工作人员最后却需要重回到手工操作数据的时代,人工干预和重新加工处理各种数据来源的数据。
2、企业所需要的信息化系统是能够提供“知识管理、协同办公”的信息化平台
大型企业一般都有许多子公司或者不同的业务分部,每个分部的业务和经营状态乃至要解决的问题也是有差别的。企业所面临的这样的经营状况,当然也就会导致企业不同的业务部门需要不同的信息化平台和相应的软件应用系统的辅助帮助。
但企业总部和各个分部之间是需要“协作和协同”开展工作。另外,本企业还需要与其上、下游企业之间进行信息共享、协同工作等的应用要求,共同构成一个产业链。因此,企业在经营和发展过程中是需要能够提供“知识管理、协同办公”的信息化平台,下图所示为单一企业的信息化系统中的各个子系统之间的关系图示。
3、企业信息化平台及信息化应用系统所必须要解决的主要问题
(1)首先是如何解决“信息共享”和“服务集成”两大技术问题
从上面所描述的企业信息化平台及信息化应用系统构建的客观环境来看,企业级的应用系统是异构的——技术平台和运行环境等方面往往是不同的。而且随着企业本身和计算机软件技术的发展、网络及硬件设备的不断更新换代,企业信息化平台中的“信息孤岛”问题就越严重。
面对这样的企业信息化应用的局面,企业管理和决策层人员时常会出现这样或那样的困惑——在信息化方面的“投入”与“产出”严重不平衡!如何摆脱这样的困境?要摆脱困境,也就是要求在企业信息化推广工作中解决“信息共享”和“服务集成”两大技术问题!
(2)其次是如何适应多变的企业经营中的业务需求
企业的成长壮大是在经营过程中持续实现的,这也将意味着对软件应用系统的业务需求也是不断地变化和调整的,企业信息化应用系统应该要能够在一定的时期内持续地辅助企业的经营和生产。因此,如何使得企业信息化系统能够适应多变的企业经营中的业务需求?
(3)最后是如何解决异构环境下的各个软件应用系统之间的互联和整合
由于企业的信息化应用系统的建设是分历史阶段完成的,这将不可避免地导致企业的信息化应用系统是异构环境。但企业信息化系统与企业信息化系统之间、企业信息化系统内部的各个子系统之间还需要通讯和共享——也就是异构环境下的各个企业信息化应用系统之间还需要互联和整合。因为企业信息化的应用发展是扩展供应链,支持客户和合作伙伴访问业务服务,IT基础设施如何支持企业以提高适应能力?同时如何解决B2B(Business-to-Business,企业与企业之间)以及EAI(EnterpriseApplicationIntegration,企业应用集成)?
4、异构环境下的企业级应用系统将增加各个系统之间集成和整合的总体成本
企业信息化平台中的“信息孤岛”问题的存在,使企业内部和企业之间大量有用的信息无法共享,业务也无法协同和协作开展,造成大量的信息资源的浪费以及应用系统的重复建设,加大企业信息化的整体成本!
各种技术平台的技术标准也不一致,Sun公司(现为Oracle公司)有自己的J2EE技术规范,微软VS.Net也提出了自己的一套企业平台技术标准,Oracle公司有自己的数据库系统平台!因为在同一个操作系统平台上,不同软件厂商的各种系统级的平台软件之间也常常需要进行集成。同样也将加大平台级系统软件之间相互集成的成本!
5、企业信息化应用系统应该辅助企业提升竞争力而不应该成为“鸡肋”乃至“负担”
随着Internet技术的不断发展和技术的迅速更新,全球化形式的电子商务产生了激烈的竞争局面,企业的产品生产和销售的周期更短。因此,企业在推广信息化平台时,也对信息化应用系统所依赖的技术平台提出了新的应用要求——不同的技术平台下所构建出的各个软件应用系统尽管是异构(运行环境、技术平台、技术实现等方面都不相同)的,但彼此之间却能够“通讯”、“共享”和“协同”!
6、面向服务的体系结构(SOA)能够有效地解决异构环境下的应用系统互联互通
如何满足企业在生产、经营过程中这样的应用要求,IT界的有识之士开始反思传统的面向对象技术和在面向对象技术基础上的面向组件技术所存在的问题。期望能够有新的开发思想和技术支持,WebService技术及基于WebService技术实现的面向服务的软件系统体系架构(SOA,Service-OrientedArchitecture)逐渐普及并已经广泛地被应用到企业应用系统的开发中。
因为SOA可以整合各种组件技术并且以Web方式来提供服务,并且通过松散耦合的基于消息通信模型来与应用程序和其它服务交互,这为以后开发的各种面向服务的应用提供自动的集成,当企业的业务需求发生变化时也不需要对原来的企业应用系统进行改造,真正达到“按需互连”的应用效果。
目前许多系统平台都提供对WebService技术的应用支持,而WebService技术成功实施了面向服务的体系结构。通过WebService技术,企业应用系统程序可以用标准的方法(基于XML语言标准及应用技术)把功能和数据“暴露”(发布)出来,供其它企业级应用程序使用。
7、Java及J2EE应用平台下的WebService技术的支持和实现
(1)JAX-WS
JAX-WS(JavaAPIforXMLWebService)规范其实是一组XMLWebServices的JAVAAPI,它是应用Java语言开发基于SOAP(SimpleObjectAccessProtocol,简单对象访问协议)协议的WebService的标准。使用JWSAPI就可以直接开发简单的WebService应用。
MyEclipse开发工具提供了对JAX-WS全面的技术支持,开发者可以在MyEclipse开发工具中选择File——New——WebServiceProject菜单项目,可以创建出基于JAX-WS的WebServices应用项目——如下示例图所示。
然后在弹出的如下示例图所示的对话框中根据应用项目的要求输入和选择相关的信息——在WebServicesFramework下列列表框中选择JAX-WS框架类型,最终可以创建出基于JAX-WS的WebServices应用项目。
(2)JAX-RS
JAX-RS(JavaAPIforRESTfulWebServices)是一个基于Java的应用程序接口,支持按照表述性状态转移(REST——RepresentationalStateTransfer,简称REST,表述性状态传递)架构风格创建Web服务(WebServices)。由于在JAX-RS中使用了Java注解,从而简化了WebServices应用系统的Web服务的客户端和服务端的开发和部署。JAX-RS是从JAVAEE6版本中开始引入的一个WebServices实现的新技术。
在MyEclipse开发工具中同样也提供了对JAX-RS全面的技术支持,开发者可以在MyEclipse开发工具中选择File——New——WebServiceProject菜单项目,可以创建出基于JAX-RS的WebService应用项目。然后在弹出的如下示图所示的对话框中根据应用项目的要求输入和选择相关的信息——在WebServicesFramework下列列表框中选择JAX-RS(RESTWebServices)框架类型,最终可以创建出基于JAX-RS的WebServices应用项目。
8、JAX-WS和JAX-RS在Web服务的技术实现方面的不同点
JAX-WS其实是传统的SOA的WebServices技术实现(JSR,