我对SOA的理解
SOA,Service-Oriened Architecture 面向服务的架构。
以下内容来自别人的博客:
就是说将软件按照功能设计成一个个服务,这些服务用标准的方式定义接口、并通过标准的协议进行调用。SOA所定义的接口和调用方式是独立于编程语言和运行平台的,广义上讲SOA可以基于不同的底层技术实现,比如CORBA和Web Services。但CORBA由于过于复杂和臃肿已很少使用,所以目前所说的SOA绝大多数是基于Web Services技术实现。在Web Services的实现方式下,SOA服务的接口用XML进行定义。
我觉得SOA是系统中不同模块,不同组件之间,解耦的必然产物。因为有耦合,必然影响系统的可扩展性,可伸缩性,以及可重用性。实际上,与其说SOA是一种架构技术,不如说它是一种设计思想,只是主要用于架构设计。因为这里的模块和组件必然是粗粒度的(如果是细粒度的话,会有很多问题要解决。比如在同一个应用中,不同模块之间这样设计,可能导致代码量很大,开发周期很长,而且普通的应用,也没有必要这么设计,为了SOA而SOA可能会导致过度设计),因此我觉得一般企业级应用才是需要考虑的。普通的WEB应用可能有更好的解决方案。
在本人参与设计的项目中,很多计算功能,相对耗费时间和性能比较多,特别是并行处理的情况下。而且可重用性比较高。于是我们架构设计的时候,独立出一个数据计算service模块成为一个单独的JAVA APP. 该app只负责计算,接收计算请求,然后返回计算结果,而不关心请求来自哪里。。。这就是我理解和实际应用的SOA设计。
希望大家多多参与,可以针对我的理解讨论,也可以自己发表自己的理解。谢谢。