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 Marktbedarf 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.LightBlue">

<StackLayout Orientation="StackOrientation.Horizontal" HorizontalOptions="LayoutOptions.Center">

<Button Text="Increment" OnClick="@IncrementCount" />

<Label Text="@("The button was clicked " + count + " times")"
FontAttributes="FontAttributes.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".