2013-05-16 79 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

相关问题