我如何决定是否为新的 C 项目使用 ATL、MFC、Win32 或 CLR?

新手上路,请多包涵

我刚刚开始我的第一个 C++ 项目。我正在使用 Visual Studio 2008 。它是一个单一形式的 Windows 应用程序,它访问几个数据库并启动一个 WebSphere MQ 事务。我基本上了解 ATL、MFC、Win32(我实际上对那个有点模糊)和 CLR 之间的区别,但我不知道应该如何选择。

其中一个或多个只是为了向后兼容吗?

CLR 是个坏主意 吗?

任何建议表示赞赏。

编辑: 我为这个项目选择了 C++,因为我没有在帖子中提到,这并不完全是技术性的。那么, 假设 C++ 是唯一/最好的选择,我应该选择哪个?

原文由 John M Gant 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 864
2 个回答

这取决于您的需求。

使用 CLR 将为您提供最具表现力的库集(整个 .NET 框架),但代价是将您的可执行文件限制为要求在运行时安装 .NET 框架,以及将您限制在 Windows 平台上(但是,所有列出的 4 种技术都只是 windows,因此平台限制可能是最不麻烦的)。

但是,CLR 要求您使用 C++ 语言的 C++/CLI 扩展,因此本质上,您需要学习一些额外的语言特性才能使用它。这样做可以为您提供许多“附加功能”,例如访问 .net 库、完整的垃圾回收等。

ATL 和 MFC 之间的选择有些棘手。我建议您参考 MSDN 的页面进行选择,以便在它们之间做出决定。 ATL/MFC 的好处是您不需要 .NET 框架,只需安装 VC/MFC 运行时即可进行部署。

直接使用 Win32 提供了最小的可执行文件,具有最少的依赖项,但需要编写更多的工作。您拥有最少数量的帮助程序库,因此您编写的代码更多。

原文由 Reed Copsey 发布,翻译遵循 CC BY-SA 2.5 许可协议

我会很好奇为什么你会在 C++ 中这样做。根据您的简短描述,C# 听起来像是一个更合适的选择。

只是为了详细说明一下,请查看您提供的描述 C++ CLR 的链接。评分最高的答案指出(准确地说,在我看来)C++ 适用于“内核、游戏、高性能和服务器应用程序”——这些似乎都没有描述你在做什么。

从某种意义上说,MFC、ATL 等将得到支持,是的,您将能够在未来版本的 Visual Studio 上编译您的应用程序并在未来版本的 Windows 上运行它们。但从某种意义上说,它们不受支持,因为 API 或语言中没有像 CLR 和 C# 中那样进行很多新的开发。

原文由 Clyde 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题