2013-05-16 113 views
1

請看下面的設計。這是一個框圖,其中創建於顯示器件混合語言和技術:這是一個好主意嗎?

enter image description here

請注意,這是一個桌面應用程序的示意圖。你在這裏看到的是組件,而不是類。以下是描述

C++/CLI code - The main GUI and the connector for all other services 
OpenCV C++ Code - set of Opencv classes for image and video processing 
C++ SMS Code - set of SMS classes written in C++ 

C# wrapper DLL - The dll to access the driver 
C# Driver DLL - The driver of the device, written in C# 
Speech recognition C# dll - set of speech recognition classes 

Google Map DLL/JAR - Google map classes written in either C# or Java 

Device - The device I need to access 

現在,我的問題。

正如你所看到的,這是一個技術和語言的集合。對我來說,在c#中編寫所有的Speech代碼似乎很容易,而不是將它們移動到C++/CLI(其他C#dll必須是C#)。但是,我覺得太多的DLL與其他C++代碼集成在一起。 我無法在C#或Java中創建GUI。我必須實現Opencv(主要),最簡單的方法是C++。

那麼,混合這樣的語言和技術,就像混合物一樣好嗎?

回答

2

如果解決方案爲您提供所需的期望和性能,並且很容易維護,那麼我認爲它沒有問題。如果你看看Linux,它建立在很多通常連接在一起的小程序上,所以將C++與perl,php,ruby,C代碼等結合使用並不罕見。

OSX,例如需要在Objective-C寫UI(可可)代碼,而在驅動器C.

+0

哇!我很高興知道!無論如何,我會等待來自其他成員的更多想法:) –

+0

非常感謝您的回覆。 +1我:) –

0

使用C++和內核擴展我丟棄JAR和使用.NET類那裏。添加Java沒有好處。我想將整套C#塊(Speech,map,driver,wrapper)移到它們自己的進程中,並且定義一個IPC協議(可能是TCP/IP到localhost)來與C++部分進行通信。我會保持原生C++。因此,您有一個純粹的C++進程和一個純粹的C#進程。

作爲IPC協議設計的一部分,我會隱藏SMS和Speech塊的細節。你應該能夠在沒有對方注意的情況下替換實現。

+0

IPC?嗯,然後這成爲一個基於Web的項目,不是嗎? –

+0

不,ipc是進程間通信(http://en.wikipedia.org/wiki/Inter-process_communication)。 @MSalters您必須考慮到延遲。如果他們不是問題,我會選擇單獨的流程解決方案。幫助定義乾淨的界面。 – PsiX

相關問題