Question: I have store in bigcommerce. Now I want to implement advanced product search in that store like vehicle search in <http://www.crutchfield.com/Car/outfitmycar/car.aspx>.

Basically I want to narrow down the results based on selection of product category and attributes, so user can quickly find the required products.

Like first user will select product category, then year of production, then model of product, then any attributes related to that product, So result will be filtered based on the selection.

Answer: 
Looking at the documentation here: <https://azure.microsoft.com/en-in/documentation/articles/iot-suite-overview/>, what I gather is that `Azure IoT Suite` is actually a combination of many services and one of the services (albeit the most important one) is `Azure IoT Hub`.

To me, `Azure IoT Hub` solves just one part of the problem which is to provide device-to-cloud and cloud-to-device messaging capabilities and acting as the gateway to the cloud and the other key IoT Suite services. So essentially think of this service as the service which facilitates communication between devices and the cloud. There are other services in `Azure IoT Hub` which deals with what you do with the data once it comes in the cloud. Other services enable you to store data at scale, develop and present analytics on that data.
Azure Iot Hub and Event Hubs are workloads that enable data ingestion to Microsoft Azure. So you may think of them as separate standalone modules on Azure.

IoT Suite, is an automation tool, that provisions multiple modules to provide a boiler plate for an end to end IoT solution. The modules include Stream Analytics, IoT Hub, Document DB, a custom Web App for device monitoring etc.

Below is some sample code for connecting a device in C#.

```
    // Define the connection string to connect to IoT Hub
private const string DeviceConnectionString = "<replace>";
static void Main(string[] args)
{
  // Create the IoT Hub Device Client instance
  DeviceClient deviceClient = DeviceClient.CreateFromConnectionString(DeviceConnectionString);

  // Send an event
  SendEvent(deviceClient).Wait();

  // Receive commands in the queue
  ReceiveCommands(deviceClient).Wait();

  Console.WriteLine("Exited!\n");
}
// Create a message and send it to IoT Hub.
static async Task SendEvent(DeviceClient deviceClient)
{
  string dataBuffer;
  dataBuffer = Guid.NewGuid().ToString();
  Message eventMessage = new Message(Encoding.UTF8.GetBytes(dataBuffer));
  await deviceClient.SendEventAsync(eventMessage);
}
// Receive messages from IoT Hub
static async Task ReceiveCommands(DeviceClient deviceClient)
{
  Console.WriteLine("\nDevice waiting for commands from IoTHub...\n");
  Message receivedMessage;
  string messageData;
  while (true)
  {
    receivedMessage = await deviceClient.ReceiveAsync(TimeSpan.FromSeconds(1));

    if (receivedMessage != null)
    {
      messageData = Encoding.ASCII.GetString(receivedMessage.GetBytes());
      Console.WriteLine("\t{0}> Received message: {1}", DateTime.Now.ToLocalTime(), messageData);
      await deviceClient.CompleteAsync(receivedMessage);
    }
  }
}

```

Hope this helps!

Mert