How To Add Azure Mobile Services to a Windows Phone App

Windows Phone apps that use live tiles, authenticate users with single-sign on, and share data between devices and users generally employ cloud services. Most cloud platforms offer general purpose capabilities to store data and execute code, but you have to add a lot of infrastructure code to glue these capabilities together. Azure Mobile Services let you add cloud services to your app in minutes.

Introduction

This tutorial shows you how to add a backend service to a Windows Phone app using Azure Mobile Services. You will create a new mobile service and a simple to-do app that stores its data in the cloud using the new mobile service. In this tutorial, you will learn how to:

  • create a mobile service and add tables to it
  • update the app to use the mobile service
  • test the mobile service hosted on Azure Mobile Services

To follow along with me, you need a Windows Azure account. You can sign up for a Windows Azure trial if you don’t have an account yet. 

1. Create a Mobile Service

We first need to set up a new mobile service that can be used by the Windows Phone app. The mobile service that you will create in this tutorial is a JavaScript backend mobile service. It enables you to use JavaScript for server-side business logic. Follow these steps to create a new mobile service using the Azure Management Portal.

Step 1: Add a Mobile Service

Log in to the Azure Management Portal and click the NEW button in the navigation bar. Expand Compute > Mobile Service and click Create.

Adding a Mobile Service

 Step 2: Select Database Type, Region, and Runtime

In the New Mobile Service wizard, select a free 20 MB SQL database or use one of your existing databases. Select JavaScript from the Backend menu and enter a subdomain for the new mobile service in the URL text box.

Select the Database Type Region and Runtime

Note that the name of the mobile service needs to be unique. An error is displayed next to URL when the name/subdomain you entered isn’t available.

Step 3: Specify Database Settings

When you create a new mobile service, it is automatically associated with a SQL database. The Azure Mobile Services backend then provides built-in support for enabling remote apps to securely store and retrieve data from it, without you having to write or deploy any custom server code.

To configure the database, enter the name of the database in the Name field. Next, enter Server Login Name and Server Login Password to access the SQL database server.

Specify Database Settings

Click the checkmark in the bottom right to complete the process. You have now created a new mobile service that can be used by your mobile apps. Before you can start storing data, you first need to create a table that can store your application’s data.

Note that the use of a database in a different region is not recommended because of additional bandwidth costs and higher latencies.

2. Add a Table to the Mobile Service

In this step, we will add a table named ToDoItem to the mobile service, which will be used by the client app to save the user’s to-do items.

Step 1: Create a New Table

From the Data tab in the Azure Management Portal, click Create to add a new table to the mobile service. Name the table ToDoItem and set a permission level against each operation. For the ToDoItem table, I have used the default permission settings.

Create a New ToDoItem Table

Click the checkmark in the bottom right to complete the table setup process. In just a few seconds, you have added the ToDoItem table to the mobile service.

Step 2: Add Columns to the Table

The ToDoItem table already contains a number of columns for storing id, creation date, deleted status, updated date, and version information. To make the table useful for our application, we need to add two additional columns, one for storing the text of the to-do item and one for storing the to-do item’s status.

To add the additional columns, click Add Column from the Columns tab of the ToDoItem table. The text column is of type String and the completed column is of type Boolean.

Add Column to the Table

These are the columns of the ToDoItem table.

View All Columns in the Table
Now that we have set up our mobile service and have added a table to it, you have two options: create a new app or connect an existing app to the mobile service. In this tutorial, we will modify an existing Windows Phone app to use the mobile service.

3. Configure the App to Use the Mobile Service

The app needs to be configured correctly to use the mobile service. You need to add code to connect your app to your mobile service and save data to the cloud.

Right-click the project name in the Solution Explorer and choose Add Connected Service from the menu. In the Add Connected Service dialog box that appears, choose Azure Mobile Services and click Configure.

Add a Connected Service

Next, choose the mobile service that you created earlier from the list of existing services in your account. You will need to provide your credentials to connect and list the mobile services in your Windows Azure account.

Connect to an Azure Mobile Service

Select the mobile service we created and click Add to complete the process. The wizard will then add all the required references to your project. The references can also be added manually by installing the required package using NuGet. Right-click your client project, select Manage NuGet Packages, search for the WindowsAzure.MobileServices package, and add a reference for the package.

Add Azure Mobile Services Package Reference

The wizard installs the required NuGet packages, adds a reference for the mobile service’s client library to the project, and updates the project source code. The wizard also adds a new static field to the App class that looks like this:

This code provides access to your new mobile service in your app by using an instance of the MobileServiceClient class. The client is created by supplying the URI and the application key of the new mobile service. This static field is available to all the pages in your app. You need to add this code manually to App.xaml.cs if you are not using the wizard.

4. Update the App to Use the Mobile Service

You need to update your Windows Phone app to use the mobile service as a backend service. You only need to make changes to the MainPage.cs project file.

Step 1: Add the ToDoItem Class Definition

Add a new model class, ToDoItem, to your project. The model class contains properties corresponding to the columns in the ToDoItem table we created earlier.

The JsonPropertyAttribute method is used to define the mapping between property names in the client app and column names in the corresponding table. A reference to Newtonsoft.Json package must be added to the project to make this work.

Step 2: Add Code to Insert and Fetch Items

Add the following using statement to MainPage.xaml.cs:

Add the following lines at the top of MainPage.xaml.cs to create a mobile services-aware binding collection and proxy class for the database table.

Next, create an InsertToDoItem method to insert a new item into the table. Add the async modifier to the method and add the following code to insert an item.

This code works if your table has permissions set to Anybody with an Application Key. If you change the permissions to secure your mobile service, you’ll need to add user authentication support. See Adding Authentication Using Azure Mobile Services

Create a RefreshTodoItems method that sets the binding to the collection of items in the ToDoItem table, which contains all of the ToDoItem objects returned from the mobile service. We display a message box if a problem occurs while executing the query.

Step 3: Add Controls to MainPage.xaml

We now have to update MainPage.xaml to display to-do items and add the ability to add to-do items. Below is what the XAML code could look like for a simple user interface that contains a TextBox to insert items and a ListView to view to-do items.

The InsertToDoItem method is called when the Save button is tapped, which inserts the to-do item into the table.

The RefreshToDoItems method is invoked when the Refresh button is tapped. In this method, we fetch all the items in the table.

5. Test the Mobile Service

The final step of this tutorial is to review the data stored in the mobile service. In the Windows Azure classic portal, click the ToDoItem table under the Data tab of your mobile service. Under the Browse tab, you can view all the items in the table.

View All Items in the Table

Conclusion

This tutorial demonstrates the basics of using Azure Mobile Services as a backend for a Windows Phone app. Creating a mobile service and using it in the app to store data in the cloud is easy to implement.

More complex scenarios involve supporting offline data sync. You can also add offline data sync support to the app following this tutorial. You can restrict table permissions to allow only authenticated users to update the table following this Envato Tuts+ article.

Feel free to download the tutorial’s source files for reference. Remember to configure the app to use Azure Mobile Services before deploying it.