Why there are 2 azure iot C sdks?

New Contributor

I found 2 azure iot sdk for C on github.

azure-iot-sdk-c: https://github.com/Azure/azure-iot-sdk-c

azure-sdk-for-c: https://github.com/Azure/azure-sdk-for-c

Why there are 2 azure iot C sdks?

What is difference between 2 C sdks?

How to choose C sdk for development(azure-iot-sdk-c or azure-sdk-for-c)?


3 Replies
@DangNH - 1. "Azure IoT C SDK" is a C99 SDK for connecting devices to Microsoft Azure IoT services. For more details you can refer to this (https://github.com/Azure/azure-iot-sdk-c#readme) readme. 2. "Azure SDK for Embedded C" is designed to allow small embedded (IoT) devices to communicate with Azure services. Refer this (https://github.com/Azure/azure-sdk-for-c#readme) readme for more details.

@Israr_2020 2 sdks provide difference APIs. If I develop application on Linux PC using "Azure IoT C SDK" to connect to Azure IoT services, later I want to move to small embedded IoT device. I have to re-implement code to to connect to Azure IoT services using "Azure SDK for Embedded C". Is it correct?

Hi @DangNH , as @Israr_2020  said, the Embedded C SDK is focused on constrained devices (normally based on microcontrollers). For non-constrained devices C SDK is also a good choice. Your correct on your assumption: an application created for C SDK will require some re-work to be migrated over the Embedded C SDK as their underlying architecture designs are different. If you anticipate a need for constrained devices in the future, you should consider leveraging the Embedded C SDK as it's modular approach will make it simpler to enable different device configurations.