如何在Visual Studio 2010中创建c++ Windows服务并与之通信

How to create and communicate with a C++ Windows Service in Visual Studio 2010?

本文关键字:服务 Windows 通信 c++ 创建 Visual Studio 2010      更新时间:2023-10-16

我有一个(一种)用c++实现的数据库。现在我想创建一个Windows服务来查询它,因为p调用它不是一个选项,因为每个查询都必须加载数据库,这需要几分钟。

但我面临几个问题:

  1. 如何在VS2010中创建c++ Windows服务?模板已被删除(为什么??),我可以使用2008年的模板和转换吗?如果有:我在哪里可以找到这样的模板?

  2. 假设我设法创建一个c++ Windows服务:我的选择是什么与此服务通信(从C sharp)?优点/缺点是什么?

我很高兴得到任何提示!

我不知道为什么,但是模板真的不见了。

对于应用程序和服务之间的通信,WCF将是一个选项。WCF的一个优点是,您可以轻松地切换传输层(HTTP、TCP、共享内存)

看看这个MSDN页面。它准确地描述了您要实现的目标:在Windows服务中托管WCF服务。它甚至在最后包含了一个简单的Windows Service实现。可惜没有c++,只有c#

  1. 你可能想看看POCO项目,特别是这个类。如果你下载了代码,这里有一些例子。
  2. 您可能还想实现一个web服务,以便通过套接字从任何地方的任何客户端轻松访问。

几年前我做的是一个COM进程外服务器,这是一个Windows服务。它工作得很好,你可以很容易地从c#(和许多其他语言…)访问它。如果您没有COM经验,这可能会变得困难(取决于您的接口有多复杂)。

您应该实现以下函数:

VOID WINAPI ServiceMain(DWORD dwArgc, LPTSTR *lpszArgv);
VOID WINAPI ServiceHandler(DWORD fdwControl);
VOID ReportSvcStatus( DWORD dwCurrentState, DWORD dwWin32ExitCode, DWORD dwWaitHint );

MSDN上的更多信息。示例:link.

也许你可以使用!"ATL项目",然后选择"服务(EXE)"。