Microsofts Xamarin Platform ermöglicht die Entwicklung von Apps für Android, iOS und Windows mit nur einem Werkzeug (Visual Studio) und einer Programmiersprache (C#). Da sich die Plattformen im Detail jedoch gehörig unterscheiden, bedeutet dies nicht, dass Sie Ihre Codebasis ohne Änderungen auf allen Plattformen nutzen können. Wie Sie trotz der Unterschiede möglichst viel Code plattformübergreifend wiederverwenden können, wird Ihnen André Krämer in diesem Vortrag zeigen. Dazu wird er die verschiedenen Optionen "Shared Projects", "Portable Class Libraries" und ".NET Standard Libraries" näher erläutern. Darüber hinaus wird er über Dependency Injection sprechen und den Xamarin Dependency Service mit leistungsstarken Inversion-of-Control- Containern wie Autofac vergleichen. Abgerundet wird der Vortrag mit einem Überblick über Xamarin.Essentials, einer Bibliothek, die plattformübergreifende Implementierungen gerätespezifischer Funktionen bietet.
4. Die Xamarin Platform ermöglicht die
Entwicklung von Apps für Android und
iOS mit der Programmiersprache C#
unter Verwendung der Klassenbibliothek
des .NET Frameworks.
5. Beteiligte Komponenten
• Portierung des Mono Frameworks für Android / iOS.
• Ein Compiler, der aus C#-Quelltext die
entsprechenden Binärdateien für Android und iOS
erzeugt.
• C#-Wrapper-Klassen um plattformspezifische APIs.
• Eine Integration verschiedener Werkzeuge in die
Entwicklungsumgebungen Visual Studio und Visual
Studio for Mac.
23. Vorteile von Shared Projects
• Einfach
• Keine speziellen Anforderungen an die
Architektur
• Fremdbibliotheken können direkt
genutzt werden
24. Nachteile von Shared Projects
• Übersichtlichkeit des Quellcodes leidet
• Nur bedingt refactoring-sicher
• Keine eigene Assembly
– Eigene Steuerelemente benötigen zur Nutzung einen Namespace
– xmlns:local=”clr-
namespace:MeineAssembly.Controls;assembly=MeinAssemblyName”
• Bei weiteren Plattformen sehr aufwändig
25. Beispiel Übersichtlichkeit
public MainPage()
{
InitializeComponent();
var text = "";
#if __ANDROID__
text = Android.OS.Build.Device;
#elif __IOS__
text = UIKit.UIDevice.CurrentDevice.Name;
#elif WINDOWS_UWP
text = new Windows.Security.
ExchangeActiveSyncProvisioning.
EasClientDeviceInformation().FriendlyName;
#endif
DeviceInfoLabel.Text = text;
}
26. “FRIENDS DON’T LET FRIENDS
USE SHARED PROJECTS.”
Jason Smith – ehem. Xamarin.Forms Lead Developer
34. .NET Standard
• Formale Spezifikation von .NET APIs
• Ähnlich wie ECMA 334/335, aber für die
.NET BCL
• Jede .NET Implementierung gibt die
höchste unterstütze .NET Standard
Version an
36. .NET Standard Bibliotheken
• Enthalten nur plattformübergreifenden
Code
• Erzeugen eine eigene Assembly
• Plattformspezifischer Code muss
injiziert werden
40. Vorteile von .NET Standard
• Klare Trennung von
plattformspezifischen und allgemeinem
Code
• Höhere Übersicht
• Höhere Wartbarkeit
• Zukunftssicher
41. Nachteile von Shared Projects
• Höherer Aufwand
• Ggfs. zusätzliche Abstraktionsschicht
• Schwerer zur verstehen falls IoC bisher
nicht bekannt war