2009-04-22 59 views
5

我负责编写应用程序以连接到DoubleClick DART API并下载广告素材。我可以使用C#连接到Java API吗?

该API目前仅用于Java,但他们正在(最终)发布SOAP版本。作为一名C#开发人员,我想用C#编写应用程序并访问Java API,直到SOAP API可用。

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

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

感谢您的帮助。

回答

0

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

1

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

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

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

所以在你的情况下,你需要在Visual Studio中添加一个Web服务引用,然后你的C#类将调用调用Doubleclick Java方法的Web服务。

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

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

0

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

3

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

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

IKVM确实对Java用户界面(AWT)提供了有限的支持,但由于它是一个API,所以这不应该是相关的。

我还没有尝试过这个,所以我不能保证这真的有效。

http://weblog.ikvm.net/story.aspx/faq

+0

我转换使用IKVMC的jar文件,并能够尽快谷歌工程获准进入开始使用API​​。现在只需浏览文档以了解如何执行我所需的操作。 – Matthew 2011-06-10 20:22:05

0

实际上,我们用这样的方式略有不同去了。

  1. C#web服务现在使用javaw.exe(使用Process)调用Java类并传入一个id(GUID)。
  2. GUID用作由java类编写的XML文件的文件名。
  3. 如果进程(javaw)无误地结束,则Web服务会打开(GUID).xml文件并检索数据。

虽然这不是最佳方法,但它在短期内适用于此流程,长期而言,当SOAP解决方案变为可用时,Web服务可轻松更新。

相关问题