【发布时间】:2013-06-25 04:15:20
【问题描述】:
我正在一家公司实习,担任软件开发人员。有一个用 C# 编写的客户端安装软件程序,它在 VB 中具有 dll - 两者都在 .NET 框架上。我们的整个基于云的服务器都是用 Java 编写的,所以现在,我的任务只是在 Java 中调用一个函数来获取/设置私有(?抱歉,我不太熟悉 VB,所以我可能不恰当地使用这个术语)位于 dll 中的变量。不过,最终我的任务是从客户端程序收集数据并将其放入我们的服务器。过去几天我一直在研究如何进行此操作,并找到了一些选择:
- Java 本机访问 (JNA)
- Java 本机接口 (JNI)
- COM/ActiveX 网桥(虽然我不能完全确定我知道这些是什么/如何使用它们_
- JNBridge
现在据我所知,这些是我分别发现的问题:
- 使用此选项需要使用 C 或 C++ 从 Java 到 .NET 的中介,并且鉴于我只真正了解 Java,我真的不想陷入这种混乱。
- 似乎比 JNA 复杂一点,而且我认为它与 JNA 相比并没有真正的优势。它们似乎都需要 C/C++ 中介。
- ...除了我不太确定如何实施此方法这一事实之外,真的不能说太多。
- 这座桥和其他类似的桥必须是最后的手段。这个产品的开发者许可证非常昂贵,我敢肯定他们没有资源来使用这个产品。我可以尝试询问,但我不认为实习生可以要求公司投资这么多。
再加上我不是很擅长编程这一事实,我大部分时间都靠自己做这件事,所以提前非常感谢您阅读我的问题。如果有什么我没有完全解释清楚需要进一步解释,请告诉我!任何其他提示/指针将不胜感激。
【问题讨论】:
-
这个 DLL 应该直接使用,或者您可以创建一个中间件应用程序,如 .Net WCF 应用程序,提供服务使用 DLL 中的方法?
-
@LuiggiMendoza - 我认为它必须直接从客户端到服务器(如果这是你要问的)。如果您个人认为中间件应用程序有助于让事情变得更简单,那么这也肯定不会有任何问题。
-
这可能是一个解决方案,但 AFAIK 决定的批准将取决于您的上级。您可以提出这个想法或收到您必须使用 JNA 或 JNI 进行交互的命令。
-
您认为您可以指向一些链接,我可以在其中了解有关创建中间件应用程序的更多信息,或者,如果我仅限于 JNA/JNI,如何将 JNA/JNI 用于 .网?我真的在这里拍摄黑暗 - 在两个方面。
-
我认为您仅限于 WCF、WebService、HTTP 或原始 TCP 连接类型解决方案,正如您所说,.NET 客户端应用程序与服务器应用程序不在同一台机器上。 (我假设这是因为您说服务器在云中,并且客户端安装在某个地方。)而且在我看来,您需要服务器将值写入客户端软件,而不是让客户端软件启动与服务器的操作。是否有多个客户端安装,您是否必须在所有客户端上调用该函数?
标签: java .net vb.net dll integration