桂林网站优化,小鱼儿企业网站管理系统,界面设计流程,微网站解决方案通过Web Service混合.NET和Java技术往往很容易#xff0c;但Web Service并非是.NET和Java互操作的万灵丹。Web Service在集成独立的跨网络通信的组件时非常有用#xff0c;在简单的调用/返回情景中#xff0c;涉及的数据类型数量非常有限#xff0c;且Web Service是基于标准…通过Web Service混合.NET和Java技术往往很容易但Web Service并非是.NET和Java互操作的万灵丹。Web Service在集成独立的跨网络通信的组件时非常有用在简单的调用/返回情景中涉及的数据类型数量非常有限且Web Service是基于标准的混合.NET和Java技术通常显得很简单因此有人认为Web Service是实现.NET和Java互操作的万能答案但事实却并非如此。(参考阅读常用Web Service汇总) 在搜索引擎中搜索一下“Java .NET互操作”将会返回很多搜索结果但听过今年6月JavaOne会议上微软主题演讲的人应该还有印象(51CTO编者注互操作性在近年来成为了微软的关注重点之一不仅仅是Java还有PHP互操作性等等)微软说放弃Web Service可能是最好的办法。这是很不幸的消息因为对于很多任务Web Service并不是Java和.NET互操作的理想解决方案而且对于部分任务根本不可能使用Web Service。在这篇文章中我会列举三个Java和.NET互操作情景如果使用Web Service实现会被认为是愚蠢的行为。 首先我先说一下我认为的Java和.NET互操作的含义真正的Java和.NET互操作机制应允许你在任何地方使用.NET语言编写的代码代替用Java语言编写的代码换句话说它应该允许你从.NET代码中访问任何基于Java的实体(如对象类或方法)反之亦如此。 情景1 在Java应用程序中嵌入.NET UI控件 假设你要在基于AWT的Java应用程序中使用一个Windows窗体控件标准的做法是获得与AWT容器对等的句柄然后使用该句柄设置Windows窗体控件的父对象为AWT容器你可以使用一个Web Service实现这类互操作。 Web Service是松散耦合的服务和客户端运行在独立的进程中因为是独立的进程你就不能交换窗口句柄句柄只在同一个进程中才有效有意义换句话说这是一个必须紧密结合才能互通的情况这种情况Web Service不能适应想在基于Java的GUI应用程序中嵌入基于.NET的控件开发人员必须想另外的办法反之亦如此。 情景2 从Java应用程序中调用.NET程序库 如果你想在Java程序中调用.NET程序库那你可能正处于以下环境 1)已经在.NET开发中使用过这个库你想在Java环境中继续使用; 2)已经花钱购买过.NET程序库不想再花钱购买Java程序库; 3)不考虑平台差异的话这个程序库可能是最好使用的了。 在这种情况下你可以使用Web Service从Java访问.NET代码但这种用法似乎有点小题大做Web Service更适合两个更大的独立组件之间的通信而不是将一个库集成到一个更大的系统中去。如果程序库就在同一台机器上非要创建一个Web Service来访问这个库显得有点过分在这种情况下在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技术。转载于:https://www.cnblogs.com/zjoch/archive/2010/04/20/1716566.html