你买不来SOA,只能设计自己的SOA。

SOA不是新东西

SOA没有引入新概念,它是个把现有概念和实践放到一起,用于特定需求集的范式。你甚至可以说SOA别的什么都 不是,就是将实用主义和头脑风暴运用到分布式系统上而已。

SOA的基本组成

  • 服务(递进关系)

基本服务(最底层)

组合服务,对基本服务的一个组合。

流程服务,对基本服务的一个配置。

  • 互操作性(Web Services为其一个实现)
  • 松耦合

对于松耦合,书中用了专门的一章来介绍松耦合,但是没有什么硬性规定和快速指南,我们必须根据特定的上下文环境和架构,作出适当的松耦合决策。

构建SOA需要考虑什么?

  • 基础设施:ESB为其一个实现(正要开始研究。。。);
  • 架构:用来加以限制;
  • 流程

业务流程建模(BPM),感觉很像工作流,但文中介绍说是比工作流大一点

服务生命周期

模型驱动的软件开发(MDSD),对于介个吧,感觉平时用EA建模,然后生成代码是不是就是这个意思呢?

SOA与事务

之前一直认为很好很强大的二阶段提交被作者说:在大型项目中,你会惊讶于二阶段提交使用的是如此的少。。

2PC是中间件被最为爆炒的特性之一。只要是对中间件的评估,是否支持2PC的问题就会被提出。但是所有后端系统都必须支持它,所以它带来了一些编程工作量,并且绑住了一些资源。主要的问题在于所有的系统都必须在线,而且,直到更改在最后的系统上完成之前,所有的系统都必须提供资源。耦合度相对较大。

既保证总体一致性,同时耦合程度也更松的方法是补偿。对于补偿的使用还没有详细研究(已安排下去),这里只说一下它的优缺点。优点是,对系统的更新不必同步进行(当更新有的后端系统时,它们甚至可以不在线)。缺点是你必须显式的提供和调用服务,回滚之前调用的服务的影响,或者,你必须提供程序用于手动错误处理。(BPEL是Web Services 的流程执行语言,它直接支持补偿~)

SOA与安全

SOA需要的不只是点到点的安全,而是端到端的安全,对于安全,将安全当作服务进行引入,不失为一个上好的决策。

对于SOA的一些个人看法

        SOA中的服务个人感觉很像经典三层中的业务逻辑层,只不过被赋予了远程调用等其它概念而已。

        可否用工作流来代替复杂业务逻辑层的编写?但是事务要怎样控制(BPEL中把持补偿)?权限又该怎样控制?

        是否需要对所有非查询方法都要设置幂等?什么样的方法才需要设置幂等?

        SOA的设计思路是:从大处考虑,从小处着手,迭代设计。但是没有接触过SOA的系统,对SOA的概念理解远不如OO的系统理解深刻。对于这个“小”着实有点难把控。。。

        ESB作为一个基础设施的存在,对于它的研究或许能够对SOA的思想进一步理解吧。

        还有就是协议驱动和API驱动,这两个名词其实整的人很蛋疼……

        最后,再发表一下个人看SOA一本书的整体心灵感受吧:
        一个一个的中国汉字都认识,可是合到一起,就不知道说的是什么了,对于对汉字理解能力不强的我来说,真是一个恶梦。。。

