What's it all about?
The eBook provides guidance on building cross-platform
enterprise apps using Xamarin.Forms. It focuses on providing architectural
guidance for developing adaptable, maintainable, and testable Xamarin.Forms
enterprise apps. Guidance is provided on how to implement MVVM, dependency
injection, navigation, validation, and configuration management, while
maintaining loose coupling. In addition, there's also guidance on performing
authentication and authorization with IdentityServer, accessing data from
containerized microservices, and unit testing.
The guide comes with source code for the eShopOnContainers
mobile app, and source code for the eShopOnContainers
reference app. The eShopOnContainers mobile app is a cross-platform
enterprise app developed using Xamarin.Forms, which connects to a series of
containerized microservices known as the eShopOnContainers reference app.
Who's it intended for?
The guide is aimed at readers who are already familiar with Xamarin.Forms. For a detailed introduction to Xamarin.Forms, see the Xamarin.Forms documentation on the Xamarin Developer Center, and Creating Mobile Apps with Xamarin.Forms.
The guide is complementary to .NET Microservices: Architecture for Containerized .NET Applications, which focuses on developing and deploying containerized microservices.
What's in the sample application?
The guide includes a sample application, eShopOnContainers,
that's an online store that includes the following functionality:
- Authenticating and authorizing against a backend service.
- Browsing a catalog of shirts, coffee mugs, and other marketing items.
- Filtering the catalog.
- Ordering items from the catalog.
- Viewing the user's order history.
- Configuration of settings.
The sample application ships with three client apps:
- An MVC application developed with ASP.NET Core.
- A Single Page Application (SPA) developed with Angular 2 and Typescript. This approach for web applications avoids performing a round-trip to the server with each operation.
- A mobile app developed with Xamarin.Forms, which supports iOS, Android, and the Universal Windows Platform (UWP).
The sample application includes the following backend
services:
- An identity microservice, which uses ASP.NET Core Identity and IdentityServer.
- A catalog microservice, which is a data-driven create, read, update, delete (CRUD) service that consumes an SQL Server database using EntityFramework Core.
- An ordering microservice, which is a domain-driven service that uses domain-driven design patterns.
- A basket microservice, which is a data-driven CRUD service that uses Redis Cache.
What's the mobile app?
The guide focuses
on building cross-platform enterprise apps using Xamarin.Forms, and uses the
eShopOnContainers mobile app as an example. The following screenshots show the pages from the
eShopOnContainers mobile app that provide the functionality outlined earlier:
The mobile app consumes the backend services provided by the
eShopOnContainers reference application. However, it can be configured to
consume data from mock services for those who wish to avoid deploying the
backend services.
The eShopOnContainers mobile app exercises the following
Xamarin.Forms functionality:
- XAML
- Controls
- Bindings
- Converters
- Styles
- Animations
- Commands
- Behaviors
- Triggers
- Effects
- Custom Renderers
- MessagingCenter
- Custom Controls
In addition, unit tests are
provided for some of the classes in the eShopOnContainers mobile app. For more information about this functionality, see the Xamarin.Forms
documentation on the Xamarin Developer Center, and Creating Mobile Apps with Xamarin.Forms.
Hi,
ReplyDeleteI really loved your guide!
Thank you!
I need to add the "MasterDetailPage mechanism" to a project structured like the sample app "eShopOnContainers", how can I do this?
I have tried but when I call NavigationService.NavigateToAsync(); nothing happens.
Thank you!
The NavigationService class in the app is only designed for navigating to ContentPage instances. You should take a look at Prism for a NavigationService class that works with all the different page types.
Delete