【问题标题】:Can I connect to a Java API with C#?我可以使用 C# 连接到 Java API 吗?
【发布时间】:2010-10-21 04:03:39
【问题描述】:

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

API 目前仅支持 Java,但他们正在努力(最终)发布 SOAP 版本。

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

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

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

感谢您的帮助。

【问题讨论】:

    标签: c# java web-services api


    【解决方案1】:

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

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

    虽然这不是最佳方法,但它在短期内适用于该过程,从长远来看,当 SOAP 解决方案可用时,Web 服务很容易更新。

    【讨论】:

      【解决方案2】:

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

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

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

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

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

      【讨论】:

      • 我使用 IKVMC 转换了 jar 文件,并在 Google Eng 授予访问权限后立即开始使用 API。现在只需浏览文档以弄清楚如何做我需要的。
      【解决方案3】:

      我会说使用 J# 层可能是一个不错的选择。我以前只用过一次,但它对我有用。

      【讨论】:

        【解决方案4】:

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

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

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

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

        实际的 Java 代码很少(大约 10 行),因为它所做的只是调用然后格式化输出。部署的时间比写代码的时间长!

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

        【讨论】:

          【解决方案5】:

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

          【讨论】:

            猜你喜欢
            • 2017-02-13
            • 2022-11-29
            • 1970-01-01
            • 2022-11-14
            • 2016-04-18
            • 2022-12-05
            • 2020-02-02
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多