结构化编程、面向对象编程和组件是编程范式方面的努力;
客户机---服务器架构、三层架构乃至N层架构师架构方面的进化。
SOA接受异质
这个转变产生的效果正如敏捷编程接受"需求不断变更"产生的效果一样,
从抗拒到接受,观念上转变的一小步,实践中将形成巨大的差异。
SOA接受变化
甚至必须在变化中才能产生出自己的SOA。强调SOA是必须根据自己的情况逐步演化出的一个IT战略。
人们发现,处理可伸缩性和分布的老办法不管用了。我们不再能一致化系统,或维护队系统的控制。
一致化和控制的前提是集中,集中无法扩展,而我们已经将集中发挥到了极致。
正因如此,我么需要一个新的方法------一个接受异质、带来分散的方法。
另外,我们需要解决"业务/IT"鸿沟的难题。这条鸿沟主要是语义上的----业务人员和IT人员似乎在用
完全不同的语言交流和思考。新方法必须将业务和IT的距离拉近到前所未有的程度。
"面向服务的架构(SOA)"正合所需。它是一种帮助系统在增长的同时保持可扩展性和灵活性的方法,
它也有助于填平"业务/IT"鸿沟。
该方法由三个主要元素构成:
①服务
服务一方面体现了自足的、能作为一个或多个流程一部分的业务功能;
另一方面,服务能由任何技术,在任何平台上实现。
②企业服务总线(ESB)
它是个专门的基础设施,它使我们能够用简单和灵活的方式来结合这些服务
③政策和过程
它们处理这样的事实---大型分布式系统是异质的、处于不断维护中的,其所者各异。
SOA接受这样的观念:
在大型分布式系统中,保持灵活性的唯一办法是支持异质、分散和容错。
SOA是个范式;SOA是种思维方式;SOA是架构设计和评估体系。
以下列出SOA的关键技术概念
①服务
本质上,服务就是业务功能的IT体现。
SOA的目标就是基于对业务规则和功能的抽象来构筑大型分布式系统。
②高互操作性
处理异质系统时,第一个目标是能轻松地连接这些系统。
③松耦合
松耦合是表达最小化依赖的概念。
当依赖被最小化时,改动造成的影响也被最小化了,即使部分系统崩溃或当机,
整个系统也能运转。最小化依赖有助于容错和灵活性,松耦合还带来可伸缩性。
SOA要素
①基础设施
基础设施是SOA中使高互操作性成为可能的技术部分。
ESB的关键特性是,它使你能再异质系统间进行服务调用。
它的职责包括数据转化、(智能)路由、处理安全和可靠性、服务管理、监测和日志。
②架构
架构用来对SAO的各种可能性加以限制,从而使系统运转顺利、维护方便。
③过程
大型系统复杂的一个原因是它牵涉了许多不同的人和组织。
因此,从最初的业务思路或需求,到方案实际运转,处于生产状态,有一个漫长的过程。
这些过程包括:
业务流程建模(BPM)
BPM的任务是把业务流程细分为更小的活动或任务,也就是服务。
服务生命周期
定义服务生命周期,即定义服务成为现实需要经历的不同步骤
模型驱动的软件开发
MDSD是处理服务时生成代码的过程
④监管
"监管"是所有流程的元流程,也是SOA的一个总体策略。