SOA,不看你永远不知道的事

        你买不来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一本书的整体心灵感受吧:
        一个一个的中国汉字都认识,可是合到一起,就不知道说的是什么了,对于对汉字理解能力不强的我来说,真是一个恶梦。。。


原文地址:https://www.cnblogs.com/keanuyaoo/p/3322820.html