【问题标题】:Web bridge between Java client to C# class library [closed]Java 客户端与 C# 类库之间的 Web 桥接器 [关闭]
【发布时间】:2011-05-23 20:55:05
【问题描述】:

我有一个类库,其中包含大约 10 个用 C# 3.0/.NET 3.5 编写的 dll。该库提供对我运行远程服务器的产品的 API 访问。使用 TCP 套接字进行通信。

我正在寻找一种在 java 中为 android/Linux 编写客户端应用程序的方法。问题是API 相当大,将其从 C# 转换为 java 可能需要大量资源和时间。尽量避免转换。

任何人都可以想出一种方法来实现一个使用 C# API 而无需将其嵌入到客户端中的工作 android 客户端? 考虑让 Web 服务针对核心 API 完成所有工作并从 java 访问它,问题是与服务器的 TCP 连接必须始终保持打开状态,并且 Web 服务解决方案是无状态的。也许是一种使用具有持久连接的 Web 服务的方法(有这样的事情吗?)。有什么创意吗?

【问题讨论】:

  • 您能否详细说明为什么 TCP 连接必须始终保持打开状态?

标签: java .net android web-services c#-3.0


【解决方案1】:

为什么 tcp 连接必须一直打开? Web 服务将是一个很好的解决方案,因为在 Java 端,您可以生成存根/代理类,并且几乎不需要任何工作。

【讨论】:

  • 它必须保持打开状态并保持会话处于活动状态。 API 需要登录和持久会话。这是关键的安全系统。我不确定如何使用 Web 服务来实现它。想法?
  • 几年前我也有同样的问题,但没有解决。但是,有可能解决它,我敢肯定。 Web 服务可以通过 http 工作,这肯定可以被黑客入侵以支持会话 cookie。问一个新问题,我对此一无所知。考虑每 19 分钟执行一次 keep-alive 虚拟 Web 服务调用以保持会话处于活动状态。
  • 我不确定会话 cookie 是否足以满足系统必须响应的安全要求。这就是为什么我正在寻找一种方法来实现与 Web 服务器的持久 TCP 连接,或者任何其他创造性的方法。
  • 您能详细说明为什么会话 cookie 不够用吗?也许我可以帮你找到替代方案。顺便说一句,Web 服务肯定可以在持久连接上运行。如果你能忍受很多痛苦,WCF 是非常可定制的。
  • 该产品正在与定义安全标准的公司合作(无法真正解释为什么 cookie 对他们来说是个问题)。我不允许更改通信基础设施。 API 使用持久的 TCP 连接,我必须将这种方法与我在其上编写的任何“新”包装器保持一致。
【解决方案2】:

这里有一个创意:通过持久的 TCP 连接实现二进制协议,允许您调用服务器内部的任何方法。例如客户端可能会发送:

{ 类:'BankService',方法:'StealMoney',参数:{金额:123 } }

您的服务器进程将使用反射来执行此操作。

【讨论】:

  • 非常好的主意...也许预先将命令路由到函数以提高性能,但我喜欢这个主意。我在这里看到的唯一缺点是我不能放弃这个 API,因为没有开发人员可以使用的对象或方法。谢谢@usr
【解决方案3】:

抱歉,这么久才回复。在非 Android 场景下,JNBridgePro (www.jnbridge.com) 将是一个很好的解决方案。我们从未有人在 Android 上运行 Java 端,但我们很乐意与您合作以实现这一目标。

披露:我为 JNBridge 工作。

【讨论】:

    猜你喜欢
    • 2012-02-12
    • 2017-05-25
    • 2016-02-16
    • 1970-01-01
    • 2018-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多