2011-11-21 45 views
1

我的公司目前正在从VB6程序转换到.NET。我一直在为传统程序编写模块作为原生C++ DLL一段时间,而我的老板设想了一个场景,我们基本上将GUI和相关逻辑(什么时候出现按钮等等)移植到VB.NET中,并继续开发底层程序逻辑作为本机C++ DLL。寻找关于使用.NET和C++进行本地管理的建议

他很担心.NET代码可能被复制,因为中间语言可以很容易和可靠地反编译,就像Java类文件一样。所以请假定有人真的想要他的代码,但是从本机代码反汇编对他们来说是不可行的。

现在,我认为在.NET中开发所有东西比如托管C++更聪明。然后GUI和程序之间的接口大概是更少的麻烦,不涉及COM或其他进程间通信,我也可以使用整个.NET API,我认为这可能会为我节省很多时间编码。

请告诉我,如果我的假设是有问题或错误的。如果这是正确的,你也可以推荐在.NET中编程,如果必须使用用于GUI,那么我可以通过什么方式与我的老板联系?

我听说有混淆器。他们可靠吗?他们有多难使反编译?有一个特别好的测试,或者你也有一个很好的测试结果吗?我想确保他的代码库是安全的是这里最大的问题,但我也在寻找关于这件事的其他方面的见解。

+0

有趣的是,现在我在这里得到反向逆向工程广告:) –

回答

1

我的理解是,有很好的混淆器,虽然我没有足够的经验与他们说只是他们如何好。我听说过有关Dotfuscator的好消息。他们有一个评估版本。

如果你打算编写.NET代码,我会建议你在.NET中做所有事情。我写新的本地代码的唯一原因是,如果我真的需要性能(.NET代码对于大量计算会比较慢),或者如果本机代码正在做一些你在.NET中无法做到的事情。也就是说,如果不需要,我不会建议将现有的本地代码转换为.NET。使用Platform Invoke来调用.NET的本地代码非常简单。

但我会用托管C++或其他托管语言编写新代码。它使事情变得更容易。另外,您可以利用.NET运行时库,这可能会节省您的编码时间。您将使用与GUI代码相同的运行时环境,这意味着您可以使用它们使用的相同数据结构。这将简化编码并减少您在GUI代码和处理代码之间封送数据的问题数量。

相关问题