Native apps live on the device and are accessed through icons on the device home screen. Native apps are installed through an application store (such as Google Play or Apple’s App Store). They are developed specifically for one platform, and can take full advantage of all the device features — they can use the camera, the GPS, the accelerometer, the compass, the list of contacts, and so on. They can also incorporate gestures (either standard operating-system gestures or new, app-defined gestures). And native apps can use the device’s notification system and can work offline.
Mobile Web Apps
Web apps are not real applications; they are really websites that, in many ways, look and feel like native applications, but are not implemented as such. They are run by a browser and typically written in HTML5. Users first access them as they would access any web page: they navigate to a special URL and then have the option of “installing” them on their home screen by creating a bookmark to that page.
Web apps became really popular when HTML5 came around and people realized that they can obtain native-like functionality in the browser. Today, as more and more sites use HTML5, the distinction between web apps and regular web pages has become blurry.
In 2011 Financial Times withdrew its native app from Apple’s App Store to circumvent subscription fees and maintain closer connection with their subscribers. Instead, it came out with an iPhone web app (app.ft.com)
Mono a valid business strategy for .NET-applications?
A very common counter-argument is that "If we ever want to run on Linux/OS X/Whatever, we'll just run Mono",
which is a very compelling argument on the surface, but I don't agree for several reasons.
"OpenJDK and all the vendor supplied JVM's have passed the official Sun TCK ensuring things work correctly.
I am not aware of Mono passing a Microsoft TCK.
Mono trails the .NET releases. What .NET-level is currently fully supported?
Does all GUI elements (WinForms?) work correctly in Mono?
Businesses may not want to depend on Open Source frameworks as the official plan B."
Firstly each application should be regarded as a project. For the idea of running on all devices does not fit the whole situation.
If you're launching a Dashboard App for the board, which mostly uses only Iphone phones, it makes more sense for you to explore Apple's
features than trying to fit the app on all versions of Android 2.x. And Windows Phone.
Now if you are launching an App from the Quality Card for Contract Officials, it makes sense to develop for Android App 3x (top) and
Iphone. Always research the population you want to reach.
An application that will be for the 3 platforms has the product characteristic. It can happen, but we see with few features well tested,
and with hardly any hardware features present.
Simpler applications can be easily generated with project templates.
MVC - Model View Controller
It is the template that is used on the Web and can be used with Xamarin and C #. This architecture
model is made entirely by the developer with the help of MonoCross libraries.
Discontinued in 2013, we do not want to follow the same example.
MVVM - Model View View-Model
It is a MVC specialization with a layer that takes care of what can be abstracted and with the automatic
binding of the model with the view. It is the same architecture model that Microsoft uses in WPF - Windows
Presentation Foundation. This architecture model is made entirely by the developer with the help of libraries like MvvmCross.
Difficulty maintaining generic code that runs on all 3 platforms. The commitment to generate cross-platform code will generate great complexity in creating / maintaining solutions. Ex: You can update a feature on Android and have a bug in Iphone, Windows Phone.
There are hardware resources (camera, bluetooth, components (maps) that need to be treated in a specific way, requiring knowledge in the target language.
Difficulty in keeping up with the news on the 3 platforms, Xamarin or another cross platform tool will have the same problem. What's more, there are limitations in Mono.NET for each platform.
In Xamarin layouts need to be redone for each platform.
Developers need to be trained on Xamarin and it is difficult to find profilers on the market with this skills. Knowing .NET is just the beginning because the developer still needs to be trained in Mobile technologies.