控制台应用服务或 ATL 服务

Posted

技术标签:

【中文标题】控制台应用服务或 ATL 服务【英文标题】:Console App Service or ATL Service 【发布时间】:2010-12-17 12:16:14 【问题描述】:

我需要创建一个服务。我知道您可以仅使用控制台应用程序来完成,但也可以使用 ATL 来完成。ATL 服务与简单的控制台应用程序服务相比有什么好处?我知道 ATL 是 COM.. 但是 COM 与服务有什么好处.. 谢谢!

【问题讨论】:

【参考方案1】:

该服务并没有完全从 COM 中受益,而是相反。

通过在服务中托管您的 COM 对象,您可以获得服务的所有系统功能(在用户登录前启动、受控策略看门狗、身份配置等)

ATL 让您有机会在服务上下文中运行 COM 对象,而不是在进程内 (DLL) 或常规的进程外托管。 COM+ 是定制托管的另一种选择。

如果您的服务只是一个后台服务,添加 COM 支持可以为您提供简单的可编程性,但除此之外我看不到任何好处。

所以,我不确定这是否能回答你的问题……这个问题感觉倒退了 :)

【讨论】:

我想编写一个具有侦听器套接字的服务。它将有几个重叠 i/o 的类。传入连接将附加到不同的 io 完成端口(取决于“询问请求”)。我认为做 ATL 服务会给我带来额外的好处。 (通过 com 附加调试器以了解正在发生的事情等)。这种方法是一种好方法还是我应该只做一个没有 atl 的控制台应用程序?我也想用这个服务连接到数据库。希望这会有所帮助。 @BabelFish:我们多年来一直在开发没有 ATL 的 NT 服务,并且从未遇到过调试问题 - 我们只是附加到进程并像往常一样调试。 对,COM 没有提供任何额外的调试功能。 感谢您的回复.. 我正在考虑制作一个可视化调试器(通过调试器,我并不是指 Visual Studio.. 澄清).. 该服务会将信息提供给调试器并生成结构模型的 3D 图像。它可以报告瓶颈、处理器使用情况等。整个系统可以通过该调试器进行管理。我假设您正在为服务做一个控制台应用程序?有什么很棒的样板模板可用吗?包括与服务的交互? 也.. 应该注意我的服务需要连接到数据库.. 我将使用 ADO..

以上是关于控制台应用服务或 ATL 服务的主要内容,如果未能解决你的问题,请参考以下文章

如何更新使用 C++ 中的 ATL OLE 数据库从简单的 SQL 服务器表中获取的行数据

VC++ ATL编写的Windows系统服务程序如何运行设置断点调试

如何在基于 ATL 的服务器中正确转换和使用本机 COM 类型?

如何将 NotifyIcon 添加到 ATL 进程外服务器

在 CI 服务器上构建 ATL VS2010 项目

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