Native App-Entwicklung: Microsoft macht Blazor mobil

Die Redmonder haben mit den Mobile Blazor Bindings eine neue Variante von ASP.NET Core Blazor vorgestellt, mit der Entwickler native Apps entwickeln können.

In Pocket speichern vorlesen Druckansicht 10 Kommentare lesen
Native App-Entwicklung: Microsoft macht Blazor mobil

(Bild: Thomas Andre Fure/Shutterstock.com)

Lesezeit: 5 Min.
Von
  • Dr. Holger Schwichtenberg
Inhaltsverzeichnis

Im Rahmen der live im Internet übertragenen Sonderausgabe der .NET Conf hat Microsoft mit den "Mobile Blazor Bindings" eine neue Variante von ASP.NET Core Blazor vorgestellt, mit der sich native Apps entwickeln lassen. Sie entstehen im Rahmen eines Open-Source-Projekts auf GitHub, mit dem Microsoft das Konzept des HTML-basierten Webentwicklungsframeworks Blazor auf die Entwicklung nativer mobiler Apps übertragen will. Diese Idee ist freilich nicht neu (vgl. React und React Native), aber ein erstes Produkt von Microsoft in diese Richtung.

Die Mobile Blazor Bindings unterstützen 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 Microsofts folgendes einfaches Beispiel mit Xamarin Forms und C#. 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 war.

<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++;
}
}

Die Integration von C# in eine Markup-Sprache nennt Microsoft "Razor". Razor wurde 2010 als Template-Sprache für ASP.NET Model View Controller (MVC) vorgestellt. Bisher war es immer an HTML gebunden, nun hat Microsoft das Vorlagenkonzept auf XAML übertragen.

Die Blazor Mobile Bindings sollen dabei nicht die bisherigen Xamarin-Produkte ersetzen, sondern ergänzen. Microsoft möchte insbesondere Webentwicklern den Weg in die Entwicklung nativer mobiler Anwendungen ebnen. Ob der Konzern damit einen Marktbedarf trifft, lässt der Blogeintrag des Herstellers 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."

Für Blazor Mobile Bindings stellt Microsoft auf NuGet.org eine Projektvorlage "Microsoft.MobileBlazorBindings.Templates" bereit. Diese müssen Entwickler derzeit über die Kommandozeile herunterladen und starten:

dotnet new -i Microsoft.MobileBlazorBindings.Templates::0.1.173-beta
dotnet new mobileblazorbindings -o NameDerApp

Danach sind 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. Wie in Xamarin üblich erzeugt die Projektvorlage der Blazor Mobile Bindings 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-Benutzeroberflächenbeschreibung und dem zugehörigen C#-Code.

Aufbau einer Blazor-basierten mobilen App

XAML verwendet(e) 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 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 .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.

Eine rudimentäre Dokumentation für die Mobile Blazor Bindings hat Microsoft bereitgestellt. In der Dokumentation findet man auch ein Architekturdiagramm:

Architektur der Mobile Blazor Bindings

(Bild: Microsoft )

Microsoft hatte Blazor im Februar 2018 vorgestellt, und zwar als WebAssembly-basiertes Framework zur Entwicklung von Single Page Applications, die auf Basis von .NET und C# im Webbrowser laufen. Mit Blazor Server ist im September 2019 im Rahmen von .NET Core 3.0 eine erste Variante erschienen. Blazor WebAssembly soll im Mai 2020 erscheinen (vgl. "Ist ASP.NET Core Blazor nun fertig oder nochnicht?").

Microsoft hatte bereits bei der offiziellen Übergabe von .NET Core 3.0 angekündigt, die Blazor-Konzepte über den Webbrowser hinaus ausdehnen zu wollen. Das wurde auf der .NET-Conf-Sonderausgabe mit dem Schaubild nochmals bekräftigt.

Microsoft Pläne für die Blazor-Produktfamilie

(Bild: Microsoft .NET Conf )

Neben den jetzt angekündigten Blazor Mobile Bindings gibt es bereits seit einigen Monaten zwei Projekte für hybride Cross-Platform-Anwendungen auf Basis von Blazor Electron oder Blazor WebWindow. Beide sind genau wie die Blazor Mobile Bindings vorerst im Status "experimentell". Microsoft bekräftigte aber, dass man im Rahmen von .NET 5.0 im November dieses Jahres einiges davon liefern will.

Den direkten Einstieg zu den Bindings gibt es auf GitHub. (ane)