Click here to Skip to main content
15,881,516 members
Articles / Hosted Services / Azure

Looking at Windows Azure Mobile Services with Fiddler

Rate me:
Please Sign up or sign in to vote.
4.50/5 (2 votes)
10 Sep 2012CPOL7 min read 14.7K   7   3
Windows Azure Mobile Services with Fiddler

As usual, throughout the day I have MetroTwit open and toast are constantly popping up here and there and I glance over to see what’s what. Then I see this from @WindowsAzure:

image

And all work stopped for me to check this out. Other than Windows Phone and Windows 8; I really love the new ASP.NET WebAPI and REST Services capabilities it has made so easy (watch for my next post on that), and seeing this, I was thinking – awesome, but only for Windows 8??? So… I immediately responded and got a response:

twitter_conversation

Spending the last day or so checking into the walk through for Windows 8, check them out here. I went through the initial walkthrough for a Windows 8 application, and during this, I wanted to see the data that was going back and forth, so I opened my favorite tool Fiddler to see the HTTP calls, which then lead me to see that I could easily use these services for Windows Phone 7 now!

Here is a quick walkthrough on how to get setup.

Getting Started

In order to start using the preview of the Mobile Services in Azure, you need to have a Windows Azure account or you can sign up for a trial account. After you login, go to your Account Center and select the Preview Features from the top menu.

image

I have already signed up for the Mobile Services, so you will see a “try it now” button and go ahead click that to get started. Once you get transferred to the, unfortunately still called the “Preview” portal, you’ll notice on the left menu that there is a new Mobile Services section.

image

Next on the bottom portion of the management portal, you will see the +, which you simply click to add the new Mobile Service.

image

Choose create and the New Mobile Service dialog is presented; enter the name of your new mobile service, select or create a new SQL Server Database, and finally select the Region for your instance. There are some other options in the “Configure advanced database settings” but we’ll not do that now for simplicity sake.

*** As a note, if you create a new database; remember the credentials. You will need this information if you choose to add another database to the server later.

Upon completion of the wizard, the management portal will tell you it's creating…, the poof it's there. I named mine “testmobileservice”.

image

If you click on the URL, you’ll be presented with the following page…

testpage

These are just services, or a service endpoint. The closest thing I can really relate this to is in SQL 2005, we were given the ability to expose certain objects as web service endpoints, it was a neat feature but not widely used and still available to my knowledge. Sorry I digress, let’s get back to the management portal and create a Todo table.

If you click on the Mobile Service name, you see the following screen, and although the initial announcement was for Windows 8 support and the walkthroughs, etc. show that, let’s just create a table and I can get to Fiddler and show you how the data looks to and from the REST Service.

image

Click over the DATA tab, then the + on the bottom, then add the table. Name the table ToDoItem and click the check to create the new table.

image

Pretty simple right? Just created a new table in a database by simply naming a table… DBAs are freaking out around the world right now.

Ok, so go back to the DASHBOARD and find the MANAGE KEYS icon at the bottom, and we are going to add/create a new Application Key for the Mobile Service.

mananagekeyyes

Now, there are still some things under the covers here that I am still finding the answers too, but my first guess is this is some iteration/flavor of oAuth. But, go ahead and copy down the Application Key that is generated for you. At this point, there is only one key and if you regenerate post deployment then your app will break so be careful with that little regenerate button of power.

image

Click the check mark and you are ready to start.

Interacting with the Endpoint via REST

Using Fiddler to see your HTTP calls going to and from RESTful endpoint is great, BUT there is also a little tab in there that most developers don’t realize is there. It’s the Composer tab. You can either originate a call in there OR drag a previous call from the left side to the composer tab and make changes to it and hit the execute button. Great feature!

image

What Are My EndPoints?

Interesting how this works…

The endpoints are formatted as https://[your new service address]/tables/[table name]. So in my case, the RESTful endpoint for the TodoItem table is: https://testmobileservice.azure-mobile.net/tables/TodoItem. I have inserted a single record already so we can construct a GET call in Fiddler to see what is returned.

Do this by again, going to the composer tab and inserting the url for the endpoint in the location box and in the Request Headers, you will need to add the following:

User-Agent: Fiddler
Host: testmobileservice.azure-mobile.net
Accept: application/json
X-ZUMO-APPLICATION: <span style="background-color: yellow;">[YOUR APPLICATION KEY HERE]</span>

The X-ZUMO-APPLICATION header key/value pair is the secret sauce, I am sure that when the official SDK for these services is released for Windows Phone; there will be some better way to put this all together or maybe not, cause let’s be honest REST is EASY!

So click the Execute button and we get a nice JSON result returned.

JavaScript
[{"id":1,"ToDoText":"Text1","ToDoId":1}]

But wait, can we get XML too? No, it does not appear so. Trying to change the Accept header to “Accept:application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8” to get XML does not work. Also, it is important to note that if the Accept header is not sent, JSON is also returned.

It is my assumption that, as you can do in ASP.NET Web API, the services are doing something like:

JavaScript
HttpConfig.Formatters.Remove(HttpConfig.Formatters.XmlFormatter);

in order to force JSON, this is a smaller payload and is the more preferred format for REST based services.

Inserting / Updating Data

Again, remember that these are simply REST based services, so you can just do the same as above and instead of calling with a GET, do it with a PUT (405 Method Not Allowed) or POST and pass a payload of type ToDoItem. Here is an example of an insert.

Change the dropdown in the composer tab of Fiddler from a GET to a POST (INSERT) and in the Request Body add the following text:

JavaScript
{ "ToDoText":"Text1" , "ToDoId":2}

Click the execute button and on the left window, you should get a result of 201 and the response sends back the newly created item in JSON.

JavaScript
{"ToDoText":"Text1","ToDoId":2,"id":2}

Methods Allowed – GET, POST, DELETE

Dynamic Tables

So what’s really behind this? Is it SQL Server, a flavor of NoSQL running inside SQL? Is this table storage with some magic? Let’s call a POST method and add some new fields and see what happens here.

Here is the new JSON payload:

JavaScript
{ 
<span style="background-color: yellow;">   "ToDoText":"Text1" ,
   "ToDoId":3,</span>
   "ToDoWhen": "12/01/2012",
   "ToDoByWho" : "Shayne Boyer"
}

The highlighted rows here we already had in our table before, but I am passing in some new data fields. And it works, very cool…

image

What does a get return now that we have the new fields in one but not in the other?

image

I like it! Data Model changes, NoSQL style in Runtime. You see that we now get the fields in the previous records available to us for an update later and they are automatically set to NULL. Now one thing to note is that there is no ability to remove a field. You would most likely have to delete the table from Azure and start clean.

So there it is, if you can hit REST with any of your coding skills, you can use this. Doesn’t necessarily have to be Windows 8. It can be Windows Phone, iOS, Android or Raspberry Pi for that matter. It can even be a web page. Look forward to what more is to come from this and Azure in the future!

Let me know if you have any questions, please comment.

This article was originally posted at http://blog.tattoocoder.com/feeds/posts/default

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
United States United States
I work on Azure, ASP.NET Core content and Open Source, speak at national and community events while helping teams architect web and cloud applications.

Comments and Discussions

 
Questionazure mobile services Pin
Member 917112827-Sep-12 19:31
Member 917112827-Sep-12 19:31 
AnswerRe: azure mobile services Pin
Shayne P Boyer5-Oct-12 6:34
Shayne P Boyer5-Oct-12 6:34 
GeneralMy vote of 5 Pin
Member 16474022-Sep-12 6:26
Member 16474022-Sep-12 6:26 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.