Два разных клиента представляют две разные (хотя и внешне похожие) функции AWS IoT:
AWSIoTMQTTClient
предоставляет общий интерфейс для брокера MQTT AWS IoT.Все, что он делает, это позволяет отправлять и получать сообщения по темам.На самом деле, если вы действительно хотите, вы можете использовать любой MQTT-клиент для этого (например, Paho MQTT), но я бы остановился на AWS, так как он настроен для их брокера. AWSIoTShadowClient
- этоинтерфейс специально для AWS IoT Device Shadow.Тень устройства - это управляемое AWS, для каждого устройства, двустороннее синхронизированное «состояние».Просто так получается, что один способ взаимодействия с тенью - это MQTT.Но цель состоит не только в отправке / получении сообщений, но и в том, чтобы предоставить механизмам для сохранения устройств и получения их состояния из облака. (подробнее здесь)
Итак, чтобы ответить на ваш вопрос:
Производительность : оба используют одно и то жебазовый протокол и так имеют аналогичную производительность.При нажатии AWSIoTMQTTClient
может работать лучше, если вы специализируете его для собственного использования, а не по шаблону Device Shadow;но я ожидаю, что любой выигрыш будет незначительным.
Безопасность : еще раз оба защищены точно так же, используя модель безопасности клиента / сертификата AWS IoT.AWSIoTShadowClient
, по-видимому, более безопасен по умолчанию, поскольку он уже настроен для обеспечения того, что только устройство может устанавливать свое сообщаемое состояние.
Техническое обслуживание : это немного зависит,Если ваш вариант использования (обсуждаемый далее) заключается в том, чтобы устройство сообщало о своем состоянии, и чтобы это состояние можно было проверять и обновлять из облака, то AWSIoTShadowClient
гораздо более удобен в обслуживании;просто потому, что это то, для чего он разработан и протестирован - вам придется писать и поддерживать меньше своего собственного кода!
Выбор подхода:
Тень устройства : Если у вас нет причин нет, используйте тень.Это управляемый и хорошо протестированный шаблон (который включает в себя крайние случаи, например, когда blub находится в автономном режиме, когда вы запрашиваете его изменение), чтобы ваши устройства отправляли состояние отправки / получения / синхронизации из облака.Он встроен в AWS, поэтому вы можете легко просматривать / изменять это состояние в консоли.Он также имеет встроенную постоянство, поэтому вы всегда можете проверить это последнее состояние, даже если вы не постоянно слушаете изменения в брокере.
Ваши собственные темы MQTT : есть несколько причин не использовать тень.Тень требует, чтобы вы отправляли полезные данные JSON, а в ситуациях с высокой нагрузкой на батарею / сеть вы можете использовать свой собственный двоичный протокол для сохранения байтов.Точно так же это о двойной стоимости (хотя все еще действительно дешево).Наконец, если ваши показания быстро движутся, только для записи, телеметрии, которые вам не нужно сохранять и на которые можно подписаться, когда вы заинтересованы, вы можете пропустить тень, потому что вам не нужны какие-либо ее функции.
Так что в вашем случае я бы сказал, что вы хотите использовать тень.