Я думаю, что Rabbit MQ будет работать нормально, особенно если у вас много потребителей, т. Е. Требуется балансировка нагрузки и/или если вам нужны сообщения, чтобы они были постоянными, а также, если концептуально, ваши микросервисы в порядке обрабатывают сообщения.
В противном случае, поскольку вы рассматриваете REST, я бы рекомендовал WCF вместо этого.
Просто игнорируйте примеры Microsoft, которые слишком сложны. Вам необходимо создать сборку, содержащую протоколы (в терминологии WCF, контракты на обслуживание) + сообщения, которые они отправляют/получают (в терминологии WCF, контракты данных), которые будут использоваться между вашими службами. Наличие общей сборки позволит вам избавиться от этой ошибки в конфигурации XML в корпоративном стиле. Это также упростит обслуживание, чем REST, потому что компилятор проверяет правильность ваших сетевых вызовов: вы забываете обновлять одну услугу после изменения протокола, и служба прекратит компиляцию.
Here’s my demo, который использует WCF для реализации связи клиент-сервер с нулевой конфигурацией на C#. В настоящее время он настроен на использование именованного связывания каналов, т. Е. Будет работать только локально. Но легко переключаться с NetNamedPipeBinding
на NetTcpBinding
, что будет прекрасно работать в сети.
P.S. Если вы выберете WCF, не забывайте, что абстракция может и будет течь. Любой сетевой вызов может завершиться неудачей с любым связанным с сетью исключением. Также вам нужно будет снова подключаться (если вы этого не хотите, и у вас не слишком много сообщений в секунду, вы можете использовать протокол без подключения, например NetHttpBinding
, но это гораздо менее результативно).
Это довольно широкий и основанный на мнениях, поэтому не очень подходит для stackoverflow, поэтому я просто опубликую его как комментарий: у вас есть два варианта в основном: пойти со всеми Microsoft и использовать Service Fabric и надежные сервисы или использовать стороннюю библиотеку, такую как микрофон (github.com/rogeralsing/Microphone) вместе с распределенным хранилищем ключей/значений (т. е. etcd, consol, redis и т. д.) – Tseng
Поддерживает ли поддержка материнской платы mac os x? –
Насколько я знаю, нет. На данный момент вам также нужна полная .NET Framework, но вы не указали это в своем первоначальном вопросе, поскольку ASP.NET Core работает как на .NET Core, так и на полной .NET Framework. Но он работает либо на месте, либо на Azure – Tseng