Я пишу распределенную систему, в которой каждый узел взаимодействует с локальными приложениями через некоторый RESTful API, поддерживает расширения и настройку времени выполнения и т. Д. Это немного похоже на Enterprise Service Bus на обширной территории, но с большим количеством других событий, которые не связаны с рассматриваемым вопросом.
Я немного читал о MPI и Asio — изначально я был на Asio, но потом я нашел MPI, и теперь снова я думаю, что Asio — лучшее решение для меня. Похоже, что MPI предоставляет мне многое, что мне не нужно, и более высокий уровень абстракции, чем я хочу — например, мне нужно только двухточечное общение, и для меня важно контролировать, когда и какие данные передается. (например, я уже разработал структуру пакета, которой я бы в идеале соответствовал)
Итак, мой основной вопрос: стоит ли начинать с более низкого уровня с Asio, или я должен попытаться привить MPI к тому, что я ищу? Кроме того, есть ли «скелетные» приложения, использующие MPI или Asio, которые помогут развитию? (На самом деле я на 100% новичок в C ++ ..;) Или имеет смысл использовать их в тандеме?
Для большей перспективы, возможно, стоит отметить, что я уже реализовал большую часть этого проекта в Perl, используя Perl Object Environment, которая сама по себе является просто асинхронной системой событий с кучей сетевых библиотек.
Кроме того, если это имеет значение, я бы идеально использовал темы для этого.
Честно говоря, хотя я еще не использовал Boost, как я уже упоминал выше, поэтому любой вклад приветствуется.
Я должен начать с того, что я ничего не знаю об Asio, но после двухминутного сканирования веб-сайта и описания вашей проблемы кажется, что в то время как любой из них будет работать для вас, Asio может быть проще. MPI действительно предназначен меньше для общего сетевого взаимодействия и больше для запуска приложений, где набор процессов и приложений немного более статичен. Хотя при желании он предоставляет интерфейс в стиле клиент / сервер, он не является основным направлением работы библиотеки.
MPI также сложнее использовать, если у вас уже есть спроектированная структура пакетов. MPI отлично подходит для отвлечения от необходимости беспокоиться о пакетах, расположении процессов и т. Д., Но если вы уже учли все это в своем приложении, вы уже проделали тяжелую работу.
Было по крайней мере еще одно обсуждение Asio vs. MPI, на которое вы можете взглянуть (Для распределенных приложений, которые использовать, ASIO против MPI?) чтобы получить больше мнений тоже.
Других решений пока нет …