企业级SOA

来源:互联网 发布:python json dump 编辑:程序博客网 时间:2024/04/28 00:23

一、什么是SOA (service-oriented-architecture )
首先,soa是异构程序间通信的解决方案。
二、如何实现SOA思想
通过 webService 和soap协议。
具体流程是:client程序根据soap协议格式封装“请求数据“, 然后通过http通信协议发送给server程序,server程序收到请求进行解析然后再交由对应服务进行处理,完了将处理结果封装成soap格式反馈给client程序。
这里要弄清楚,server程序是如何发布服务的。这个可以联系tomcat发布应用来理解,首先它启动一个socket 服务端,需要有url,需要有监听端口。别人通过这样url可以得到一个wsdl文件。这个文件描述了,server程序提供了那些服务,client需要提供什么样的请求数据,可以得到什么样的结果。
所以客户端要想访问服务端的服务,必须解决以下问题,一、根据url建立一个socket客户端和服务端建立连接,二、将对象转换成xml,因为soap的数据格式是xml,然后将封装好的数据传送过去并接收响应结果。
底层的原理个人理解大致是这样。
三、现实中的应用—-企业级SOA
现实企业中的soa应用要复杂的多
首先,企业SOA中出现了个ESB
其次,企业中soap消息的通信协议也不单纯是http,还有jms,现实中企业是综合采用这两种通信协议,访问外企业提供的服务时用http做transport,企业内部各系统间通信时则使用jms。所以,又牵扯到了一个MQ。
先说,为什么传输协议还要用jms,一是因为http是点对点、同步式的通信协议,无法满足所有某些业务需求,二是因为jms,它支持点对点、订阅发布模式、即支持同步又支持异步、可靠、可伸缩。总之http能的他都能http不能的他也能。那为什么还要http干脆全用jms不好了?不能,因为jms没有http的朋友圈大,比如自己企业可以统一使用IBM WebSphere MQ 使用java语言,你还能管住其他企业用什么产品什么技术吗,不能,所以这个jms虽好可是不是通用的技术。http是通用的,所以才搞了两套,跟外国人对话用英语(http)自家人唠嗑还是用普通户痛快。
在说说这个ESB(enterprise-service-bus),试想世上有千千万万个服务,如果一一同他们建立联系很麻烦,并且如果一个服务发生了变化,那么这个服务的客户端程序也要跟着变化,这样不利于维护。如果存在一个中间人,大家都只跟这个中间人打交道,那情况就会简单很多,如果中间的功能再强大一些可以屏蔽通信协议的不同那就更好了。这个中介就是ESB事实上,它所提供的功能比我说的要强大的多。详情请看
ESB是什么

大概的原理先记录这么多,具体和spring整合配置的东西,还需要继续研究。