企业级SOA之路——在Web Service中使用HTTP和JMS
?Point-to-PointPublish/SubscribeSynchronousHTTP, JMSJMSAsynchronousJMSJMS???? 当使用JMS作为消息transport,上面表格中的四种消息发送方式组合中的任何一种都可以使用。这种既能使用同步操作又能使用异步操作,既能进行点对点方式,又能进行发布/订阅方式的功能使得JMS在作为消息传送机制时比HTTP有明显的优势,因为HTTP本身只能支持同步和点对点传送。更多的消息传送方式使得流程设计人员在为服务之间的通讯选择最合适的方式时,提供了更灵活的选择。??? JMS消息还可以设置优先级,使得对时间敏感的信息流有更多的控制,还可以作为定义服务通讯相关质量的方式。管理员通常使用这种功能调整服务级别,完善整体服务性能。这样在网络拥堵、系统临时宕机或者灾难恢复时,能确保那些拥有相关优先级的关键系统能够正常运行并进行通讯。JMS更可靠??? 当应用程序或者网络出现间歇性的失效甚至停止运行,JMS能确保消息从发送者(生产者)传送到接收者(消费者),HTTP就不能。JMS通过将消息存放在中间服务器上来实现这种可靠的传输。比如,在保证消息传送的情况下,消息会被重发或者重复解析来保证消息确实被传送了。与HTTP不同,JMS内置有错误恢复和消息重传机制,不需要在应用系统或者SOAP层进行编程。JMS扩展性更强??? JMS能更有效的使用系统资源,不论是在一台单独的机器上纵向线性增长的资源还是横向增长跨系统的资源都比HTTP更高效。??? Scaling up:JMS可以在消息发送者和接收者之间配置单连接,甚至是在发送大量的并发消息的时候。HTTP需要为每一个请求和响应服务建立socket连接,消耗了大量的系统资源,JMS就没有这种问题。大量减少socket连接可以很好的节省系统资源,能支持更多的通讯量,因此提高了服务器的扩展性。??? Scaling out:HTTP和JMS的一个最大的区别是JMS将目的地址与物理主机或者应用系统名称分离。这种独立的命名空间使得JMS实现可以更加的动态。比如,对于一些JMS提供商,发送程序、路由服务器和接受程序可以被添加到相同的topic或者queue上,能够动态的增加负载。这种负载均衡是通过软件来实现的,而不是额外的硬件设备。基于JMS的SOAP比基于HTTP的SOAP更简单??? 相比HTTP,很明显JMS的消息传送更灵活、更可靠和更可扩展。所有这些特性都是JMS本身所具有的。不需要像HTTP一样,在应用系统或者SOAP层作开发。使用JMS代替HTTP可以减少编写代码的时间和降低通讯的复杂度,使得开发的周期更短。?何时用HTTP,何时用JMS??? 虽然JMS提供了更强大的transport功能,HTTP已经在企业中被广泛的使用。这些事实决定了在企业SOA中,这两种协议会同时存在。不只是你的企业,你的客户和合作伙伴也一样会同时使用这两种协议。所以,你在选择SOAP消息的transport的时候就要考虑在什么时候是用HTTP,什么时候是用JMS。??? 你可以尝试是用一些简单的规则,比如在企业内部使用JMS作为transport,在与合作伙伴和客户通讯的时候是用HTTP。但是,这种方法也过于简单。可以通过考虑使用哪一种transport更有意义或者使整合变得更简单来选择,来代替使用位置(比如企业的内部或者外部)进行选择。以下情况适合使用SOAP/HTTP:l?????????流程和/或者服务已经使用了基于HTTP的SOAPl?????????客户或者合作伙伴正在使用基于HTTP的SOAP,或者想要使用l?????????通讯端点的一方是瘦客户端,比如Portal或者Web浏览器以下情况适合使用SOAP/JMS:l?????????需要与移动设备或者非持久连接的服务进行异步或者发布/订阅通讯l?????????可靠性和扩展性要求高的服务,比如关键任务服务,数据发布或者同步l?????????必须与那些没有Web服务接口并且要求整合的应用系统连接的时候l?????????客户或者合作伙伴使用基于JMS的SOAP??? 大多数企业都可能会用到多协议,为不同的情况选择最合适的transport协议,这是最基本的要求。?实现企业级SOA??? 为了使企业SOA的作用达到极致,不论在底层使用的是什么样的通讯协议,所有的企业中的服务都要被重用。在企业级的SOA中,服务之间使用多种不同的协议进行通讯。比如HTTP,还有其他很多种协议。JMS由于提供了更好的灵活性、可靠性和扩展性,经常被要求严格的、关键任务的服务所使用。这就意味着SOA需要在使用不同的transport和协议的服务间进行通讯,不管他们是不是Web服务。??? 要对不同的协议进行无缝的连接,提供各个服务间的连接能力(使企业中的服务实现重用),需要企业服务总线(ESB)来完成这个工作。TIBCO BusinessWorks产品提供所有的ESB功能,包括高级ESB服务和服务集成环境,使开发人员可以不去关心底层系统的复杂性并提高生产效率。??? SOA的最主要的目标之一,就是使那些使用HTTP,JMS和其他协议的系统能够一起工作,实现企业范围内的服务重用,但是实现这个目标是很困难的。幸运的是,客户可以通过ESB在SOA中选择和使用多种协议。通过ESB本身支持的基于HTTP、JMS或者其他协议的SOAP和XML,跨协议路由,数据转换或者其他功能,可以最大限度的实现跨协议的服务重用。与HTTP和JMS一样,ESB是一项成熟的技术。自从2001年开始,超过1000家用户使用了TIBCO BusinessWorks ESB产品,使那些基于HTTP、JMS和其他协议的软件系统能够作为企业级SOA的一部分进行协同工作。简而言之,你想要灵活的选择协议或者技术,就要走上通往企业级SOA的道路。