【问题标题】:How to create and communicate with a C++ Windows Service in Visual Studio 2010?如何在 Visual Studio 2010 中创建 C++ Windows 服务并与之通信?
【发布时间】:2011-07-05 11:23:14
【问题描述】:

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

但我面临几个问题:

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

  2. 假设我设法创建了一个 C++ Windows 服务:我有哪些选择可以与该服务进行通信(来自 c sharp)?有什么优点/缺点?

我很高兴有任何提示!

【问题讨论】:

    标签: c++ windows visual-studio-2010 service


    【解决方案1】:

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

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

    看看this MSDN page。它准确描述了您要实现的目标:在 Windows 服务中托管 WCF 服务。它甚至在最后包含一个简单的 Windows 服务实现。不幸的是,没有 C++,只有 C#。

    【讨论】:

    • 嗯.. 感谢您的链接。但是在将 WCF 与 C++ 一起使用时,它似乎不那么简单了。而且我还不完全知道如何将我的 C++ 代码集成到 C# Windows 服务中。
    【解决方案2】:
    1. 您可能想看看POCO Project,尤其是this class。如果您下载代码,则有示例。
    2. 您可能还希望实现web service,以便通过套接字从任何地方的任何客户端轻松访问。

    【讨论】:

    • 这看起来像一个不错的库,具有很酷的特性,实际上我可能还需要实现一个 Web 服务。我去看看!
    【解决方案3】:

    几年前我做的是一个 COM 进程外服务器,它是一个 Windows 服务。它运行良好,您可以轻松地从 C#(和许多其他语言......)访问它。如果您没有 COM 经验,可能会变得困难(取决于您的界面有多复杂)。

    【讨论】:

      【解决方案4】:

      你应该实现以下功能:

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

      有关MSDN 的更多信息。一个例子:link

      【讨论】:

        【解决方案5】:

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

        最好的问候

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-12-16
          • 2014-08-29
          • 1970-01-01
          相关资源
          最近更新 更多