WURFL Microservice for Azure Marketplace

Using WURFL Microservice for Azure will allow you to run your own WURFL-based device detection service in your hosting infrastructure by deploying familiar Azure VM images. If you are not familiar with Azure and the possibilities of the Azure Cloud infrastructure, here is a good place to get started.

WURFL Microservice Architecture

WURFL Microservice is a service which exposes its functions through a REST interface. Communication with the service happens through local APIs (Client APIs) that speak HTTP to the HTTP Server.

Note: The REST interface is used for communication between the Client API and the HTTP Server and is totally transparent to users of WURFL Microservice. Users with a very specific use-case(s) may contact ScientiaMobile about enabling the ability to directly utilize the REST Interface (this approach is normally discouraged). Among other things, local APIs will provide a caching layer which delivers greater performance in actual usage.

The following diagram explains the overall architecture of WURFL Microservice as deployed through the Azure Marketplace. The Azure VM will start an instance of the HTTP Server. In addition to supporting the REST interface for API clients, the service will periodically query ScientiaMobile for updates to the WURFL Device Description Repository to include the profiles of newly released devices.

Deploying the Azure VM and Setting up the Local APIs

1. Go to the Azure Marketplace, search for WURFL, and select the correct Virtual machine for your needs. VMs are currently available based on the set of Capabilities (Device Properties):

Client APIs are available for all capability set for the following supported languages : Go (golang), Java, .NET, Node.js and PHP.

You can find direct links to the specific Azure VMs here:


WURFL Microservice for GO,JAVA,dotNET,NODE.JS,PHP - Basic Edition


WURFL Microservice for GO,JAVA,dotNET,NODE.JS,PHP - Standard Edition


WURFL Microservice for GO,JAVA,dotNET,NODE.JS,PHP - Professional Edition

2. Select the Virtual machine instance you want to run your Azure VM on.

Note: This depends greatly on how much traffic you need to process through device detection. As a rule of thumb, using Standard_B1ms (single CPU, 2GB Memory) will allow about 1000 lookups/sec. Actual throughput will be much higher for users of any of the APIs thanks to local caching. While Standard_B1ms is sufficient for development and testing, a larger instance such as Standard_A2_v2 or larger is recommended for production.

3. After reviewing the purchasing options, follow the instructions for running the purchased VM under your Azure account. This will create an instance that you can monitor from your Azure Dashboard. You will need to know the Instance IP address (<instance-ip>) to correctly configure your client API options (following step). The address can be found in your Azure dashboard.

Note: The configuration presented here is the simplest possible way to obtain a running instance of WURFL Microservice within Azure. In a real production environment, things are likely to be more complex than this and may involve making multiple instances of the product with a load balancer to distribute traffic and achieve fault tolerance. Discussion of the Azure infrastructure is outside the scope of this document.

4. (Only for first-time WURFL Microservice Azure VM users) Run the Instance and point your web browser to the Instance IP address:


Note: The key component of WURFL Microservice is a daemon that exposes a REST API to other modules in your microservice architecture. APIs are provided to offer a traditional programming interface in multiple languages and hide the complexity of the REST end-points under the hood. WURFL Microservice conveniently utilizes the availability of a HTTP server to distribute the required Client Libraries (i.e. the local APIs) to integrate Device Detection within your application in Java, PHP, .NET, etc.

For all VMs, you will see the list of API packages for all the supported languages:

Client APIs are provided also on ScientiaMobile public github repository :

dotNET : https://github.com/WURFL/wurfl-microservice-client-dotnet Golang : https://github.com/WURFL/wurfl-microservice-client-golang Java : https://github.com/WURFL/wurfl-microservice-client-java Node.js : https://github.com/WURFL/wurfl-microservice-client-nodejs PHP : https://github.com/WURFL/wurfl-microservice-client-php

This step will confirm that the VM is up and running.

5. (Only for first-time WURFL Microservice Azure VMs users) Install the Client API package and import the API in your project to start using it in your application.

You can find the documentation for each API here:

  1. Golang (GO Language)

  2. Java

  3. Microsoft .NET

  4. PHP

  5. Node.js

6. (Optional) Open a shell terminal and confirm that the WURFL Microservice is running as expected:

$ curl  http://<instance-ip>/v2/status/json
    "lookup_request": 0,
    "lookup_useragent": 0,
    "lookup_device_id": 0,
    "make_model_requests": 0,
    "server_info_requests": 8,
    "v1_capabilities_requests": 0,
    "not_found_404": 0,
    "server_uptime": 1172

© 2020 ScientiaMobile Inc.
All Rights Reserved.

NOTICE: All information contained herein is, and remains the property of ScientiaMobile Incorporated and its suppliers, if any. The intellectual and technical concepts contained herein are proprietary to ScientiaMobile Incorporated and its suppliers and may be covered by U.S. and Foreign Patents, patents in process, and are protected by trade secret or copyright law. Dissemination of this information or reproduction of this material is strictly forbidden unless prior written permission is obtained from ScientiaMobile Incorporated.