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.Mobile
BlazorBindings.
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.Mobile
BlazorBindings.
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")"
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".