合并不同语言的程序

我有三个程序(一个在C ++ + WinAPI中,另一个在C#.NET中,最后一个在Java中)具有不同的function。 我即将选择一个并实现其他两个的function。 有可能以某种方式合并它们吗? 我需要在一个GUI中,在一个过程中(至少在视觉上)将它们放在一起。 IPC不是问题。

谢谢你的一切

我认为你能做的最好/最简单的事情就是只在C#中创建GUI,在Windows客户端中你可以使用Windows窗体或WPF,在基于web的你可以使用ASP.NET WebForms或ASP.NET MVC。

在除MVC(Razor)之外的所有这些情况下,您都拥有在Visual Studio中设计和自定义GUI的非常好的工具。

您的C ++代码可以包装在类库中,或者如果必须作为应用程序运行,可以通过某种类型的IPC访问,对于Java也是如此,但如果您100%可以自由地编写和重写您可以想象的东西将Java代码移植到C ++,这可能很容易,困难或不可能,具体取决于java代码的作用。

最后,如果C ++和Java应用程序必须保持分离并且必须在相同或另一台机器上在后台运行,并且您仍然希望从C#GUI中使用它们的服务或方法,正如您所提到的,IPC可能就是这样,不确定是什么你可以在Windows中使用Java和IPC,当然java可以公开或使用XML Web服务。

您会发现每个问题都有自己的流程模型,您需要让流程模型共存,或者您需要多个沟通流程(尽管用户无需查看)。 使用Java,例如,它可以是“王道”,或者您可以在另一个流程中设置一种子流程,或者您可以在每次调用时设置/删除其流程模型。 哪种方法最好取决于您将在“访客”语言中执行的操作的复杂性。

但主要的一点是,只有一种语言可以控制UI – 通常不同的语言UI不共存,我怀疑你可以拥有例如C#GUI中的Java UI对象,至少不是没有把它当作外窗。

如果您正在谈论重写程序的最佳语言,那完全取决于主要function。 如果你主要需要它很好地与Windows集成,C#将是显而易见的选择。 如果您的主要想法是使其跨平台,那么在Java中最有意义。

如果您正在谈论将它们一起运行并使用IPC,那么也是可能的 – 您可以使用从完全成熟的IPC框架到localhost上的套接字上的自定义协议的任何内容。 那里不应该有太多的问题,但要记住,取决于其他语言中的部件有多大,在重写它们的时间方面可能会花费同样多的成本(并且这样的维护负担也会减少)。 )从其他进程控制GUI也很复杂,可以通过在跨进程中传递原生canvasID来完成,但是很难正常工作,可能不是特别安全,并且很难弄清楚正在发生的事情维护的角度来看。