gpt4 book ai didi

unmanaged - 在混合 C++ .NET 应用程序中强调托管还是非托管?

转载 作者:行者123 更新时间:2023-12-04 06:01:45 26 4
gpt4 key购买 nike

我工作的应用程序是一个几乎完全用 Visual C++ 大约在 2003 年编写的 WinForms 应用程序。在我到达现场之前,由于 UI 构建框架而选择了 .NET,但绝大多数代码是在非托管领域开发的.其中一部分是绝对必要的——我们对一些非常大的数据集进行一些实时图像处理,使用一些需要指向图像缓冲区的指针的英特尔图像处理库,我们确实在不到 1% 的情况下性能有那么重要吗?

该应用程序本身是一个大型可执行文件,通过将 UI 代码链接到几个静态库而形成,每个静态库都对应一个功能子系统——数据采集、图像处理等。自从我加入以来,我通过编写托管包装器将其中几个子系统拆分为 DLL,我们在其他应用程序中重用它们,但主应用程序仍然基本上由静态链接库组成。

我的同事和我在进一步发展应该强调非托管还是托管方面存在很大分歧。除了我提到的情况外,没有规定非托管代码的性能要求。我们坚定地致力于 .NET,因此跨平台不是问题。我认为除非另有规定,否则我们应该支持托管。

上个月,我的同事开发了一组管理子系统的类;他没有将它们实现为 ref 类并将一些事件添加到 .NET 接口(interface),而是编写了几个 Observer 实现,使用 gcroot 来保存托管客户端的句柄,并允许自己留在非托管领域。这在我看来是错误的,只是因为为什么要写一些你可以免费拥有的东西?但我想知道我是否过于刻板。

有什么想法吗?

最佳答案

没有单一的正确或错误答案,除了说你倾向于管理而你的同事倾向于非管理绝对是错误的。无论您选择哪种方式,您都需要达成一致,以免使某些代码托管和某些代码未托管的问题变得更糟。

您说“我们坚定地致力于 .NET”。这里的“我们”是谁?是你的公司还是你和你的同事?听起来您的同事对 .NET 不太投入。如果公司 promise 而同事不 promise ,那么需要有人向你的同事重申他是团队的一员,需要遵循公司的方向。

如果决定真的取决于你们两个,而你的同事不让步,那么你应该考虑默许。

我们也有一个大型托管/非托管应用程序,除非我们绝对必须这样做,否则我们永远不会考虑在非托管中做任何事情。应用程序的大部分是托管的。这样会好很多。但这是我的看法,不是事实。

关于unmanaged - 在混合 C++ .NET 应用程序中强调托管还是非托管?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/566246/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com