技术开发 频道

Java和.NET互操作:该放弃Web Service吗?

  情景3 使用Java API注册.NET监听器

  假设你使用了JMS(Java消息服务),想创建一个.NET组件来向它发送消息,以及从它那里接收消息。向JMS发送消息一般使用JMS API中的各种发送函数,通过在JMS基础架构上注册监听器来接收消息。

  你也可以使用Web Service来实现,但它并不擅长处理异步通信,如果你真要使用Web Service实现异步通信,你有两个选择:

  1)实现一个轮询机制,客户端反复轮询服务获得结果,当得到结果后,服务将其放在一个预定的地方,轮询操作就会发现它。

  2)实现一个回调机制,客户端留下回复地址,当获得结果后,服务将结果发往该地址。

  不幸的是,这两个机制都需要实现重大的基础架构,使用轮询机制时,需要实现轮询机制,还需要为服务提供一个机制放置结果,以便轮询机制可以找到它,使用回调时,必须在客户端嵌入一个全新的“反向”Web Service,以便原始服务可以联系到它,并返回异步结果。

  这两个方法都不完美,如果你想一个应用程序简单地调用一个程序库,Web Service需要实现超乎任务需要的机制,必须要有更好的方式来做到这一点。

  Java和.NET互操作需要的附件工具

  对于复杂的Java和.NET互操作需求(如在Java程序中调用.NET库,或使用Java API注册一个.NET监听器),Web Service强迫你另起炉灶,你必须建立复杂的基础架构——通过套接字交换XML——完成本应该很简单的任务,可以说这么做显得很愚蠢,对于其它任务,如在Java程序中嵌入.NET UI控件,使用Web Service根本是不可能的。

  开发人员和架构师工具箱应该拥有很多Java和.NET互操作解决方案,对有些情况可能有用,但对于许多互操作任务,你需要不同的工具,当Web Service满足不了要求时,Java和.NET桥接器可能会有用,甚至在那些可以使用Web Service的情景中,使用Java和.NET桥接器可能效率更好,并且更易于使用。

  如果你理解了Web Service在互操作性方面的限制,并熟悉其它解决方案,你就可以在你的应用程序中同时充分利用Java和.NET技术。

0
相关文章