首页 > 解决方案 > 适用于 C 的 Azure IoT Hub SDK:使用哪个客户端模块?

问题描述

我们正在使用 Azure IoT Hub 作为后端解决方案来制作 IoT 产品。主应用程序是用 C 编写的,我们将使用 Azure SDK for C。我们研究了 SDK 并决定使用低级客户端。但事情是这样的 - Azure SDK 中有多个模块似乎是独立的-iothub_client_ll.h和. 使用哪一个?iothub_device_client_ll.hiothub_client_core_ll.h

我们还注意到它iothub_device_client_ll.h没有异步处理设备方法的能力,我们真的需要那个东西。但是 device_client 模块似乎是最新的——也许微软的人打算iothub_client_ll从 SDK 中删除模块?

我们无法在 Azure 网站或 github 存储库文档和讨论中找到这些问题的答案。任何人都可以帮助我们理解这些东西吗?

标签: azureazure-iot-hubazure-iot-sdk

解决方案


如果您查看源文件,您会发现它们都调用了iothub_client_core_ll,因此您使用哪个几乎没有关系。这些不同版本的存在只是为了向后兼容。

我不明白你所说的异步处理是什么意思。这些文件中的 ll 代表低级别,这意味着它们比没有 ll 的版本具有更少的依赖关系。其中之一是它在内部不使用任何线程,因此代码可以在不支持线程的处理器上运行,因此一切都将在单个线程上运行,并且您将需要IoTHubClient_LL_DoWork定期调用(想想 100 次第二)为了连接到集线器并发送和接收消息。如果您需要在第二个线程中处理设备方法,那么您应该使用没有ll 指定的版本。


推荐阅读