合并不同语言的程序

时间:2011-09-29 11:26:07

标签: c# java c++ winapi ipc

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

感谢您的一切

3 个答案:

答案 0 :(得分:1)

我认为您可以做的最好/最简单的事情是只在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服务。

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

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

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