SOA是什么

估计很多人都听说过SOA这个词了,但是很多人还是不知道到底什么是SOA。开发人员很容易理解为是一个Web Service,但是这绝对不是SOA,那顶多只能算是SOA的一种实现方法。那么,到底什么是SOA呢?最近正在看SOA Source Book,本篇我将介绍一下SOA到底是什么?如有错误,欢迎指正。

SOA是Service-Oriented Architecture的首字母简称,它是一种支持面向服务的架构样式。从服务、基于服务开发和服务的结果来看,向服务是一种思考方式

服务

  • 是一种有特定结果的可重复业务活动的逻辑表示(例如,检查客户信用度、提供天气预报等)
  • 自包含
  • 可以组合其他服务
  • 对于服务使用者来说是"黑盒"的

SOA架构样式

  • 基于服务的设计,这些服务代表的是组成企业业务流程的业务活动
  • 服务提供上下文描述(业务流程、目标、规则、策略、服务接口和服务组件),使用服务编排来实现服务
  • 对技术设施提出要求,建议采用开放标准,以便更好的实现可交互性和透明性
  • 实现是基于特定环境的,约束和使能都必须在上下文中进行描述
  • 服务描述和实现需要很好的治理
  • 需要进行验证式的测试之后才能决定这个服务是否好的服务

SOA和EA

虽然SOA和企业架构(EA)的开始不一样,但是现在SOA已经成为企业架构的一个组成部分,所以这里也介绍一下企业架构。

  • 企业架构比IT范围大很多
    • 除技术之外的业务操作、财务、人等
    • 它包含除IT之外的技术,例如制造或物流等
  • 组织实现最大化定义的一些改变
  • 对当前操作的基本控制和治理
  • 企业持续改变,带来成本的减少并能提高商业价值

TOGAF是一个业界企业架构框架,如果想更多了解TOGAF,可以参考我写的企业架构框架-TOGAF v0.2.pdf

由于企业架构范围很大,SOA Source Book值关注企业架构的IT组件:

  • 企业IT的战略性开发
  • 一个完整的企业系统,而不只是一部分系统
  • 长期的IT演进,而不只是满足于短期目标

SOA

  • SOA并不会增大IT系统的内容,但是会提高它们的可交互性
  • IT系统执行一些被明确定义和描述业务活动上下文的服务
  • 之前的应用是那种大的、一整块的应用,只有很小的可交互接口,比较勉强的做集成,对交互也不提供保证。而SOA提供一些小的、模块化的服务,这些服务接口被清晰描述和约定。

Overview of SOA

SOA架构维度

  • 成功应用SOA需要具备丰富的知识和技能
  • SOA不能解决所有IT问题,IT架构师必须知道什么时候以及如何使用SOA
  • SOA将是一个大的投资,是从企业长期战略来考虑的
  • 有时候,技术可能会改变战略,但是业务需要和可能性仍旧是主要驱动力。这也是引入企业架构的原因,企业架构会依据企业的长期战略来设计IT战略。

SOA和无边界信息流(Boundaryless Information Flow)

  • The Open Group的愿景是Boundaryless Information Flow.

  • 因为SOA可以带来无边界信息流,所以SOA在The Open Group占据了重要地位
  • 使用服务来替代应用

SOA给企业带来敏捷

有三个不同的方法来实现企业敏捷性

  • 服务组合
  • 模型驱动开发
  • 服务虚拟化

架构师能够把这些方法都应用到SOA上,但是它们需要不同的基础设施的支持,你必须根据需求来选择合适的方案。

SOA功能和作用

功能

作用

基础设施

Service

  • 改善的信息流
  • 对外公布的能力
  • 功能组织的灵活性
 

Service Re-use

  • 低的软件开发和管理费用

Service repository

Messaging

  • 配置灵活性

Messaging program

Message Monitoring

  • 商业智能Business intelligence
  • 绩效度量
  • 安全攻击检测

Activity monitor

Message Control

  • 应用管理策略
  • 应用安全策略

PDPs and PEPs

Message Transformation

  • 数据转换

Data translator

Message Security

  • 数据机密和集成

Encryption engine

Complex Event Processing

  • 简化软件结构
  • 快速适配外部不同环境的能力
  • 提高可管理性和安全性

Event processor

Service Composition

  • 快速开发新的功能组合

Composition engine

Service Discovery

  • 优化绩效、功能和成本的能力
  • 更容易的系统升级

Service registry

Asset Wrapping

  • 集成现有资产的能力
 

Virtualization

  • 提高可靠性
  • 可以扩充满足不同要求级别
 

Model-driven Implementation

  • 快速开发新功能

Model-implementation

