Как создать и общаться с C ++ Windows Service в Visual Studio 2010? - PullRequest
2 голосов
/ 05 июля 2011

У меня есть (вроде) база данных, реализованная на C ++. Теперь я хочу создать службу Windows для запроса, потому что P-вызывать ее нельзя, поскольку база данных должна загружаться при каждом запросе, что занимает несколько минут.

Но я сталкиваюсь с несколькими проблемами:

  1. Как я могу создать C ++ Windows Service в VS2010? Шаблон был удален (почему ???), могу ли я использовать шаблон 2008 года и преобразовать его? Если да: где я могу найти такой шаблон?

  2. Предполагается, что мне удается создать службу C ++ для Windows: каковы мои варианты взаимодействия с этой службой (с нуля)? Каковы преимущества / недостатки?

Буду рад любой подсказке!

Ben

Ответы [ 5 ]

2 голосов
/ 05 июля 2011

Не знаю почему, но шаблон действительно исчез.

Для связи между вашим приложением и службой WCF будет вариант. Одним из преимуществ WCF является то, что вы можете легко переключать транспортный уровень (HTTP, TCP, Shared Memory)

Посмотрите эту страницу MSDN . Он точно описывает, чего вы пытаетесь достичь: разместить службу WCF в службе Windows. В конце он даже содержит простую реализацию службы Windows. К сожалению, нет C ++, но C #.

1 голос
/ 05 июля 2011

То, что я делал несколько лет назад, было сервером COM вне процесса, который был службой Windows. Он работал нормально, и вы можете легко получить к нему доступ из C # (и многих других языков ...). Если у вас нет опыта работы с COM, это может стать затруднительным (в зависимости от сложности вашего интерфейса).

1 голос
/ 05 июля 2011
  1. вы можете взглянуть на POCO Project , в частности этот класс .Есть примеры, если вы загружаете код.
  2. вы также можете реализовать веб-сервис для быстрого доступа с любого клиента в любом месте через сокеты.
1 голос
/ 05 июля 2011

Вы должны реализовать следующие функции:

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

Подробнее о MSDN .Пример: ссылка .

0 голосов
/ 24 апреля 2012

Может быть, вы можете использовать!Проект ATL и затем выберите Служба (EXE).

С наилучшими пожеланиями

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...