What is Azure IoT device and application development?

Azure IoT is a collection of managed and platform services that connect, monitor, and control your IoT devices. Azure IoT offers developers a comprehensive set of options. Your options include device platforms, supporting cloud services, SDKs, and tools for building device-enabled cloud applications.

This article overviews several key considerations for developers who are getting started with Azure IoT.

Device development paths

This article discusses two common device development paths. Each path includes a set of related development options and tasks.

  • Device application development: Aligns with modern development practices, targets higher-order languages, and executes on a general-purpose operating system such as Windows or Linux.

    Note

    If your device is able to run a general-purpose operating system, we recommend following the Device application development path. It provides a richer set of development options.

  • Embedded device development: Describes development targeting resource constrained devices. A resource constrained device will often be used to reduce per unit costs, power consumption, or device size. These devices have direct control over the hardware platform they execute on.

Device application development

Device application developers are adapting existing devices to connect to the cloud and integrate into their IoT solutions. These devices can support higher-order languages, such as C# or Python, and often support a robust general purpose operating system such as Windows or Linux. Common target devices include PCs, Containers, Raspberry Pis, and mobile devices.

Rather than develop constrained devices at scale, device application developers focus on enabling a specific IoT scenario required by their cloud solution. Some developers will also work on constrained devices for their cloud solution. For developers working with resource constrained devices, see the Embedded Device Development path.

Important

For information on SDKs to use with device application development, see the Device SDKs.

Embedded device development

Embedded development targets constrained devices that have limited memory and processing. Constrained devices restrict what can be achieved compared to a traditional development platform.

Embedded devices typically use a real-time operating system (RTOS), or no operating system at all. Embedded devices have full control over their hardware, due to the lack of a general purpose operating system. That fact makes embedded devices a good choice for real-time systems.

The current embedded SDKs target the C language. The embedded SDKs provide either no operating system, or Azure RTOS support. They're designed with embedded targets in mind. The design considerations include the need for a minimal footprint, and a non-memory allocating design.

Important

For information on SDKs to use with embedded device development, see the Embedded device SDKs.

Choosing your hardware

Azure IoT devices are the basic building blocks of an IoT solution and are responsible for observing and interacting with their environment. There are many different types of IoT devices, and it's helpful to understand the kinds of devices that exist and how they can affect your development process.

For more information on the difference between devices types covered in this article, see About IoT Device Types.

Choosing an SDK

As an Azure IoT device developer, you have a diverse set of SDKs to help you build device-enabled cloud applications. The SDKs streamline your development effort and simplify much of the complexity of connecting and managing devices.

There are three sets of IoT SDKs for device development:

  • Device SDKs (for using higher order languages to connect existing general purpose devices to IoT applications)
  • Embedded device SDKs (for connecting resource constrained devices to IoT applications)
  • Service SDKs (for building Azure IoT solutions that connect devices to services)

To learn more about choosing an Azure IoT device or service SDK, see Overview of Azure IoT Device SDKs.

Selecting a service

A key step in the development process is selecting a service to connect your devices to. There are two primary Azure IoT service options for connecting and managing devices: IoT Hub, and IoT Central.

  • Azure IoT Hub. You can use Iot Hub to host IoT applications and connect devices. IoT Hub is a platform-as-a-service (PaaS) application that acts as a central message hub for bi-directional communication between IoT applications and connected devices. IoT Hub can scale to support millions of devices. Compared to other Azure IoT services, IoT Hub offers the greatest control and customization over your application design. It also offers the most developer tool options for working with the service, at the cost of some increase in development and management complexity.
  • Azure IoT Central. IoT Central is designed to simplify the process of working with IoT solutions. You can use it as a proof of concept to evaluate your IoT solutions. IoT Central is a software-as-a-service (SaaS) application that provides a web UI to simplify the tasks of creating applications, and connecting and managing devices. IoT Central uses IoT Hub to create and manage applications, but keeps most details transparent to the user.

Tools to connect and manage devices

After you have selected hardware and a device SDK to use, you have several options of developer tools. You can use these tools to connect your device to IoT Hub, and manage them. The following table summarizes common tool options.

Tool Documentation Description
Azure portal Create an IoT hub with Azure portal Browser-based portal for IoT Hub and devices. Also works with other Azure resources including IoT Central.
Azure IoT Explorer Azure IoT Explorer Can't create IoT hubs. Connects to an existing IoT hub to manage devices. Often used with CLI or Portal.
Azure CLI Create an IoT hub with CLI Command-line interface for creating and managing IoT applications.
Azure PowerShell Create an IoT hub with PowerShell PowerShell interface for creating and managing IoT applications
Azure IoT Tools for VS Code Create an IoT hub with Tools for VS Code VS Code extension for IoT Hub applications.

Note

In addition to the previously listed tools, you can programmatically create and manage IoT applications by using REST API's, Azure SDKs, or Azure Resource Manager templates. Learn more in the IoT Hub service documentation.

Next steps

To learn more about device SDKs you can use to connect devices to Azure IoT, see the following article.

To get started with hands-on device development, select a device development quickstart that is relevant to the devices you're using. The following article overviews the available quickstarts. Each quickstart shows how to create an Azure IoT application to host devices, use an SDK, connect a device, and send telemetry.