首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用一种语言创建一个库,并将其与其他所有东西连接起来

用一种语言创建一个库,并将其与其他所有东西连接起来
EN

Stack Overflow用户
提问于 2010-08-22 22:26:21
回答 4查看 81关注 0票数 0

我们的业务目前围绕着一个库的开发,该库可用于广泛的行业(桌面、移动、web和嵌入式)。目前,我们只有桌面和web领域的客户,我们已经看到我们基本上必须跨多种语言(c#、java和c++)复制我们的代码。在其他公司,这通常是如何管理的,我们真的必须满足于用多种语言编写中间件来满足非常不同的行业吗?

我们已经尝试了c#互操作和java jni,但是结果并不像我们预期的那么好,它看起来也不是一个好的和专业的解决方案。

任何人都有任何想法,我们如何保持单一语言的核心,但开发不同语言的接口,允许不同的行业。

EN

回答 4

Stack Overflow用户

发布于 2010-08-22 22:45:38

当涉及到行业时,我没有太多的想法,但我猜这个问题类似于其他不那么严格的场景。也不清楚你所说的“中间件”是什么意思。无论如何,我建议您不要重复代码,并且如果需要的话,有效地拥有到其他语言的多个接口。

在理想的情况下,让一个独立的进程与您的应用程序逻辑在一起,用您觉得更舒服的语言编写,并让此进程使用一些进程间通信机制(例如,管道、套接字、共享内存、文件)与瘦客户端库进行通信,这将是非常方便的,这些瘦客户端库可以被其他语言的客户端使用。这样,您就不得不创建一个非常干净的通信/使用协议,并进行一些关注点分离(因为所有的通信都必须序列化);您获得了健壮性(应用程序进程或客户端中的致命错误并不一定意味着另一个进程的崩溃),并且您不必使用ffi机制,而是使用套接字和管道之类的东西。更多,如果你决定出版你的通讯。协议,然后第三方开发人员就可以用他们独特的语言创建包装器,而不需要直接链接/导入到您的开发组件。

多年来,这种范例已经在unix世界和Mathematica等软件中得到了成功的使用。在类似的行动中,java的开发者已经使java插件在独立的进程中在浏览器外工作,以降低互操作的复杂性。

票数 1
EN

Stack Overflow用户

发布于 2010-08-22 23:03:23

啊,我忘了,也许你可以用这个: ICE (http://www.zeroc.com/overview.html)。它可能是较轻量级的互操作层,可以用来以一种干净的方式与java、c++、c#、python和其他一些语言进行通信。他们甚至有一些嵌入的解决方案。

票数 1
EN

Stack Overflow用户

发布于 2010-08-22 22:47:49

选择公分母标准: REST或SOAP/XML可以被许多语言使用,包括Java和C#。

您将背负重量级WS-*标准和大量网络延迟的重担,但是如果您的目标是互操作性,这是实现它的一种方法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3541808

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档