You’re planning a new system, and already decided that you want the data to be hosted on the cloud.
Now, should you use web-services? REST (using WEB-API for example)? maybe Windows Azure Mobile Services?
Let’s see the differences between these technologies, but first- a short overview:
The old and well-established type of remote operation mechanism, allowing you to expose your server application’s abilities and services using SOAP-XML contracts that can later be consumed by every client app capable of encoding and decoding XML messages.
This mechanism is platform-independent, and if you stick to basic SOAP-XML structures you can have clients running Microsoft operating-systems, Apple’s, Android or anything else working against your server application, having SOAP-XML as the lowest-common-denominator and the language spoken between your server application and the clients.
XML Web-Services may (and usually will) also supply metadata (WSDL/UDDI) that allows clients to work with your application server without any previous knowledge or information about the server application’s API structure or technology, and may also adapt to API format changes quite easily.
This type of services are cross-platform, self-explanatory, mobilizes well structured data and supports additional communication layers such as WS-Security or WS-Addressing.
“REST” (stands for “representational state transfer”) uses a much simpler approach than XML Web-Services.
While XML Web-Services rely on HTTP or other types of transport layers to send and receive XML messages to and from the server, REST goes back to the source and uses the HTTP command verbs themselves to perform operations and transfer information to and from your application server.
This protocol is much looser than XML Web-Services and will attempt to deduce what operation to perform and how to use the transferred parameters from the HTTP VERB and URI used.
The actual data can be transferred in any format, such as XML or JSON and is not bound to comply with any type of pre-defined protocol.
REST is light-weight, portable and easy to consume by HTTP enabled clients. You can have your service up and running in practically no-time.
On the other hand, though these services may also be self-explanatory (using “WADL”), REST might be less suitable if you require a more strict service API approach, defining exactly what operations to perform and the data to be transferred.
Also, additional communication layers are not supported, beyond HTTP and HTTPS.
Both XML Web-Services and REST services can be hosted on Windows Azure quite easily, and can both be accessed by mobile clients.
Azure Mobile Services:
Windows Azure Mobile Services is a set of Windows Azure services exposed as a pre-defined set of WEB-API hosted REST services designed to be consumed by mobile clients.
When creating mobile services, you can use the Windows Azure wizards to also create Windows 8, Windows Phone 8, Android or iOS client apps, already set-up to connect to your service using dedicated libraries for each platform.
The server is created for you, pre-defined to manage data on the cloud, manage users and authentication, schedule maintenance scripts and custom logic and integrate push notifications.
Azure Mobile Services biggest advantage is that it takes most of the common aspects of the design, coding and testing of the application server and mobile clients off your hands and allows you to focus on the custom features only.
“So, what should I use?”
Well, if you’re application server is intended to serve older/existing XML web-service clients, XML web-services are your only hope, though you might want to consider adding a REST interface to your application server as well.
But, if you are planning an application server that is intended to serve mobile clients, there’s no reason for you to re-invent the wheel when Windows Azure Mobile Services can have you kick-started very quickly with many aspects of the application server.
Moreover, whenever you are required to create the complete solution you can use the Windows Azure wizards to have your client apps already created (for all supported platforms) and set-up to use your application server.
As these services are exposed using REST, you can also have your application server accessible for other types of clients, just like any other REST application server, consulting the Windows Azure Mobile Services REST API Reference.
Have you ever tried to run/debug your Windows Phone 8 apps when using Hotel mode Wi-Fi?
Hotel-mode Wi-Fi are guest access Wi-Fi routers that do not require a password to connect, but rather the first time you attempt to open a web-site you are routed to a login form, where you’re prompted with either a confirmation page or a user-id/password page.
So, where’s the problem?
You have your Visual Studio 2012 open, you already connected to the Hotel-mode router and made sure to open a page (google.com/microsoft.com/whatever) in order to go through the intermediate page and get internet connected.
Now, you launch your app, causing the emulator to load (takes about forever…) and the app to run just to find out that your app cannot connect to the internet!…
Checking again, you discover that your computer somehow reset the connection with the router and you have to go through that login page again. But, that’s not enough, as the connection will keep resetting every few seconds, making it almost impossible for you to run and debug your app, assuming it requires internet connection.
So what can you do if you just have to debug or demo your app from the emulator on such a network, assuming you do not have a
After many tries (and failures), I found only two possible solutions:
The first is to use your phone’s mobile data and tether the internet connection through Wi-Fi to your computer. But, mobile data doesn’t come cheap and you would rather use that complimentary Wi-Fi for your tests.
The solution I found was to run a USB tethering app on my Android phone, have the phone connect to the Hotel-mode Wi-Fi and tether the connection to the computer using cable.
That way, the connection is not being reset when using the emulator and you can run/debug your Windows Phone 8 app.
Thanks to everyone who attended my “Azure as the backbone” web-api based talk today @DevTeachConfere in Montreal.
Demo code can be found on my sky-drive here.
See how easy it is to create a web-api based app using the Visual Studio 2012 wizard, deploy it to Azure and then create Windows 8 and Windows Phone 8 apps that uses the service from within Azure.
Going through these examples you’ll see that there was very little code required in order to get these Windows 8/Windows Phone 8 apps connected to the web-api based Azure app.
Please note that the web-api MVC 4 project uses a bunch of NuGet packages, automatically installed by the wizard within my project.
Write me or comment for questions!
Thanks to everybody who attended my session about practical kinect at the Dev-Teach conference (@devteachconfere) today, to hear about the Kinect SDK, the different types of interactions and the way to implement them in Windows.
The demo code can be downloaded from my SkyDrive: here
The demo code includes two solutions:
KinectPointers: demonstrating how to react to hand movement by moving the mouse and generating a mouse click upon a 1 second hover at a certain position
KinectWPFDemo: demonstrating how to create a media-player that uses postures to play, pause, fast-forward, rewind and alter the playback volume.
I’d love to hear your suggestions for practicle apps using the Kinect SDK!
Microsoft Kinect SDK is claimed to work under Windows 8.
Well, before you run-off starting to develop your next Kinect multi-touch experience for the Windows 8 UI, it is important that you know that there are limitations to that.
Although using the latest Kinect SDK driver, released October 2012, you can develop and run apps under the Windows 8 operating system, it only works for developing traditional desktop apps, meaning what you would call “Windows 7 apps” and not what is called: “Windows Store apps”, also formerly known as “Metro-style apps”.
The Kinect libraries are not compatible with Windows Store apps and therefore you cannot add a reference to a legacy library that works against the Kinect SDK. Visual Studio 2012 prompts you with an error message saying: “Unable to add reference”.
I’m currently working on a work-around that may enable a small portion of the Kinect features in Windows Store apps and will surely update when I come-up with something.
Latest Kinect SDK information and download to be found here: http://www.microsoft.com/en-us/kinectforwindows/develop/new.aspx
This release puts Microsoft’s flagship cloud offering in great competition with Amazon in the IaaS market and with Google App Engine in the website market.
On the coming Sela Dev Academy I will be training a whole day tutorial in which I will present the new Azure portal and demonstrate the new features in the SDK.
Are you already using Azure? Are you developing against the SDK?
If you’re using Amazon or Google’s platforms you might want to hear this one out.
So, you’ve created an amazing new app for the Windows 8.
Everybody loves it and tell you that you should make it public and that people should pay you to use it.
But, how do you do that? It sounds complicated, isn’t it so?
It sounds like something companies does, not private people or small groups!
Well, it’s not that complicated and surely everybody can do that. It just takes some learning and a few correct steps and you’re there, at the app store, with your brand new app waiting to be downloaded and purchased!
So, to help you jump the hedge, I’ll be giving a lecture @devacademytoronto titled: “From a New Windows 8 Project to the Store“, in which I’ll show the list of actions to be taken in order to have an app in the store, explain the methods and show the pitfalls to avoid along the way.
See you there!
I’m very excited to announce the “SELA Dev Academy” conference that is going take place in Toronto on Nov 5 through 7!
The Dev Academy will host Sela’s professionals, as well as Microsoft Keynote speakers, for a one day of breakout sessions, followed by two full tutorial days.
Continuing a long lasting tradition in the SELA Group of local technological conferences, this conference, hosted by Microsoft Canada, is going to cover Client, Server, and ALM issues, such as: Windows 8, the coming Windows Phone 8, Parallel programming, Azure, WCF,Debugging, Agile and TFS, and will bring the latest news from the Microsoft front.
Registration is now open!
See you there!
Another session to prepare for the coming “DevTeach” in Montreal- “Developing Kinect interface for common tasks”
I was just scheduled to give another session at the DevTeach Conference in Montreal (Dec 10-12 2012), titled: “Not only for games! Developing Kinect interface for common tasks“.
Microsoft Kinect hardware is a fun way for playing games, but not only games.
Using the Kinect SDK for Windows allows developers to use the same hardware for enabling exciting new ways to interface with their apps, in addition to the mouse and keyboard.
In this session we will go over the different ways to interact with the user using the Kinect and demonstrate how to develop an interface that will extend an existing app to accept user commands via the Kinect.
I’m going to enjoy waving my hands up and down in front of all of these people, and for strictly professional reasons!
I’m scheduled to lecture at the DevTeach Conference in Montreal (Dec 10-12 2012), about “Using Windows Azure as the backbone for Windows 8 and Windows Phone apps using Visual Studio 2012“.
Windows 8 enables creating rich tablet and desktop apps. Windows Phone enables creating apps that go with the users wherever they go, while also extending desktop apps apps features. The glue between both apps would be the common data and services, offered by the Windows Azure being supported by both platforms. In this session we will create an Azure backbone RESTfull service-set to support both applications, as well as hold the common data. We will see how it all adds to form a complete solution.
See you there!