当前位置: 首页 > 工具软件 > Shuttle ESB > 使用案例 >

tky项目第④⑤个半月总结——Shuttle ESB的研究

韦睿
2023-12-01

在这一个月的时间里,我几乎没有用SVN更新过项目。经理给了我将近一个半月的时间,研究一款ESB产品——Shuttle ESB。也正是因为这一个月的时间都在研究Shutle ESB,所以我决定把这个总结放在一起写(一般半个月写一篇项目总结)。

Shuttle ESB的具体内容,在这里我就不做介绍了,我会在系列博客中做全面、深入的讲解。这里只是吐槽一下这一个月的经历。


在此之前,我曾经在项目中使用过Mule ESB。Mule是一个以Java为核心的轻量级的消息框架和整合平台。它是基于EIP实现的。核心组件是UMO,Mule支持30多种传输协议:File、FTP、UDP、TCP、email、HTTP、SOAP、JMS等等。Mule的产品,已经相当成熟。应用也非常广泛。

目前Mule的资料已经比较完善,英文资料应有尽有,中文资料也是比较多。学习成本比较低。

 

有了Mule的基础,学习Shuttle就快了很多。Shuttle的宏观概念很快就掌握了。另外,由于之前项目中使用过Ejb,同时,我也曾经花了一段时间研读过《Ejb3 in action》这本八百多字的英文原著。对Pub/Sub,也就是发布订阅有了较深刻的理解。研究Shuttle也就更加事半功倍。

 

目前,Shuttle ESB已经应用于项目中了。其实,Shuttle很简单,我认为:从实现上讲,Shuttle 就是基于Request/Response和Pub/Sub两种理念(或者思路),基于消息(比如MSMQ,SqlServer消息队列),面向事件的一种实现。


在研究Shuttle的过程中,主要采用了如下思路:

1、逛官网,看英文资料,对官网讲的实例,进行实现;熟悉Shuttle;

2、结合业务需求,做Demo;

3、将做好的Demo,集成到项目中。


在实现官网实例的阶段,我都是把Shuttle源代码下载下来,然后将其生成环境改为.NETFramework4.0,然后再编译。这样的运行出来的程序非常不稳定,经常会出现dll版本问题。不同windows操作系统,不同的.NET环境问题让这些第三方的dll很难管理。

后来,我接触到了NuGet,一款在.NET平台下的第三方管理dll插件。使用这个插件下载dll时,它会下载所有版本的dll到本地,然后根据你操作系统的需要,然后使用相应的dll。这个插件省了我不少事儿。不用我手工解决版本问题了


ps:完全类似于Maven。Maven解决了Java中jar包版本、jar包冲突的问题;而NuGet这个插件仿照Maven的思路,解决了dll的版本问题。


在结合业务需求,做Demo的过程中,由于对Shuttle还不是很熟悉,很多功能都是“碰”出来了。你需要根据自己的想法,一点一点做尝试。

另外,在定位需求的时候,由于我们考虑的过于复杂,结果导致我们设计出来一个比较复杂的设计。尽管Demo做出来了,但是也费了好大劲,而且也没有用上。

不过,这种尝试也并不是一点好处都没有,它让我更加熟悉了Shuttle的消息机制。对我后续根据需求,灵活设计、实现功能起到了很关键的作用。


后来,在将Shuttle ESB集成到项目的过程中,也不是一帆风顺。遇到了一大堆非常古怪的问题。也难怪,Shuttle毕竟是一个比较新的开源项目,很多内容还急需在实践中接受检验的,比如性能、耐久性等。

想在归结起来,集成中遇到的问题主要分为以下几类:

1、Shuttle ESB与WPF通信机制本应相对独立,互不干涉。可是我们使用的过程中,发现WPF用户控件总是干涉Shuttle的通信;

2、Shuttle借用了通用主机的方式,由于多处需要启动服务总线实例,所以生成路径会影响它的正常运行;

3、Shuttle需要接收C++组的数据,经过多次尝试,我采用的是WinForm的作为Shuttle的Server,来接收C++的数据。由于我这边需要保持实时性,所以也是采用了windows消息的方式。


记得再看《轻松Scrum之旅》一书的时候,里面的主人公,经常向一个外国人请教敏捷开发的疑问。我也效仿他,遇到困难时,尝试与Shuttle的作者Eben沟通。一开始,我是在CodePlex上发帖子,后来就改发邮件交流了,再后来直接在我们就直接在Skype交流了。现在我们已经是非常好的朋友了,Eben有一口浓重的南非口音的英语,不看几遍官网,你真是完全听不懂他在讲什么。

我跟他的沟通很有意思,我们先讲自己的看法,进行不下去了的时候,就“Type”,到了简单点儿的地方就又开始说。Eben很有耐心,真的很感谢他这么长时间来的帮助。


Eben跟我说,使用Shuttle,需要我们换一种编程思路,不要按照传统的编程思路进行。我知道他讲的是Pub/Sub的编程思路。我会跟他讲一些我对Shuttle、对编程的一些体会以及想法,他很耐心,也很有兴趣;同时他也喜欢跟我说一些Shuttle的使用上的事。他的意思是希望我给他提一些建议,帮他完善Shuttle的资料。


Shuttle已经成功集成到项目中了,接下来会一些根据需求变动的更改,以及接收各种测试。Shuttle其实很简单,没有什么新东西,主要还是快速熟悉并适应这一个开源产品。

在研究Shuttle的过程中,感触很深的一点就是:你自己拥有能把他搞出来的信心是完全不够的,你要感染到你的领导,也要让他相信你眼前遇到的问题都是毛毛雨。因为你要体谅他,他也有领导,他也有他的压力。减轻他的压力,我们自己的压力也会小很多。

 类似资料: