接手这个港口项目的时候,在网上翻遍了各类专业论坛,没有发现相似的项目解决方案,于是一点点查找资料,请教高手,按照自己的理解思路,一步一步,学习开发,目前一切进展还算比较顺利,在做一下自己学习过程中的点滴,方便以后学习和回忆。
总体的项目思路
项目背景,大型国企,大型港口集团,之间需要对接信息流,打通彼此之间的数据流,共享数据,产生价值。
可行性方案前期调研
跨企业间传递信息,物流数据打通,最好最安全的方式就是MQ了。
但是市场上值得购买的MQ的价格普遍不菲,简单查了一下,领导给的底线价格和预期的价格相差较大,遂放弃之。
研究第二种可行性,就是通过WebService 形式的接口互相调用彼此之间的数据,但是这种方案有很多弊端,在网上简单查了查,列举了一些,记录一下。以下摘录自 CSDN lulu147的专栏
Webservice 和MQ(MessageQueue)都是解决跨平台通信的常用手段,两者有哪些区别呢?
个人认为最本质的区别在于 Webservice近乎实时通信,而MQ却通常是延时通信。
什么意思呢?
因为webservice其实就是本地服务器程序调用远程服务器上的方法,属于两者之间的交互,请求的时候需要等被请求的服务器做出回应后,另一端才会有所动作,也就是说,如果你请求的service服务器关闭了,或者中断了,那么你这边肯定就得不到答复了,你的这次请求就算是打水漂丢失了。而MQ 则相当于是多了一个中间件
我所发送的请求 都必须先传达给 这个消息队列组件,然后由这个消息队列组件再去到另一个服务器上去请求,有了响应之后再 返回给
当初的请求程序,因为MessageQueue组件会把消息持久化放在本地,所以哪怕突然死机了,请求消息也是不会丢失的。
Message Queue属于比较重量级的应用,在规范化的企业流程中用的比较多。如果企业有很多部门,部门都有自己的系统,那么不同的系统之间的集成通信,Message Queue是很好的选择。MQ一般都做为企业级IT应用的中间件存在,有很多企业是作为标准IT基础结构存在的。在市面上常见的MQ中间件有IBM websphere message queue service,Oracle Advanced Queuing,Microsoft Message Queue(MSMQ),Apache ActiveMQ等
如果使用WebService的话,就要写很多的WebService的代码,去建立这些WebServcie,然后暴露出这些接口,相互之间调用,很费事。但是如果使用Message Queue的话,只要把这个中间件的服务器搭建起来,只要在需要的时候加入不同的Queue Manager就可以了,然后就可以访问了,就可以作为不同系统之间的桥梁了。
长耗时的报表,这个在程序中经常遇见,处理海量数据时,可能生成一个报表需要5分中或是更长的时间,客户不能在线实时等待,报表处理比较耗费资源,不能同时处理很多请求,甚至同时只允许处理一个,这时就可以使用MQ。客户端将报表请求和一些必要的报表条件放到Queue中,报表由另一个服务一个一个的处理,处理好后再给用户发一个消息(MSN消息,或mail等)用户再在浏览器或其他报表浏览器中查看报表。
在线商店,在客户下订单的过程后,系统只需做减库存、记录收货人信息和必要的日志,其他的必须配送处理、交易统计等其他处理可以不同时完成,这时就可以将后续处理消息放入Queue中,让另一台(组)服务器去处理,这样可以加快下订单的过程,提高客户的体验;
WebService通常是实时性要求较高,Client端向Server端发出请求后,这是一个短连接,一个Http请求,这个请求发出后,Client端就会一直等到获取到这个结果。但是使用MQ的话,因为有了中间的这一块区域,当请求发出后,Client端可以继续去干别的事情。等到一段时间以后再去中间件的存储区域上查看一下有结果了么,有了结果就取出来,没有的话就再等会再看。
其实 MQ和WebService 应用都可以解决跨企业不同系统之间数据互通的需求,但是差别还是蛮大的,最主要的其实回归一点还是价格的问题,一个是付费的一个是开源免费的,所以如果企业对数据的安全和并发要求不是特别高可以尝试先从WebService搭建一个简单的企业接口。下面4点是WebService 主要的优势所在
1 跨越防火墙的通信
客户端和服务器端之间通信都会有防火墙或者代理服务器。传统的实现互相通信的方法是在分布式对象,如DCOM、CORBA之间进行相互的远程过程调用(TCP/IP),这样的访问在internet上访问并没有得到很好的体现,而且有些访问还会受到防火墙的拦截。而Web服务使用基于XML消息处理作为基本的数据通信方式,应用程序可以使用HTTP和XML消息等标准在基于Web的应用程序之间交换信息,从而跨越防火墙。
2 应用程序集成
企业里经常要把不同语言写成的在不同平台上运行的各种程序集成起来。大型公司常常有很多部门,每个部门都使用最适合自己特定需要的应用程序和平台,所以可以利用webservice将各种平台联系在一起。
3 B2B的集成
跨公司的商务交易集成通常叫做B2B集成。各企业可以采用Web服务与其他企业进行通信。通过Web服务能够将数据及应用程序的集成扩展到公司的防火墙之外。使公司能够与其伙伴、供应商、发行商和客户共享数据和商业过程,从而加强企业之间的合作关系。
4 软件复用
软件复用是在软件开发中避免重复劳动的解决方案。Web服务实现了业务级别的软件复用,例如在B2B的集成中,各企业之间通过互相调用Web服务,就可以实现信息的共享和复用。
但是WebService 的缺点也很明显,总结一下主要也是4点
(1)臃肿的注册与发现机制
(2)低效的XML序列化手段
(3)开销相对较高的HTTP远程通信
(4)复杂的部署与维护手段
如果对于性能和并发要求不高的企业可以采用,我的项目确实也遇到了这些问题,我会持续跟进,寻找解决平衡性能的最优方法。
了解了webservice 的优点和缺点可以使我们更加从容的面对项目开发,可以在源头上避免犯一些致命的错误,对项目整体的规划也有了很好的支撑,在看到了非常好的介绍webservice 的一片文章,写的很详细,基本把webservice涉及的知识点都讲到了,虽然现在对于这些重点内容熟记于心,但是开始那段时间确实很是迷茫,好在人多力量足。
WebService就是这么简单