So what is Native?
What is it mean to create a native application?
To create a Native app, you need a great Native User Interface. There’s a reason someone bought an iOS,Android or Windows device. They like the hardware,but they also love the software. So, we want access to every single control.
And as developers, we want access to every single Native API to really set our application apart in the App store.
And then finally they had to be super performance. When u click on a button, you juz want it to react immediately. So you get access to all the Native UI, API and Performance.
So u wanna talk about cross platform. We want all 3 things. And that’s where Xamarin Comes in with our unique approach to mobile development. Enabling you to build all of your iOS,Android,Mac, and Windows applications all in C# with beautiful C# features, having access to 100% of the APIs and sharing bulk of your business logic. So your models, view models,RESTful service calls, SQL databases,things are the same.We can still craft up beautiful user interfaces for each platform and get native performance.
Now when you build out the user interface, we have two approaches. Xamarin Native, building ona Native iOS storyboard, Android-XML and XAML for any of your Windows applications. But typing in that shared C# business logic,. So that really gives you the high fidelity applications, access to every single UI components, anything that you possibly need. But if you’re building an application, you wanna go even further in shared code.
Maybe wanna share some of the UI layer but not lose that native goodness,that’s where Xamarin.Forms comes in. With a cross platform user interface abstraction, you build one XAML but you still get native controls on each platform. But it is an abstruction so it is the common controls and elements. Things that are really good like conference applications or forms over data type applications. There's tons of great applications that have been built with Xamarin.Forms today. And it just sits on top of Xamarin Native as you would expect to build of this native Applications.
Now, how does that work? Well, if you're a Windows developer, you have all of .NET available to you and for a long time, that's been restricted to just a Windows machine. So, you'd get .NET, install it, or be bundled into your application. And then, when you wanna go and develop for maybe, ASP.NET or UWP, you download an SDK and you get some great name spaces associated with that application.
Think of it exactly the same when you want to go to iOS or Android with Xamarin. You'd have all of that .NET goodness running on there with the .NET runtime optimized for iOS, but you get 100% API coverage for every single API inside iOS.
And the same for Android. You get all of the Android name spaces and all that .NET goodness right there. But we don't stop there, because what we do is we add an advanced C# features like a single weight, lambdas, events, delegates. So even though you're accessing a Native API, you're still doing it all in C# with beautiful C# features. And this enables you to build a shared business logic layer. Our average is 60 to 70% code sharing with Xamarin Native and all the way up to nearly 95% with Xamarin.Forms in that shared UI.
We still get that native performance. So what we do on iOS is we do a full ahead of time compilation. Compile your C# code down into IL, one more time into LVM bytecode and then finally send that through an LVM compiler and optimizer to get, boom, a beautiful native ARM binary. Since your users there's no difference, they just go to the app store, hit download, and boom you have a great application on your device. In fact you probably have tons of Xamarin applications already installed on your phone.
Now you can use Visual Studio either on the PC or on Mac to develop Xamarin applications, including the community edition. Everything in Xamarin is free in the community edition. Everything in Xamarin is free in the community edition. Everything in Xamarin is free in the community edition.
Everything in Xamarin is free in the community edition. So truly anything that you can do in objective-C, Swift or Java, you can do it in C# with Xamarin, inside of Visual Studio.
So we'll talk about what else I wanna do with my applications, because while it's easy to just do a file new, we know that every great application needs a great backend. And you need to handle scenarios like online offline data synchronization.
we have an amazing infrastructure for you to use, which is Azure, with hundreds of data centersMore than AWS and Google Cloud combined.where you can deploy your code into over 38 compute regions. More than AWS and Google Cloud combined.
And inside of Azure lives Azure Mobile Apps, part of App Service.
Extremely powerful
You can do almost anything your backend would ever need to do with Azure. Data storage, authentication/authorization, push notifications, custom APIs, blob storage, etc.
Flexible
Need something lightweight? Azure is there.
Need something robust and powerful? Azure is there.
C# clients
I’m a frontend developer, I care a lot about how easy this makes MY job (selfish)
Many C# clients are written by Java developers, etc.
Easy to use C# client
Abstracts away much of pain of using a RESTful API
C# Features
Async / Await / TPL
Uses C# idioms
Properties, Fluent API
Seems obvious, but not always true (first class citizen)
It works a little bit like this. You install it into your Xamarin and Windows applications an SDK that's cross platform. And there's a RESTful API that lays between your applications and your backend service codes, where it does your data connections to SQL Azure or user authentication even push notifications. But it handles all this through a seemless API and even does online offering data synchronization automatically for you storing it in a local SQL database. And you can of course leverage and deploy your backend code or wherever you want.