Я разрабатываю клиентское приложение С++, которое прослушивает несколько портов для потоков коротких сообщений. После изучения ACE, POCO, boost::asio и всех шаблонов проектирования, подобных Proactor, я собираюсь начать с boost::asio.
Одна вещь, которую я заметил, это постоянная тема использования асинхронного ввода-вывода через сокет, но я не читал хорошего описания проблемы, которую решает асинхронный ввод-вывод. Основаны ли все эти шаблоны проектирования на предположении о конструкции веб-сервера HTTP?
Поскольку веб-серверы являются наиболее распространенным приложением для сложного программирования параллельных сокетов, чувствительного к задержке, я начинаю задаваться вопросом, предназначены ли большинство этих шаблонов/идиом для этого одного приложения.
Мое приложение будет прослушивать несколько сокетов для коротких и частых сообщений. Отдельный поток должен будет объединить все сообщения для обработки. Одна вещь, для которой я рассматриваю шаблоны проектирования, — это отделение управления соединениями от обработки данных. Я хочу, чтобы соединения пытались переподключиться после отключения и чтобы поток обработки продолжался, как будто ничего не произошло. Какой шаблон проектирования рекомендуется здесь?
Я не вижу, как async io улучшит производительность в моем случае.