Mobile Blazor Bindings
Eintrag zuletzt aktualisiert am: 15.01.2020
Mobile Blazor Bindings ist ein
Open Source-Projekt von Microsoft auf Github [
https://github.com/xamarin/MobileBlazorBindings], mit dem Hersteller das Konzept des HTML-basierten Webentwicklungsframeworks Blazor auf die Entwicklung von nativen mobilen Apps übertragen will.
Erstankündigung: 14.1.2019
Erscheinungstermin: offen
Mobile Blazor Bindings unterstützt im ersten Schritt nur die Entwicklung von Apps für
iOS und
Android.
Die Benutzeroberflächenbeschreibung erfolgt dabei nicht wie sonst üblich in Blazor mit HTML und
CSS, sondern mit
Xamarin Forms (siehe Listing 1). Bisher war die Razor-Vorlagensyntax immer an HTML gebunden, nun hat Microsoft das Vorlagenkonzept auf
XAML übertragen.
Xamarin Forms ist ein auf der Extensible Application Markup Language (
XAML) aufbauendes plattformneutrales
GUI-Framework, das im Februar 2016 im Zuge der Übernahme der Firma Xamarin zu Microsoft gewandert ist.
Die Integration von C# in eine Markup-Sprache nennt Microsoft "Razor". Razor wurde erstmals im Jahr 2010 als Template-Sprache für ASP.NET Model View Controller (
MVC) vorgestellt [
https://weblogs.asp.net/scottgu/introducing-razor]. Bisher war Razor immer an HTML gebunden, nun hat Microsoft das Vorlagenkonzept auf
XAML übertragen.
Zielsetzung
Die Blazor Mobile Bindings sollen dabei nicht die bisherige Xamarin-Produkte ersetzen, sondern ergänzen. Microsoft möchte insbesondere Webentwicklern den Weg in die Entwicklung native mobiler Anwendungen ebnen. Ob Microsoft damit einen Ma
rktbedarf trifft, lässt der Blogeintrag des Herstellers [
https://devblogs.microsoft.com/aspnet/mobile-blazor-bindings-experiment/] selbst offen mit den Worten: "The goal of these bindings is to see if developers would like to have the option of writing markup and doing data binding for native mobile applications using the Blazor-style programming model with Razor syntax and features.".
Projekt anlegen
Für Blazor Mobile Bindings stellt Microsoft auf NuGet.org eine Projektvorlage "Microsoft.MobileBlazorBindings.Templates" [
https://www.nuget.org/packages/Microsoft.MobileBlazorBindings.Templates] bereit. Diese Projektvorlage muss derzeit über die Kommandozeile heruntergeladen und gestartet werden:
dotnet new -i Microsoft.MobileBlazorBindings.Templates::0.1.173-beta
dotnet new mobileblazorbindings -o NameDerApp
Danach ist eine Bearbeitung in
Visual Studio 2019 und der Start im Emulator möglich, sofern dort neben
.NET Core 3.0 oder 3.1 auch der Workload "Mobile development with .NET" installiert ist. Die Projektvorlage der Blazor Mobile Bindings erzeugt wie in Xamarin üblich drei Projekte: jeweils ein Anwendungsprojekt für
iOS und
Android (mit den Startklassen Main.cs bzw. MainActivity.cs) sowie ein gemeinsames Projekt mit der
XAML-basierten Benutzeroberflächenbeschreibung und dem zughörigen C#-Code.
Eine rudimentäre Dokumentation für die Mobile Blazor Bindings stellt Microsoft bereits unter [
https://docs.microsoft.com/de-de/mobile-blazor-bindings/] bereit.
Listing 1: Einfaches Beispiel in Mobile Blazor Bindings mit Xamarin Forms und C# aus der Projektvorlage von Microsoft
<Frame CornerRadius="10" BackgroundColor="Color.Light
Blue">
<StackLayout Orientation="StackOrientation.Horizontal" HorizontalOptions="LayoutOptions.Center">
<
Button Text="Increment" OnClick="@IncrementCount" />
<
Label Text="@("The button was clicked " + count + " times")"
Font
Attributes="Font
Attributes.Bold"
VerticalTextAlignment="TextAlignment.Center" />
</StackLayout>
</Frame>
@code
{
int count;
void IncrementCount()
{
count++;
}
}
Hintergründe
XAML verwendet Microsoft auch in anderen
GUI-Frameworks wie der
Windows Presentation Foundation (
WPF), der
Universal Windows Platform (
UWP) in
Windows 10 und dem längst wieder beerdigten Silverlight. Allerdings gibt es verschiedene
XAML-Dialekte. Entwickler, die hoffen, mit Mobile Blazor Bindings ihre bestehenden
WPF-Anwendungen in mobile Apps verwandeln zu können, stehen vor einem ähnlichen Migrationsaufwand wie bei der direkten Verwendung von
Xamarin Forms ohne Blazor.
Das gemeinsame Projekt basiert auf
.NET Standard 2.0 und kann daher zahlreiche bestehende .NET-Bibliotheken referenzieren. Die betriebssystemspezifischen Projekte für
iOS und
Android können per
Dependency Injection plattformspezifische Implementierungen bereitstellen, wenn es keine plattformneutrale Lösung gibt.
Weitere Blazor-Varianten
Microsoft hatte Blazor erstmal im Februar 2018 vorgestellt [
https://devblogs.microsoft.com/aspnet/blazor-experimental-project/] als Webassembly-basiertes Framework zur Entwicklung von Single-Page-Web-Applications, die auf Basis von .NET und C# im
Webbrowser laufen. Mit
Blazor Server ist im am 23.9.2019 im Rahmen von
.NET Core 3.0 eine erste Variante erschienen. Blazor Webassembly soll im Mai 2020 erstmal erscheinen (vgl. "Ist
ASP.NET Core Blazor nun fertig oder noch nicht?" [
https://www.heise.de/developer/artikel/Ist-ASP-NET-Core-Blazor-nun-fertig-oder-noch-nicht-4596274.html]).
Microsoft hatte bereits bei der offiziellen Übergabe von
.NET Core 3.0 angekündigt, in
.NET 5.0 die Blazor-Konzepte über den
Webbrowser hinaus ausdehnen zu wollen. Dies wurde auf der
.NET Conf-Sonderausgabe am 14.1.2019 nochmals bekräftigt.
Neben den jetzt angekündigten Blazor Mobile Bindings gibt es bereits seit einigen Monate zwei Projekte für Hybride
Cross-Platform-Anwendungen auf Basis von Blazor Electron [
https://aka.ms/blazorelectron] oder Blazor WebWindow [
https://aka.ms/webwindow]. Blazor Electron und Blazor WebWindow sind genau wie die Blazor Mobile Bindings vorerst im Status "experimentell".