environment

 

      转载自周金根 [ http://zhoujg.cnblogs.com/ ]

SOA框架的更多相关文章

  1. 支付宝soa框架发展思路(转载)

    大家好,这里是首届QCon Beijing的现场,现在坐在我的旁边是的支付宝的首席架构师程立.先给大家介绍一下,支付宝架构发展到今天,经历哪些时期,都有哪些里程碑? 我回忆一下,支付宝系统架构发展大概 ...

  2. 从零开始设计SOA框架(三):请求参数的加密方式

    第二章中说明请求参数有哪些,主要是公共参数和业务参数,服务端需要对参数进行效验,已验证请求参数的合法性 参数效验前先解释下以下参数: 1.参数键值对:包括公共参数.业务参数      1.公共参数:按 ...

  3. 从零开始设计SOA框架(二):请求/响应参数的设计

    每个接口都有请求参数.响应参数.其中请求参数分为公共参数和业务参数.响应参数分为两类:正常的响应参数.统一的错误参数   一.请求参数 1.公共参数:每个接口都有的参数,主要包含appkey.时间戳. ...

  4. Ant.SOA微服务框架开源

    开源地址:https://github.com/yuzd/AntServiceStack   框架特色0.Service Management(服务治理) 1.CodeGen Contract Fir ...

  5. 浅谈SOA

    概念 wiki对于SOA定义如下: A service-oriented architecture (SOA) is a design pattern in which application com ...

  6. SOA、ESB、NServiceBus、云计算 总结

    SOA SOA 是通过功能组件化.服务化,来实现系统集成.解决信息孤岛,这是其主要目标.而更进一步则是实现更快响应业务的变化.更快推出新的应用系统.与此同时,SOA 还实现了整合资源,资源复用. SO ...

  7. WCF SOA --- AJAX 跨域请求处理 CORS for WCF

    一.问题        跨域请求无法处理的问题,由于为了阻止恶意的网站通过JS脚本来窃取正常网站受保护的资源.所由所有的浏览器的默认策略是阻止XmlHttpRequest的跨域的异步请求. 但是对于一 ...

  8. SOA、ESB、NServiceBus、云计算

    SOA.ESB.NServiceBus.云计算 总结 SOA SOA 是通过功能组件化.服务化,来实现系统集成.解决信息孤岛,这是其主要目标.而更进一步则是实现更快响应业务的变化.更快推出新的应用系统 ...

  9. webService-cxf框架的使用

    webService-cxf框架的使用: 1:简介: wbservice常用框架 Axis: --> Axis2 XFire: -->(Web Service框架) XFire是codeH ...

随机推荐

  1. Python模块-requests(二)

    会话对象 会话对象能够跨请求保持某些参数. 它也会在同一个 Session 实例发出的所有请求之间保持 cookie, 期间使用 urllib3 的 connection pooling 功能. 所以 ...

  2. Centos6.5_64位系统下安装Oracle 11g

    一.硬件要求 1.内存与Sweap:内存2G(以上),Sweap 2G(以上) 内存: 1-2G 2-16G 16G以上 Sweap: 1.5倍内存 1倍内存 16G 检查:# grep MemTot ...

  3. PopupWindow 防微信弹出右 侧窗体(继承PopupWindow )

    1, pop自定义 public class SelectPicPopupWindow extends PopupWindow { private Button btn_take_photo, btn ...

  4. Dialog 自定义使用3(回调点击事件)

    1 , Dialog布局 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns ...

  5. elasticsearch2.x插件之一:marvel(简介)

    在 安装插件的过程中,尤其是安装Marvel插件遇到了很多问题,又要下载license.Marvel-agent,又要下载安装Kibana,很多内容 不知道为何这样安装处理.仔细看了看ElasticS ...

  6. Hadoop 1.2.1 MapReduce 例子

    自学hadoop真的很困难,主要是hadoop版本太混乱了,各个版本之间兼容性并不算太好.更主要的是网上的很多MapReduce的Java例子不写import!!!只写类名!!!偏偏Hadoop中有很 ...

  7. [转发]深入理解git,从研究git目录开始

    转发学习的啦. 似乎很少有人在读某个git快速教程的时候会说:“这个关于git的快速教程太酷了!读完了用起git来超级舒服,并且我一点也不怕自己会破坏什么东西.” 对git的初学者来说,刚接触git时 ...

  8. unreal3对象管理模块分析

    凡是稍微大一点的引擎框架,必然都要自己搞一套对象管理机制,如mfc.qt.glib等等,unreal自然也不例外. 究其原因,还是c++这种静态语言天生的不足,缺乏运行时类型操作功能,对于复杂庞大的逻 ...

  9. Luogu 3320 [SDOI2015]寻宝游戏

    一开始还真没想到. 发现从所有有宝藏的点出发绕一圈只要不刻意绕路答案都是一样的,即我们呢要求的最后答案$ans = dis(x_1, x_2) + dis(x_2, x_3) +... + dis(x ...

  10. centos7命令行和图形界面的相互切换(附centos7安装配置教程)

    一.最近安装了centos7,发现在命令行和图形界面的相互切换命令上,与centos以往版本有很大不同,先整理如下,加深记忆. 1,centos7默认安装后,跟其他版本一样,启动默认进入图形界面: 2 ...