Лучший способ создать сервер TCP / IP для связи клиент-сервер?

0

Я собираюсь написать родную C++ службу Windows, которая должна собирать и хранить данные с клиентских настольных компьютеров, а может быть тысячи из них. Данные просты, такие как CPU%, Memory и некоторые другие данные из клиентского программного обеспечения, работающего на рабочих столах.

Каков наилучший способ архитектовать это взаимодействие клиент-сервер? Именованные трубы? TCP-сервер/клиент? Windows сокеты? WCF? Что-то другое? Или было бы лучше всего запускать SQL Server на сервере и устанавливать ли клиенты соединение с базой данных и отправлять такую информацию?

Я мог бы запустить многопоточный сервер Named Pipe в сервисе на сервере, но я не хочу генерировать поток для каждого соединения внутри службы с тысячами клиентов b/c, которые будут потреблять слишком много ресурсов серверной подсистемы. Клиенты будут находиться в локальной сети и через WAN.

Любое руководство ценится!

  • 3
    Стандартное решение - использовать WMI. Нет необходимости устанавливать какое-либо программное обеспечение на клиентском компьютере, это можно сделать удаленно.
  • 0
    Нужно ли отправлять данные с клиента асинхронно?
Показать ещё 6 комментариев
Теги:
multithreading
sockets
tcp

1 ответ

1

Вам не нужно писать сервер с нуля; вы уже можете получить доступ к счетчикам производительности Windows с помощью функций Performance Data Helper, описанных здесь: http://msdn.microsoft.com/en-us/library/windows/desktop/aa373214(v=vs.85).aspx

В частности, PdhAddCounter позволяет указать путь запроса, который может находиться на удаленной машине, как указано здесь: http://msdn.microsoft.com/en-us/library/windows/desktop/aa373193(v=vs.85).aspx

  • 0
    Да, PDH работает просто отлично, но я не упомянул, что я получаю данные, не относящиеся к ОС, из клиентской программы, запущенной на рабочих столах. Я отредактирую описание.
  • 1
    Отлично, тогда вы можете использовать Windows API для предоставления счетчиков для передачи ваших данных в систему и использовать PDH для их вывода на сервер. Документы: msdn.microsoft.com/en-us/library/windows/desktop/…
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню