我可以通过它来代替 ATL 的使用以获得相同或更好的性能?

Posted

技术标签:

【中文标题】我可以通过它来代替 ATL 的使用以获得相同或更好的性能?【英文标题】:By which I can replace the use of ATL to have an equal or a better performance? 【发布时间】:2014-04-28 08:07:53 【问题描述】:

我是 ATL 开发的新手。参考网络中的一些链接,COM 已经过时了。NET。

是否有任何技术可以替代 ATL?

ATL 基本上用于构建快速且小型的应用程序。 .NET 是否可以构建更小更快的应用程序?

请问构建原始 C++ .EXE 应用程序和 ATL .EXE 应用程序有什么区别?

【问题讨论】:

【参考方案1】:

ATL 只是 C++ 之上的一个框架/库。归根结底,普通的旧 C++ 应用程序和 ATL 应用程序之间没有根本区别。 ATL 倾向于与 COM 编程相关联,但这不是必需的。

另一方面,.Net 是一个完全独立的运行时。它编译为 IL 并在虚拟机(CLR)中运行。

至于哪个更小或更快。这里没有硬道理,但在一般

对于同等大小的应用程序,C++ EXE / DLL 往往更小 C++ 启动时间往往比 .Net 快,因为它不需要 JIT .Net 应用程序在内存管理、泄漏和损坏方面的问题与 C++ 相比往往较少 面向 .Net 的语言往往比 C++ 更容易学习

【讨论】:

如果我总结一下,最难开发的 C++ 是离开,在它变得比 .NET 更强大的高级应用程序之后。我上次发布的问题呢?而且,如果我构建不基于 COM 技术的 ATL 项目,这是否会牺牲 ATL 的设计目的(快速和小型应用程序)? @Siro 一般来说,.Net 和 C++ 同样强大。有一些极端案例,但它们非常深奥。我过去曾将 ATL 用于非 COM 应用程序,如果 STL 不是一个选项,集合尤其好。它仍然非常有用 那么,为什么那个COM被.NET过时了? COM是基于接口的C++编程方式。请问使用 ATL 和原始 C++ 编写 EXE 应用程序有什么区别?非常感谢!! @Siro COM 并没有过时,它非常活跃和活跃(并且可能与 Windows 一样长)。 COM 的核心只是定义数据契约的一种方式。在 C++ 中,它使用接口和简单的可编组类型来做到这一点。 .Net 是一个完全不同的编程环境(尽管可以使用 COM) 我还要补充一点,.NET 有一个 huge 开箱即用的基类集合——它是一个框架。在 C# 学习 10 年后,我最近回到了原生 C++,我真的很怀念所有这些课程。

以上是关于我可以通过它来代替 ATL 的使用以获得相同或更好的性能?的主要内容,如果未能解决你的问题,请参考以下文章

改进单选按钮的使用以启用/禁用表单字段

控制台应用服务或 ATL 服务

第十一天 函数名的使用以及第一类对象, 闭包, 迭代器

ATL 中的 CImage 类

rabbitmq trace 日志的使用以及其疑惑之处

【java】-关于String的使用以及其输出结果的问题