我可以使用C#连接到Java API吗?

时间:2009-04-22 17:24:36

标签: c# java web-services api

我的任务是编写一个应用程序来连接DoubleClick DART API并下载广告素材。

API目前仅限Java,但他们正致力于(最终)发布SOAP版本。

作为C#开发人员,我想在C#中编写应用程序并访问Java API,直到SOAP API可用。

我可以这样做吗?如果是这样,怎么样?

如果没有,我将学习Java,编写应用程序,然后在SOAP API可用时重做它,但这不是首选的行动方案。

感谢您的帮助。

7 个答案:

答案 0 :(得分:3)

IKVM.NET可能是您的解决方案。它是一个Java虚拟机,它将Java字节码转换为.NET IL。

您可以做的是使用ikvmc.exe将Java API(作为jar或源文件提供)编译到.NET程序集中,然后从C#项目引用此程序集。

IKVM对Java用户界面(AWT)的支持有限,但由于它是一个API,因此不应该相关。

我自己没试过,所以我不能保证这确实有用。

请参阅http://weblog.ikvm.net/story.aspx/faq

答案 1 :(得分:1)

这是一个Web服务API,还是您提供的JAR文件?在后一种情况下,J#可能是一个选项,此线程中还有一些其他桥接选项:http://www.velocityreviews.com/forums/t140810-java-c-interop.html

答案 2 :(得分:1)

是的,你可以做到这一点,我们不得不做一些非常相似的事情。

Doubleclick API是基于Java的,实质上是询问数据库的方法的集合。

您需要做的是使用Axis2之类的东西将这些方法包装在Web服务中,然后将Web服务部署到Tomcat服务器(所有这些都是开源的)。这暴露了Web服务,然后您可以从任何您喜欢的任何地方调用Web服务。

因此,在您的情况下,您在Visual Studio中添加Web服务引用,然后您的C#类将调用调用Doubleclick Java方法的Web服务。

实际的Java代码是最小的(aprox.10行),因为它只是一个调用,然后格式化输出。部署比编写代码需要更长的时间!

我们的Java开发环境是Eclipse,我在博客上发表了here

答案 3 :(得分:1)

忘记Java DART API并切换到这种新的WebService API方法:

http://doubleclickadvertisers.blogspot.com/2009/06/webservices-api-jun-2nd-2009-release.html

答案 4 :(得分:0)

另外,我可以建议您以RESTful方式编写Web服务,而不是(或与之结合使用)SOAP?这样做的好处是您可能希望将来使用您的服务的任何语言之间的互操作性,而不仅仅是那些可以基于WSDL生成代码的语言。只是一个想法。

答案 5 :(得分:0)

我想说使用J#层可能是一个不错的选择。我曾经只使用过一次,但它为我做了诀窍。

答案 6 :(得分:0)

我们实际上采用了稍微不同的方式。

  1. C#Web服务现在使用javaw.exe(使用Process)调用Java类,并传入一个id(GUID)。
  2. GUID用作由java类编写的XML文件的文件名。
  3. 如果进程(javaw)以错误结束,则Web服务将打开(GUID).xml文件并检索数据。
  4. 虽然这不是最佳方法,但它在短期内适用于此过程,从长远来看,当SOAP解决方案可用时,Web服务很容易更新。