2011-09-29 65 views
0

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

感谢任何

+0

请进一步解释“merge”是什么意思。 – m0skit0

+0

我真的不确定。任何可以让我在一个GUI下运行它的程序,即所选程序的GUI。 – Smejki

+1

也许那时你的问题还为时过早。为什么不先弄清楚你想要什么*,然后问一个明确的格式问题? –

回答

1

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

在所有这些情况下,除了MVC(Razor),您都可以在Visual Studio中设计和自定义GUI。

您的C++代码可以封装在类库中,或者如您所说通过某种IPC访问,如果它必须作为应用程序运行,对于Java也是如此,但是如果您完全可以自由地编写和重写某些内容也可以想象将Java代码移植到C++,这可能很容易,很难或不可能取决于Java代码的功能。

如果C++和Java应用程序必须保持分离状态,并且必须在相同或另一台计算机上以后台方式运行,并且仍然希望从C#GUI使用它们的服务或方法(如您所提到的那样),IPC可能是最后的选择,不知道你可以在Windows和Java和IPC中做什么,肯定java可以公开或使用XML Web服务。

+1

谢谢,这是最鼓舞人心的,我会进一步投资。是的,我可以自由地做任何事情。唯一重要的是结果。 – Smejki

0

,你会发现的问题是,每一个都有自己的流程模型,你要么需要得到流程模型共存,否则你会需要几个通信过程(虽然用户不需要看他们)。对于Java,例如它可以是“王者”,或者你可以在另一个进程中设置一个子进程,或者你可以在每次调用时设置/取消它的进程模型。哪种方法最好取决于您在“客人”语言中进行的操作的复杂程度。

但是,最主要的是只有一种语言可以控制用户界面 - 一般来说,不同的语言用户界面不共存,我怀疑你可以在C#GUI中拥有一个Java UI对象,至少不是将其视为外国的窗口。

+0

好吧,创建新的UI对象将发送信息到这些其他语言进程是最不热门的问题。我需要实现的功能是:从RS-232和其他端口读取的数据绘制图形,显示来自USB摄像头的图像,然后分析图像,闪烁的汇编程序制作的程序到内部制作的PCB,与此复杂的通信PCB等 – Smejki

+0

因此,最好使用单独的过程方法(可能是IPC),因为你会使用本地方法I/O驱动程序等,我怀疑。我从来没有尝试过将Java和C#混合在一起,但我的理解是,他们在这个层面上相处得很好(在同一个过程中)。 –

0

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

如果您正在讨论将它们一起运行并使用IPC,那么也可以 - 也可以使用全部IPC框架中的任何内容到本地主机上套接字上的自定义协议。在那里不应该有太多的问题,但要记住,取决于其他语言的部分有多大,重写它们的时间可能会相当多(并且这样也没有太多的维护负担。 )控制来自其他进程的图形用户界面也很复杂,它可以通过在跨进程中传递本地画布ID来完成,但很难正常工作,可能不是特别安全,并且很难计算出发生了什么维护角度。

+0

这是唯一的Windows程序。 是的,重写是一个选项,但考虑到程序有多复杂,因此我想避免它耗费多少时间。 – Smejki