Some of the main factors to consider include existing expertise, ease of development, code reusability and the appearance of the app on different platforms. Other things to consider are the type of applications. Games or animated interfaces may work more quickly as compiled C# code.
Coding in HTML5
He said, "The fact is, native apps, in my humble opinion, are likely to stay for a long time. They simply won't go away. However, that doesn't mean we should automatically write native apps."
The hybrid approach
Even though native can be faster than HTML5, in many cases it is not particularly important. It does not matter so much for simple user interface (UI) graphics, but it is more important for crunching data and updating graphics, said Chirag Mehta, founder of ZetaBee (a collection of Web apps) and Chime.TV. In many cases, it is possible to code the main application in HTML5 and then call specialized graphics or number-crunching code via a plug-in.
Mehta argues that developers can make application more portable using a hybrid approach by coding the core functionality of a native app in C and the UI in HTML5. However, this approach could face challenges if the app relies on special hardware functionality like camera and GPS.
When developers do decide to go native, it is important to keep in mind that native Windows 8 applications don't always work seamlessly across different hardware. Dmitry Kirsanov, a professional software developer and trainer for Microsoft system, said the core Windows 8 kernel works on servers, workstations, tablets and phones, but it is not possible to build applications that work on each without changes. One particular challenge is that mobile devices are limited in resources, which can lead to potential system bottlenecks.
The language used to code native components can also impact the footprint of the application. Creating new WinRT components requires the use of C#, VB.Net, or C and C++. Kirsanov said that writing the libraries in .NET will cause the CoreCLR libraries to be loaded with the application. Use C++ when there is a need to keep the application footprint down.
For three-dimensional games, Kirsanov recommends using C++ for its performance and relatively lower overhead.
Regardless of the approach an organization decides to take, Kirsanov recommends consistency. Switching is never good in a project and can cause development performance to suffer. If you are developing a website in WPF or ASP.NET MVC, use XAML for Metro app. If, on the other hand, you are developing an ASP.Net Forms for a website, then use HTML5 for Metro.
The cross-platform choice
This was first published in April 2013