混合语言和技术:这是一个好主意吗?

时间:2013-05-16 14:44:11

标签: c++ visual-c++ architecture

请查看以下设计。它是一个方框图,用于显示COMPONENTS

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#中编写所有语音代码似乎很容易,而不是将它们移到C ++ / CLI(其他C#dll必须是C#)。但是,我觉得有太多的dll与其他C ++代码集成。 我不能用C#或Java创建GUI。我必须实现Opencv(主要的),最简单的方法是C ++。

那么,混合语言和这样的技术,就像混合物一样好/好吗?

2 个答案:

答案 0 :(得分:2)

如果解决方案为您提供了您想要的期望和性能并且易于维护,那么我认为它没有问题。如果你看看Linux,它建立在很多经常链接在一起的小程序上,所以使用C ++和perl,php,ruby,C代码等并不罕见。

例如,OSX需要在Objective-C中编写UI(可可)代码,而驱动程序在C中使用C ++和内核扩展。

答案 1 :(得分:0)

我放弃JAR并在那里使用.Net类。添加Java没有任何好处。

我将整个C#块(语音,映射,驱动程序,包装器)移动到它们自己的进程,并定义IPC协议(可能是TCP / IP到localhost)以与C ++部分通信。我将继续使用原生C ++。因此,您有一个纯C ++进程和一个纯C#进程。

作为IPC协议设计的一部分,我将隐藏SMS和语音块的详细信息。您应该能够在没有另一方注意的情况下替换实现。