从金融机构到制造厂商,企业正不断地采用技术,他们所考虑的目标都是一致的
— 使运营更加高效,能够快速抓住机会,并做出优于其竞争对手的决策。但是,在他们都购买到同样的系统和软件的条件下,实际的优势便体现在以创新和高效率的方式应用这些工具的能力方面。为企业创建一个可以带来巨大收益的应用程序基础架构需要技巧,即确定如何设计应用程序的架构才能高效地利用核心服务。
行业分析师和战略咨询师构想出的最新应用程序架构是面向服务的架构(service-oriented architecture,SOA)。对于许多人来说,它听起来就像是随意地把一些行业时髦词语放在一起而已。但是这个概念本身十分直观。就其核心来说,SOA就是服务的集合。从软件和业务功能两方面的观点看,服务就是定义良好的软件组件,它不依赖于任何调用它的应用程序的上下文或状态。
这些服务通常被实现为Web服务,应用程序可以通过简单对象访问协议(Simple Object Access Protocol,SOAP)来访问它,基于HTTP协议以XML的形式进行传输。在SOA中使用Web标准的优点在于,服务可以更加轻松地适应各种应用程序。不必对服务进行特别的编程,除了使它能够使用SOAP接收请求和传输结果之外。所以,在许多情况下,企业可以很直观地构建Web服务,甚至可以改编现有的软件来创建新的Web服务。
SOA如何赋予企业竞争优势,并使其能够快速对业务机遇做出响应呢?简单来说,它使企业能够定义它所需的基础服务,从而高效地为其核心业务提供服务,并快速适应不断变化的业务环境。实现了这些核心服务之后,任何应用程序都可以调用它们来访问和分析数据,构建新的业务方法,或者提供能够使应用程序快速从投资中获取回报的数据或功能。
这意味着SOA既是一种技术战略,也是一种业务战略。就服务交付核心价值给业务这一方面来说,它是业务战略。设计符合SOA的服务时必须熟悉和了解业务,以便确定什么功能可以跨多个应用程序使用。而且,它们必须足够通用,以支持目的不同的多种应用程序,同时又必须足够特殊,以提供真正的价值给单个应用程序。
从技术的观点看,挑战存在于企业Web服务的架构之中。因为从根本上说,SOA是服务接口的一种流和一种关系,设计接口及其关系需要熟练掌握Web技术、业务流程和服务下的技术平台以及采用它们的应用程序等方面的知识。架构师不仅必须了解如何构造Web服务,而且还要了解现有应用程序和计划未来使用的应用程序如何使用它们。
SOA采用正在加速
在为企业营造竞争优势的浪潮中,SOA的概念到底有多重要呢?根据Gartner Group的分析师得出的结论,SOA在去年已经成为主流,而且在未来,绝大多数企业都会使用这种架构,以期能够在数量渐增的应用程序中融入更多业务领域中的专门知识。特别地,Gartner预计到2006年为止,超过60%的企业将考虑在设计它们的新任务关键型业务应用程序和业务流程的过程中,把SOA当作一条指导原则。另外,到那个时候,超过75%的中型和大型企业已经采用了支持SOA的开发工具和中间件。
显然,企业已经意识到了实现SOA在灵活性和简洁性方面的优势。但是不管概念的简单,构建企业SOA是对技术和业务的巨大挑战。从业务的观点来看,确定交付核心业务需要时需要什么服务要求熟练掌握业务运营和软件架构方面的知识。幸运的是,企业拥有具有专业领域知识的专家,而企业架构师的角色是把这些知识融入到SOA实现的整体规划和设计之中。
在技术上,定义这些服务以及它们到应用程序的接口,然后实现这些服务,是SOA的核心部分。为了提供关键的业务应用程序,服务必须是可靠的、自成体系的,而且能对来自各种客户端应用程序的请求做出响应。这些客户端可能是一些指定的内部用户使用的丰富的Windows应用程序,或者是被数以千计的临时外部客户访问的Web前端。
构建一个可以交付价值的Web服务架构是企业架构师的任务。架构师实现Web服务,然后业务领域专家调用这些服务。然而,业务领域需要的服务可以以不同的形式实现,这取决于可用技术的功能和限制。
这里便是企业架构师增加巨大价值的地方。他或她具有企业基础架构功能方面的知识,以及出众的设计和实现技巧。一些开发人员可以集中精力构建和维护核心服务,而其他人可以快速实现消费一个或多个这种服务的应用程序,使企业能够对不断变化的业务和竞争环境做出反应。如果企业能够构建其架构师可以预见的SOA,将会获得巨大的业务收益。
构建这些Web服务通常超出了企业技术人员的能力之外。富有经验的程序员/分析师既具有编程方面的经验,也具有隐藏在应用程序之后的业务逻辑方面的知识,然而与把这二者融入到Web服务中仍有一些真正的差距。许多这种老手都缺乏编写使用Web协议的应用程序,或者构建可靠且高性能的分布式应用程序的经验。在某些情况下,Java和Java
2 Enterprise Edition(J2EE)平台本身可能不太熟悉。
寻求从Web服务架构获得业务优势的企业必须克服这些难题,以便实现最高效率和灵活性。培训无疑是答案的一部分,但是培训也需要实质性的投资,以及一些为了实现高效率所需的实践经验。
但是只有正式的培训还不能使经验丰富的程序员/分析师成为老练而高效的Web服务开发人员。在J2EE平台和Web服务概念方面的培训提供了技巧,但是现实世界中的实现经验对于交付价值是必不可少的。通常,只有专攻Web服务架构师和高级开发人员才拥有足够的设计和平台实现技巧来设计和构建一种可靠而高效的SOA。
利用设计模式来共享专家知识
有一种方法能够使企业既能够从经验丰富的程序员/分析师获得业务收益,又能够从富有才能的企业架构师获得专家知识,那就是设计模式。设计模式使架构师能够为实现SOA的Web服务组件定义最佳实践,这些组件包括数据库访问、SOAP接收和解码,以及业务逻辑。对上述最佳实践的封装足够清楚,这样,可能在平台或算法方面经验不够丰富的程序员/分析师可以基于该模式成功地编写代码。在许多情况下,模式是与单个程序员可以直接使用的示例在一起实现的。
设计模式可能来自三种不同的来源 — 设计和开发工具厂商,平台社区,以及企业。最佳方法是使用得到普遍信任的工具厂商提供的设计模式,因为企业架构师在构建这些设计模式时对模式库的基础进行了补充,这将给特定的企业增加独一无二的价值。平台社区开发的模式可以填补来自其他两种来源的模式的不足,尽管必须在发布它们用于一般用途之前对其进行充分的测试。
企业可以快速而高效地利用业务和技术架构师的技术来交付SOA战略。通过采用受信任商业模式的组合,开发人员能够把它们的业务专业知识和经过检验的SOA构建块结合在一起。连同企业架构师提供的内部设计和实现专业知识一起,并且被封装为定制模式,这种方法提供了两种最佳选择。架构师能够做到最好
— 设计高效的企业服务 — 而富有经验的开发人员则通过他们在如何构建业务流程方面的知识来增加价值。
这种劳动分工给设计和采用真正代表企业核心服务的SOA提供了最佳机会,并成为了响应业务需求的应用战略的基础。SOA的模式方法是实现这种新兴架构的诺言的必要途径。
原文出处http://www.fawcette.com/special/soa/overview/ |