在下不过三脚猫的功夫,好发言也多半出自自我表现,虽然也有助人为乐的成分,但是妄称大侠是万万不敢的。
在没有更多数值数据的情况下,我对你的需求总结如下:
1。从客户端视角看,系统响应方式是同步的。--这一条是必须的么?因为这一条对整体架构影响很大。如果这条可以放松,也就是说客户端可以接受某种异步响应方式,那么整体架构选择就灵活很多。放松这一条可能带来系统整体性能(主要是throughput方面)的巨大效益。下面的讨论将假设这一条不能改变,必须是同步的。
2。从实现视角看,后台业务系统(J2EE 属于叫企业信息系统)是远程,多源的。
3。事务是查询性质,还是交易性质?不详。
4。是否有事务处理需求?不详。
5。数据源(后台业务系统)是否支持 XA?不详。假设远程EJB支持,而WS不支持。
6。对后台业务系统的访问结果,是简单汇总,还是有复杂逻辑流程?不详。
在上述这些假设下,我的基本设计空间是:
1。客户端界面:
方案A:同步语义的 WEB SERVICE 界面。
优点:支持远程,支持多种客户端,包括.NET客户端,甚至OFFICE客户端。SOA友好。对网络传输层要求低,方便跨越防火墙。
缺点: WEB SERVICES 性能相对较低,对事务处理的支持(WS-BA, WS-AT)因平台而易。
方案B:SESSION BEAN。
优点:支持远程,支持JAVA和WEB客户端。支持事务交易和安全需要。标准相对稳定。平台支持较完善。性能相对于WS较好。可以在EJB基础上再次封装为WS界面。
缺点:不能跨越防火墙。不能支持.NET客户端。
2。并行实现方案:
方案A:BPEL。
优点:标准。对基于 EJB 和 WS 的后端系统都有良好的支持。支持XA事务(如果后端系统本身支持),与其他 WS-* 标准兼容性良好。SOA友好。支持并行。支持复杂逻辑流程。BPEL 对客户端已经体现为 WS 服务。
缺点:平台选择有限。只有 ORACLE 或者 WEBSPHERE。
方案B: WEBLOGIC INTEGRATION
优点:工具支持完善。如果你已经使用WEBLOGIC,那么这个选择很自然。
缺点:不基于BPEL标准。
方案C: 多线程实现。每个线程并行访问后端系统,结果以 PUB/SUB 模式汇总给客户端。
优点:性能优良,封装灵活。平台层次减少,MTR非常低,平台选择范围宽广,自己拥有全部代码。无需EJB容器,无需 WS 容器。 方便封装为EJB或者WS。
缺点:不够“书面规范”。比起上述两个方案要写更多代码,开发周期较长。
方案D: WORK MANAGER。WORK MANAGER 的界面是 LISTENER 风格,结果汇总很方便。
优点:符合规范。性能优良,封装灵活。外部界面可以封装为EJB或者WS。开发风险小。
缺点:需要容器支持。平台选择限于 WEBLOGIC、WEBSPHERE。
方案E: JMS/MDB 实现。
每个后端系统需要配置一个请求QUEUE,所有后端系统结果响应返回到一个响应TOPIC/QUEUE(取决于响应是否可能在多个客户端间共享)。结果 MDB 汇总中间结果,通知客户线程提取最终结果。
优点:规范。性能较好,尤其有良好的横向伸缩性。外部封装灵活。支持安全性和事务考虑。
缺点:配置繁琐,不适合“套装软件”开发。各平台对 JMS 的支持差异非常大,实践中 JMS 实现的可靠性有时不尽人意。需要对所选平台的 JMS 做广泛详细的预研和试验。
方案F: ASP.NET + BIZTALK。你自己说的不限于JAVA。呵呵。