托管代码真的有必要吗?



我只是想知道托管语言相对于本机代码的真正优势是什么

可移植性: c#/java需要在每个平台上有一个VM实现,c++必须有一个编译器

垃圾收集器:我们可以在c++中有一个线程检查内存分配/清除

reflection:也许我们可以在本地代码中使用类似的机制(??)

今天托管代码已经获得了很多的流行,但是本机代码的优势是更有效率,更轻,即:在目标平台上没有虚拟机。另一方面,根据我的说法,托管代码的优势并不是真的很大,我错了吗?托管代码是大多数应用程序遵循的好方法吗?

您关于可移植性的声明:

c#/java需要在每个平台上有一个VM实现,c++必须有一个编译器

不完全为真,或明显为真- c#, VB。. NET, Java等需要一次编译成IL,字节码等,但c++需要针对每个平台编译成不同的版本,这也可能需要更改所使用的dll(如果有的话)或管理内存的方法。

至于垃圾收集,我不知道怎么在c++的线程上做这个;但是在托管代码中,您不必为垃圾收集器做任何工作。它已经存在了。此外,在托管语言中,您倾向于编写大量更少的代码来完成您需要做的事情,这在清晰度方面具有巨大的优势。(我发现在设计应用程序的UI时尤其如此。)此外,可以使用托管代码执行实时进行优化,并且可以对引擎进行更新以使其更好。

托管代码和非托管代码都有几个优点,最后,这取决于您在做什么。我认为大型项目更适合托管代码,需要速度的部分可以用非托管代码来完成。毕竟,非托管库可以在托管代码中使用,反之亦然。

所以,在我看来,是的,你错了。这是一个有点主观的问题。

托管代码是大多数应用程序的最佳选择。原因是它可以更快地实现,更简单地进行单元测试,并且更容易维护。

当然有一些应用程序不是这样的。必须快速的应用程序或需要对硬件进行特殊访问的应用程序可能应该是本机应用程序。是的,您可以使用本机代码在托管应用程序中重新实现提供给您的服务,但为什么要这样做呢?

最新更新