Web Service是一个基于标准的、混合.NET和Java技术的服务,常用于互操作性的实现。那么,Web Service真的是用于实现.NET和Java互操作性的万能答案么?本文作者认为不是,并建议开发人员准备多种Java和.NET互操作解决方案。

Java和.NET互操作:咱们应该抛弃Web Service吗?(.net调用java webservice)  Java和.NET互操作 Web Service 第1张【51CTO精选译文】经过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技能。

原文:Java/.NET Interoperability: Web Services Aren't Always the Answer

作者:Wayne Citrin

【修改引荐】

  1. 讨论C++、C#和JAVA:WebService互操作问题
  2. C# 4.0中COM互操作性和方差得到增强
  3. 微软发布开源PHP开发东西包 进一步提高互操作性
  4. C#组件开发:COM和.NET目标之间的互操作
  5. 文档转换器2.0推出让互操作的巴别塔坍毁
转载请说明出处
知优网 » Java和.NET互操作:咱们应该抛弃Web Service吗?(.net调用java webservice)

发表评论

您需要后才能发表评论