Reputation: 11480
I am a C# developer, entrusted with a project to develop the Android native app for one of our project, whose logic engine in C# is exposed as a REST service. Current project has a Web version using Html5 and JS and desktop using WPF. We have good Html5, Angular JS developers at our disposal, now after little research to understand what I need to do to get started, following is my understanding:
Learn Java / Python
for native Android development, it has some learning curve vis a vis other options
Use frameworks like Cordova, Titanium
, which are able to convert HTML5, JS code to native Android and IOS app
Now I have come across Xamarin, which can help the C# developers to develop Android and IOS Apps, which we can adopt quickly, but I am not able to find the convincing answer to following questions, which are based on my understanding of the complexity of the project requirements, since they change over a period of time:
Any suggestion / pointer would be great, that can help us take informed decision. Do not want to proceed with a framework, without understanding a major limitation or roadblock, which can make future difficult
Upvotes: 4
Views: 2031
Reputation: 1948
One item that can be a big factor if you're a C# shop is shared code between the client and the backend, as few apps don't communicate with a server. By using Xamarin, if your backend is ASP .NET or another .NET stack you can reuse entity definitions and other code seamlessly.
It definitely takes some planning and discipline, but on the whole having compiled, strongly typed, and unit tested code on both sides has saved my team a large amount of time in the bugs that always occur when going between languages in the same project.
Upvotes: 2
Reputation: 16199
I think tools to program mobile apps are a better approach than going native in most cases. There is a reason these tools exist, otherwise native would be the easier and preferred method.
Xamarin can do anything a native app can do. Performance is the same as a native app and you may be able to get some performance improvements as mentioned by Jeff due to Xamarin implementing very performant code underneath.
However when it comes to development, I would say you should stick with technologies you know. You don't want a steep learning curve if no one there is experienced in the framework. If you have a lot of C# development experience this comes in handy with Xamarin. There is always going to be a learning curve jumping into mobile development but having a language you know well helps greatly.
In terms of Native or Forms, I mostly program in Xamarin.Forms (for over a year now) and while late last year it was a mess of a technology, I can now say that once 1.5.2 hits production it will be a great technology, though it is going to take a while to convince people of that.
Xamarin.Android and Xamarin.iOS let you create a native app but you have to do the UI for each platform. Xamarin.Forms, lets you create the UI once and shared across all platforms but it converts it into their native controls. And yes you can customize UI per platform on Forms as well if you ever needed to. Xamarin can even hook up to native libraries for each platform.
Upvotes: 3
Reputation: 12163
Xamarin is not limited to the common-denominator because it creates bindings to native code.
Regarding Android performance, I've heard that Xamarin apps actually perform better because the Mono runtime should be more mature than Dalvik, although this may just be a rumour.
Yes, Xamarin supports anything you could do on the platform's native toolchain.
With Cordova you'd only write your app once and compile it for multiple platforms. With Xamarin, you'd share as much business code as possible, and only create the UI layer for each platform, which is why you can customize it to each platform.
Upvotes: 9