July 20, 2012

Metro Applications - FAQ

With the advent of Microsoft Windows 8, Windows Phone 8 and Office 2013, Microsoft is now all about Metro UI and Metro Apps. And when Windows 8 will be released, everybody will be developing or talking about Metro apps. But what is a Metro app and how to build these apps? There are many questions in the mind of many developers. Let’s just find answers for few of them in this blog post.

What is a Metro style app?

As per MSDN documentation: A Metro style app is a new type of application that runs on Windows 8 devices.

Metro-UI

Metro is a design language, introduced in Windows Phone 7 and now appearing everywhere in (almost all) Microsoft products like Windows, Office, Phone, Azure, etc.… Even in early devices like Zune, this language principle was used. This language talks about content and typography or as it is said – “content before chrome”. This language and its principles helps to create ‘fast and fluid’ applications. You can find guidelines for Metro style apps here

How can I build a Metro app?

To build Metro apps you’ll need to install Windows 8, Visual Studio 2012 Express (free) or Visual Studio 2012 Ultimate edition. This will install the required SDKs and APIs to build Metro apps. Once you install VS2012, you can say File >  New > Project and you’ll see following dialog. And you can create a Metro app.

image

Do I need to pay license fee to Microsoft to build Metro apps?

No. You don’t need to pay license fee to build, install, test and run Metro apps. However, you’ll need to get a developer license – which is free and you can get them as many as you want or extend them after expiry. You don’t need Windows Store account for this matter. However there are added benefits with Store account and you’ll need it to publish your apps. You can get more information about getting developer license here.

Which .NET Framework version I can Use?

Basically, when you’re creating a Metro app, by default .NET Framework v4.5 is selected. If you select any other version, you won’t get Metro app project template. So, Metro apps rely on .NET Framework v4.5. However, internally it uses Windows Runtime (WinRT) APIs to execute your code.

Which languages/technologies can I use for building Metro Apps?

To build Metro you can use HTML5/CSS3/JavaScript combination or C++/C#/VB.NET along with XAML as per your choice of selection. XAML and HTML5/CSS3 will play the vital role in creating rich user interface (Metro UI), while C++/C#/VB.NET/JS will be used to write code-behind and do API calls. You can also use, JS libraries like jQuery if you want.

Can I combine these technologies to create a hybrid application?

No. You can’t create a C++/C#/VB.NET and XAML based Metro app and start using HTML5/CSS3 to design to UI. You can’t mix it up. However, you can create a Windows Runtime Component in C# or VB.NET and use it in JavaScript. Basically, Metro app, irrespective of language chosen, can call WinRT APIs (because of a concept called Language Projection) and when you create a Windows Runtime Component it becomes available to any of the language, just like WinRT API. 

Can I call my old .NET code or third party libraries (dlls) in Metro app?

No. Older .NET code or third party libraries are compiled against older version of .NET. Now, when Metro app is built using .NET Framework v4.5, it compiles the code for ARM based devices (or tablets) and targets WinRT APIs (not Win32 APIs). Hence, you can’t use those old dlls in your Metro app.

So, can I refer other dlls projects in Metro app?

No. You can’t refer other dll projects in your Metro style app, UNLESS, you have used Portable Class Libraries (PCL) concept to build those dlls or libraries. When you create a PCL, you can use same library within, desktop app, Metro app, Silverlight app, Windows Phone app or even XBOX 360 app.

Is is possible to build apps running in background?

Metro style apps always launch and run in full-screen, i.e. content before chrome. But it doesn’t mean if your app is not on screen (foreground), it isn’t running. You can create a Metro app and register it as a  background task. In this case, your app can run ‘behind the scene’ and then you can use toast or other types of notifications if required to notify user about behind running app’s status.

How can I test my Metro application?

One of the condition to build Metro app is to have Windows 8 running as a development environment. So, you can install, run and test your Metro app on your local machine. However, when you install VS2012, you’ll get Windows 8 Simulator installed with it. You can use this simulator to test touch gestures (tap, pinch-to-zoom, rotate), orientation changes, different resolutions, location based services apps or even take screenshots of your application.

image

One hint: Your simulator kinda RDP into your host machine :)

Apart from that, before releasing your app, you’ll need to make sure that your app will get certified through Microsoft certification process. There are few norms which your app needs to follow before it hits the client machines. This certification guarantees security, trust, validity of your application. For that reason, Microsoft has released Windows App Certification Kit, which gets installed with Windows SDK – for free. Once your app is ready, run it through App Certification Kit and once it passes all the tests, you can distribute your app. You can find more information about it here.

Okay! How can I sell or distribute my Metro app?

The Windows Store is ‘the marketplace’ for apps on Windows 8 (and may be Windows Phone). Millions of people use Windows on their machines and you get direct listing in this store, which makes selling your app much more easier. People will trust, install and buy your app as it will be ‘certified’ and made available by Microsoft itself.

What about Enterprise or LOB apps? Do I still need to go through ‘the store’?

No, you don’t need to go though the store as such. There is concept of ‘side-loading apps’, which means installing applications without going through the store and it is allowed with Windows 8. Your IT Admins can go though this article for more details.

How can I provide updates to my app? Or added features?

Metro app can have in-app purchase or shopping capabilities, rather than always going through the store. This functionality will be available once stores are open i.e. when Windows 8 will be released. Till then you can find more information here.

These are the few questions, which I can think about as of now and people have asked me. But I know, still, there will be more questions and many will arise when Windows 8 will be released or people will start building Metro apps. Sure, we can add them here in subsequent posts.

Oh. By the way, have I told you, Windows Team has announced that Windows 8 is coming on 26th Oct. 2012. :)

615371_10150990319222669_364698562_o

Till then, enjoy.

Namaste

Mayur Tendulkar | www.mayurtendulkar.com