The goal of this blog series is to build the basics of a quality enterprise level mobile app using Xamarin Forms. If you are new to Xamarin Forms, please have a quick look at an Overview of Xamarin Forms and try to build some sample apps first. This series is for developers who have some knowledge of Xamarin or Xamarin Forms and want to learn how to architect larger solutions.
All of the approaches here I have used in my sample application on Xarch-Starter available on GitHub and this series may reference it from time to time to provide working examples. This series is a higher level overview and won’t be too technical.
If you have any questions or wish to discuss anything, post in the Xamarin Forums and tag me in @AdamP. Email if you want to discuss in more detail about your situation that may involve non-public information. Email address is on my about page.
Keeping the code and data flows as independent as possible within the mobile app.
Use a centralized navigation service to provide the ability to control page flow.
Constructing a page and building a page should be kept to a central service.
A ViewModel is the orchestrator of navigation and communicator of data between the model and view.
Complex page workflows can become a burden unless you separate the workflows into different stacks.
Models do the work, the service layer lets you share between the models and communicate with the data layer.
In order to keep everything siloed you need a way to communicate and Messenger is just that way but it comes with its own issues to overcome.
Connect to the API to retrieve and send data.
Providing secure authentication for enterprise.
SQLite, Local Storage, External Storage, security and more.
Learn how to define styles in global and page level resources and account for platform level differences and basic UI/UX guidelines for Forms.
Account for low end and unreliable services, which are common in widespread mobile apps to consumers or BYOD in enterprise.
You need accurate, timely bug reports with a lot of useful information to debug some issues on mobile devices.
Testing the UI and unit testing the code is essential in all enterprise level apps. With the architecture setup in this project this step is rather easy.
High scalability, load balancing and multiple data centers are all considerations for high throughput API’s.