在Windows服务中使用MFC?

mem*_*64k 5 mfc atl mfc-networking visual-studio visual-c++

我开始开发Windows服务.我想使用我自己的一些类,它们对CString,CSocket,CArchive,CMemFile和CObject等一些MFC类几乎没有依赖性.MSDN说你需要非常小心你在Windows服务中使用哪些MFC,但不要指定它,也不要描述可能出现的问题.

我的问题是:

  • 可以使用哪些MFC?
  • 使用MFC可以期待什么问题?
  • Windows服务的哪些部分对MFC使用至关重要?
  • 是否建议使用ATL代替MFC进行Windows服务?

Roe*_*oel 4

我不确定 MSDN 文章中的含义。只要您不使用任何 GUI 功能就可以了 - 但这是开发服务时的一般设计问题。

话虽这么说,ATL 具有专门为构建服务 IIRC 而设计的功能,因此您最好使用它。

回答您的问题(据我所知):

1)你指定的没有问题。

2)我猜它们意味着 UI 组件的同步问题。只要您不使用任何 CWnd 派生类就可以了。

3)不明白问题。

4) 如前所述,加上 ATL 更加轻量级,因此您需要分发的内容更少,并且提供内置功能,可以减轻开发服务的痛苦。参见例如 CAtlServiceModuleT。您仍然可以主要使用自己的类,因为 CString 现在在 MFC 和 ATL 之间共享,并且 ATL 本身具有用于套接字编程和内存文件映射的类。它没有 CArchive 的等效项,而且我不确定您在 CObject 中使用什么功能,所以我不能说 ATL 中是否有等效项。总而言之,我对这个问题说“是”。