2011-09-29 132 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