Preface
In 2017, when we hit performance issues in one of our projects using Cordova, I started to look for an alternative cross platform programming solution. Xamarin was one of the solutions that I investigated at that time. From then until now, I have spent many years on the development of Xamarin and its descendant .NET MAUI. It’s one of the technologies that I love.
Even though we have more cross platform programming options today, such as Flutter or React Native, .NET MAUI has some particularly unique features that we may consider when we are looking for a cross-platform solution.
.NET MAUI uses a single project structure, which is a major improvement compared to Xamarin.Forms. With a single project, we can see the improvement in the following areas:
- Better debug and test experience – We can select and debug multiple targets in one project. We don’t have switch to different projects to debug or test different targets.
- Sharing resources – In Xamarin, we have to manage resources in each platform individually. With the improvement of .NET MAUI, we can share most resources cross-platform, such as fonts, images, icons, and so on.
- Simplified configuration – We can use a single app manifest most of time, so we don’t need to manage platform configuration files separately, such as
AndroidManifest.xml
,Info.plist
, orPackage.appxmanifest
.
In Flutter or React Native, you can use the Flutter plugin or React Native module to access native device features. To use plugins or native modules, you have to rely on the developer community, or you have to develop your own. These interfaces are designed by developers, so they are not standardized. In .NET MAUI, Microsoft has done the job of standardizing APIs for the most frequently used native device features as part of the .NET MAUI release.
In .NET MAUI, we not only can develop apps using the traditional XAML-based UI, but we also can develop Blazor-based UIs as Blazor Hybrid apps. This opens a door for a higher-level reuse of source code. If you are working on a project that includes a web and mobile app, you can even share the user interface (UI) design and source code between the web and mobile app.
Since .NET MAUI is part of the .NET platform release now, we can always use the latest .NET platform and C# language features with each release of .NET. We can use advanced features, such as .NET generic hosting, dependency injection, or the MVVM Toolkit from the latest .NET release.
In this book, I will share my journey in .NET MAUI development with you using the open source app that I have developed. Both .NET MAUI and .NET platform features will be covered in this book.