SOA,不看你永远不知道的事的更多相关文章

  1. Java你可能不知道的事(3)HashMap

    概述 HashMap对于做Java的小伙伴来说太熟悉了.估计你们每天都在使用它.它为什么叫做HashMap?它的内部是怎么实现的呢?为什么我们使用的时候很多情况都是用String作为它的key呢?带着 ...

  2. ES6 你可能不知道的事 – 基础篇

    序 ES6,或许应该叫 ES2015(2015 年 6 月正式发布),对于大多数前端同学都不陌生. 首先这篇文章不是工具书,不会去过多谈概念,而是想聊聊关于每个特性 你可能不知道的事,希望能为各位同学 ...

  3. Spring中你可能不知道的事(一)

    Spring作为Java的王牌开源项目,相信大家都用过,但是可能大家仅仅用到了Spring最常用的功能,Spring实在是庞大了,很多功能可能一辈子都不会用到,今天我就罗列下Spring中你可能不知道 ...

  4. java你可能不知道的事(2)--堆和栈

    在java语言的学习和使用当中你可能已经了解或者知道堆和栈,但是你可能没有完全的理解它们.今天我们就一起来学习堆.栈的特点以及它们的区别.认识了这个之后,你可能对java有更深的理解. Java堆内存 ...

  5. overflow:hidden 你所不知道的事

    overflow:hidden 你所不知道的事 overflow:hidden这个CSS样式是大家常用到的CSS样式,但是大多数人对这个样式的理解仅仅局限于隐藏溢出,而对于清除浮动这个含义不是很了解. ...

  6. java你可能不知道的事(2)--堆和栈<转>

    在java语言的学习和使用当中你可能已经了解或者知道堆和栈,但是你可能没有完全的理解它们.今天我们就一起来学习堆.栈的特点以及它们的区别.认识了这个之后,你可能对java有更深的理解. Java堆内存 ...

  7. Java单例你所不知道的事,与Volatile关键字有染

    版权声明:本文为博主原创文章,未经博主允许不得转载. 如果问一个码农最先接触到的设计模式是什么,单例设计模式一定最差也是“之一”. 单例,Singleton,保证内存中只有一份实例对象存在. 问:为什 ...

  8. Java你可能不知道的事系列1

    概述 本类文章会不段更新分析学习到的经典面试题目,在此记录下来便于自己理解.如果有不对的地方还请各位观众拍砖. 今天主要分享一下常用的字符串的几个题目,相信学习java的小伙伴们对String类是再熟 ...

  9. C++学了这么多年,你仍不知道的事

    C++学了这么多年你知道为什么定义类时,类的定义放在.h文件中,而类的实现放在cpp文件中.它们为什么能够关联到一起呢?你知道什么东西可以放在.h文件中,什么不能.什么东西又可以放在cpp文件中.如果 ...

随机推荐

  1. RESTClient 控件 从服务器获得数据集 REST

    用TRESTClient控件调用REST架构服务 RESTClient控件返回数据集 用到的控件 RESTClient RESTRequest RESTResponseDataSetAdapter p ...

  2. 静态编译Qt5.4.1和Qt WebKit(网事如风的blog)good

    blog文章地址:http://godebug.org/index.php/archives/133/ WebKit是个好东西,做爬虫.显示网页还是想用HTML来做桌面应用的界面都可以用他,不过一直以 ...

  3. 用QComboBox实现tree状结构(QComboBox居然有setView和setModel函数)

    实现的效果图如下:  #include "mainwindow.h" #include <QApplication> #include <QTreeView> ...

  4. ThinkPHP 3.1.2 查询方式的一般使用2

    //select id1> and id2< 默认是and $data['id']=array(array('gt',$id1),array('lt',$id2)); // $data[' ...

  5. 基于Visual C++2013拆解世界五百强面试题--题3-打印螺旋数组

    请用C语言实现 输入N,打印N*N矩阵 比如 N = 3, 打印: 1 2 3 8 9 4 7 6 5 N = 4, 打印 1   2    3   4 12  13   14  5 11  16   ...

  6. Android4.3模拟器界面中右侧菜单按钮无法使用问题解决办法

    开发环境:笔记本电脑Windows2008+MyEclipse 10+Android4.3 问题描述:运行或者调试Android项目时,发现模拟器中右侧Menu按钮无法点击,截图如下: 查看在Andr ...

  7. js 获取单项复选的值

    html: 单选框-----> 25岁以下 25~35岁 35~50岁 50岁以上 获值 var question1 = $('input:radio[name="radio" ...

  8. POJ 2250 Compromise(LCS)

    POJ 2250 Compromise(LCS)解题报告 题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=87125#proble ...

  9. CentOS-6.3安装配置JDK-7或 JDK-6

    链接地址:http://blog.csdn.net/shuixin536/article/details/8954000 http://www.cnblogs.com/zhoulf/archive/2 ...

  10. BZOJ 1823: [JSOI2010]满汉全席( 2-sat )

    2-sat...假如一个评委喜好的2样中..其中一样没做, 那另一样就一定要做, 这样去建图..然后跑tarjan. 时间复杂度O((n+m)*K) ------------------------- ...