我工作的应用程序是一个WinForms应用程序,几乎全部用Visual C++编写,大约在2003年。在我到达现场之前,由于UI构建框架,.NET被选中,但绝大多数代码是在非托管的土地。其中一部分是绝对必要的 - 我们对一些非常大的数据集进行一些实时图像处理,使用一些需要指向图像缓冲区的英特尔图像处理库,而我们真的是,其中< 1%的情况性能是至关重要的。在混合C++ .NET应用程序中强调托管还是非托管?
该应用程序本身是一个大型的可执行文件,它将UI代码链接到几个静态库,每个库都对应一个功能子系统 - 数据采集,图像处理等等。自从我加入后,我通过编写托管包装器将这些子系统分成了几个子系统,我们在其他应用程序中重用,但主应用程序仍然由静态链接库组成。
我和我的同事对于是否进一步发展应该强调非托管还是管理有很大不同。除了我提到的情况外,没有规定非托管代码的性能要求。我们坚定致力于.NET,所以跨平台不是问题。我认为我们应该赞成管理,除非另有规定。
上个月,我的同事开发了一套管理子系统的类;而不是将它们作为ref类实现,并将某些事件添加到.NET接口中,他编写了Observer的几个实现,使用gcroot为托管客户端提供句柄,并允许自己留在非托管的土地上。这在我看来是错误的,只是因为为什么写一些你可以免费得到的东西呢?但我想知道我是否过于僵化。
有什么想法?