`
jiangduxi
  • 浏览: 458695 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论
阅读更多
SOA很早以前就听说过,但是不是很熟,最近有时间研究下,给出一些自己的认识和知识的总结。

   SOA:面向服务架构其本质上是一种将系统模型和系统实现相分离。为什么会分离呢?引导分离的因素就是需求(众所周知,在项目中需求的变更无疑是给项目增大了很大的风险)。SOA本身是一个组件模型,它将 应用程序的不同功能单元---服务(service)。通过服务间定义良好的接口和约定联系起来。接口采用中立的方式定义,独立于具体实现服务的硬件平台、操作系统和编程语言,使得构建在这样的系统中的服务可以使用统一和标准的方式进行通信。这种具有中立的接口定义(没有强制绑定到特定的实现上)的特征称为服务之间的松耦合。
SOA不是一种具体的技术,也是一种产品更不是一种语言,它是一种软件系统架构。更确切的说它是一种架构理念。
    SOA中强调的是服务(Service)它的基本元素也是服务。很多时候你可以将设计和实现出来的软件称为服务品。SOA指定一组实体(服务的提供者、服务消费者、服务注册、服务条款、服务代理等)这些实体详细的描述了如何来提供和消费服务。而这些服务是可互操作、独立、模块化、位置明确、松耦合并且可以通过相关途径查找得到。

以下是在一些资料找看到和学习到的SOA的三种角色的关系。
引用

  服务时一个自包含的、无状态的实体,可以由多个组件组成。它通过事先定义的界面响应服务请求。它也可以执行诸如编辑和处理事务等离散任务。服务本身并不依赖其他函数和过程的状态。

  服务提供者(service provider)提供符合约定的服务,并将它们发布到服务代理。

  服务请求者(service consumer)它发现并调用其他的软件服务来提供解决方案。

  服务代理者 (service broker) 产生由服务提供者发布的软件接口。

  这三种 SOA 参与者:服务提供者、服务代理者以及服务请求者通过 3 个基本操作:发布(publish)、查找(find)、绑定(bind)相互作用。服务提供者向服务代理者发布服务。服务请求者通过服务代理者查找所需的服务,并绑定到这些服务上。服务提供者和服务请求者之间可以交互。


所谓服务的无状态,是指服务部依赖任何事先设定的条件,是状态无关的(state-free)。在SOA架构中,一个服务不会依赖于其他服务的状态。它们从客户端接受服务请求。因为服务时无状态的,它们可以被组合、编排、序列化成多个不同序列,来执行逻辑。

SOA的一些特征:
引用

  服务的封装(encapsulation).将服务封装成用于业务流程的可重用组件的应用程序函数。它提供信息或简化业务数据从一个有效的、一致的状态向另一个状态的转变。封装隐藏了复杂性。服务的API保持不变,使得用户远离具体实施上的变更。

服务的重用(reuse)。服务的可重用性设计显着地降低了成本。为了实现可重用性,服务只工作在特定处理过程的上下文(context)中,独立于底层实现和客户需求的变更。


·服务的互操作(interoperability)。互操作并不是一个新概念。在CORBA、DCOM、web service中就已经采用互操作技术了。在SOA中,通过服务之间既定的通信协议进行互操作。主要有同步和异步两种通信机制。SOA提供服务的互操作特性更利于其在多个场合被重用。


·服务是自治的(Autonomous)功能实体。服务是由组件组成的组合模块,是自包含和模块化的。


SOA非常强调架构中提供服务的功能实体的完全独立自主的能力。传统的组件技术,如。NET Remoting, EJB,COM或者CORBA,都需要有一个宿主(Host或者Server)来存放和管理这些功能实体;当这些宿主运行结束时这些组件的寿命也随之结束。这样当宿主本身或者其它功能部分出现问题的时候,在该宿主上运行的其它应用服务就会受到影响。


SOA架构中非常强调实体自我管理和恢复能力。常见的用来进行自我恢复的技术,比如事务处理(Transaction),消息队列 (Message Queue),冗余部署(Redundant Deployment)和集群系统(Cluster)在SOA中都起到至关重要的作用。


·服务之间的松耦合度(Loosly Coupled)。服务请求者到服务提供者的绑定与服务之间应该是松耦合的。这就意味着,服务请求者不知道提供者实现的技术细节,比如程序设计语言、部署平台,等等。服务请求者往往通过消息调用操作,请求消息和响应,而不是通过使用 API 和文件格式。


这个松耦合使会话一端的软件可以在不影响另一端的情况下发生改变,前提是消息模式保持不变。在一个极端的情况下,服务提供者可以将以前基于遗留代码(例如,COBOL)的实现完全用基于 Java 语言的新代码取代,同时又不对服务请求者造成任何影响。这种情况是真实的,只要新代码支持相同的通信协议。


·服务是位置透明的(location transparency)。服务是针对业务需求设计的。需要反应需求的变化,即所谓敏捷(agility)设计。要想真正实现业务与服务的分离。就必须使得服务的设计和部署对用户来说是完全透明的。也就是说,用户完全不必知道响应自己需求的服务的位置,甚至不必知道具体是哪个服务参与了响应。


[b]三个抽象级[/b]
引用

从概念上讲,SOA 中有三个主要的抽象级别:

·操作:代表单个逻辑工作单元(LUW)的事务。执行操作通常会导致读、写或修改一个或多个持久性数据。SOA 操作可以直接与面向对象 (OO) 的方法相比。它们都有特定的结构化接口,并且返回结构化的响应。完全同方法一样,特定操作的执行可能涉及调用附加的操作。

·服务:代表操作的逻辑分组。服务可以分层,以降低耦合度和复杂性。一个服务的粒度(granularity)大小也与系统的性能息息相关。粒度太小,会增加服务间互操作通讯的开销;粒度太大,又会影响服务面对需求变化的敏捷性。


·业务流程:为实现特定业务目标而执行的一组长期运行的动作或活动。业务流程通常包括多个业务调用

在SOA中,业务流程包括依据一组业务规则按照有序序列执行的一系列操作。操作的排序、选择和执行称为服务或流程编排。典型的情况是调用已编排服务来响应业务事件。从建模的观点来看,由此带来的挑战是如何描述设计良好的操作、服务和流程抽象的特征以及如何系统地构造它们。这些涉及服务建模、特征抽取的问题已经成为现阶段人们关注的焦点。




分享到:
评论

相关推荐

    正确认识SOA的架构与规划

    【SOA架构与规划的理解】 服务导向架构(Service Oriented Architecture,简称SOA)是现代IT领域的核心概念,被IT行业分析公司Gartner视为主导软件创建和交付的主要框架。SOA的重要性在于它能够帮助企业构建灵活且...

    Introduction_of_SOA_standard

    政府、企业和个人用户对SOA有了初步的认识,其中一些业务领导者将其纳入政策领域。随着SOA逐渐被理解和接受,其标准化工作显得尤为重要,旨在消除技术壁垒,促进国内和国际间的合作,推动整个IT系统建设的领先思路。...

    从架构和规划正确认识SOA

    SOA(Service Oriented Architecture,面向服务的架构)无疑是当前信息技术领域的热门话题。著名咨询机构Gartner称,SOA将成为创建和交付软件的...如果企业是从架构及规划的角度考量SOA,就会对其优势有更深入的认识。

    SOA Governance: Framework and Best Practices

    - **培训与教育**:提升员工对SOA治理重要性的认识和技能水平。 #### Oracle SOA治理框架 Oracle提出的SOA治理框架涵盖了六个关键步骤: 1. **定义治理策略**:确定SOA治理的目标、原则和范围。 2. **建立治理...

    Oracle SOA实施的最佳实践和案例分析:江苏电力SOA实例分析

    - **增强沟通与培训**:对所有相关人员进行SOA理念和实践的培训,提升他们对SOA价值的认识。 - **强化项目治理**:SOA管理委员会发挥了关键作用,确保项目按计划推进,同时协调各方利益,解决冲突。 - **迭代式实施*...

    soa核心技术及应用第三部分

    本书详细的介绍了SCA SDO 和 BPEL,是一本不可多得的好书。 本书是继《SOA·方法·实践》之后,IBM SOA技术专家精心打造的又一SOA技术力作,是SOA专注...使读者在读完本书之后对SOA的核心技术有认识、有想法、有行动。

    SOA实施过程中技术难点.doc

    1. **服务定义与划分**:设计阶段是SOA实施的关键,需要对业务有深入理解,熟悉现有IT系统,并且对SOA有深刻认识。服务的合理划分直接影响到系统的灵活性和可复用性。设计不当可能导致服务过于庞大或过于细碎,难以...

    soa整体架构规划

    - 认识误区导致对“信息孤岛”问题的忽视。 #### 解决方案——SOA架构 SOA通过定义一组可重用的服务组件,提供了一种灵活的方式来连接不同的应用系统,实现跨系统的业务流程整合。SOA的关键特征包括: - **服务...

    SOA标准体系介绍V1.0

    - **用户群体**:对SOA有一定认识,但在实际应用中存在风险和成本顾虑,特别是在金融、电信、烟草、审计和制造等行业。 #### 四、SOA标准问题分析 - **产品与项目层面**:现有实现中包含大量私有标准,导致产品和...

    大规模SOA系统治理中的架构支持-程立

    - 在SOA旅程的开端,组织认识到SOA的重要性,并开始学习SOA的基本概念和技术。 - 组织内部达成一致意见,决定采用SOA作为其业务和技术战略的核心组成部分。 - **创世纪第二天:** - 面临的主要挑战是如何在保持...

    基于SOA架构的解决方案

    2. **认识误区**:很多企业在信息化进程中存在“重硬轻软,重网络轻数据”的认识误区,这种观念导致了对信息资源的开发与利用不足,加剧了“信息孤岛”的问题。 #### SOA架构体系与实施目标 SOA架构体系旨在打破...

    SOA不止是一种IT技术

    虽然微软并未完全拥抱开源,但已认识到社区驱动开发模型的价值。 Service Component Architecture (SCA)被视为对J2EE重型架构的响应,提供了一种轻量级的容器模型,类似于Spring。而XML在SOA中的角色是促进松耦合和...

    SOA达人迷.pdf

    以及在Web 2.0、统一通信和云计算环境中认识SOA。 《SOA达人迷》由赫尔维茨、Robin Bloor、Marcia Kaufman、Fern Halper所著,《SOA达人迷》的读者对象是对面向服务架构感兴趣的IT开发人员、分析师与架构师。通过...

    中国SOA年度调查报告

    - **成长期(2005-2007年)**:随着国际大公司CEO/CIO对SOA价值的认识加深,SOA在中国逐渐落地并得到应用。这一时期,各大软件厂商开始整合产品线,推出与SOA相关的解决方案。中国本地企业也开始意识到SOA的价值,将...

    SOA 技术交流-IBM

    要深入理解SOA,首先要深刻认识IT系统的本质。IT系统的核心在于能够有效地组合人员、组织、岗位、功能、流程以及信息资源等多个要素,从而实现企业内外部运营的优化。IBM强调,在业务场景中理解和使用这些资源是非常...

    SOA:面向服务的体系结构 - 企业投资回报评测实用指南.pdf

    IBM通过对35个跨行业和地区SOA项目的深入研究发现,尽管存在困难,但企业普遍认识到SOA带来的商业效益,特别是在创新领域。为了避免陷入传统的业务案例分析困境,IBM提出了一种简化的方法来评估SOA的商业价值,这...

Global site tag (gtag.js) - Google Analytics