E-Book zu Mustern von Unternehmensanwendungen mithilfe von Xamarin.Forms
Architekturleitfaden für die Entwicklung anpassungsfähiger, verwaltbarer und testbarer Xamarin.Forms Unternehmensanwendungen
Hinweis
Dieses eBook wurde im Frühjahr 2017 veröffentlicht und wurde seitdem nicht aktualisiert. Es gibt vieles im Buch, das wertvoll bleibt, aber ein Teil des Materials ist veraltet.
Dieses eBook enthält Anleitungen zum Implementieren des MVVM-Musters (Model-View-ViewModel), der Abhängigkeitsinjektion, der Navigation, Der Validierung und der Konfigurationsverwaltung unter Beibehaltung einer losen Kopplung. Darüber hinaus gibt es auch Anleitungen zum Durchführen der Authentifizierung und Autorisierung mit IdentityServer, indem Sie auf Daten aus containerisierten Microservices und Komponententests zugreifen.
Einleitung
In diesem Kapitel werden Zweck und Umfang des Leitfadens erläutert und an wen er sich richtet.
Introduction (Einführung)
Entwickler von Unternehmens-Apps stehen vor verschiedenen Herausforderungen, die die Architektur der App während der Entwicklung verändern können. Daher ist es wichtig, eine App so zu entwickeln, dass sie im Laufe der Zeit geändert oder erweitert werden kann. Das Entwerfen für eine solche Anpassungsfähigkeit kann schwierig sein, bedeutet aber in der Regel, dass eine App in einzelne, lose gekoppelte Komponenten aufgeteilt wird, die sich leicht in eine App integrieren lassen.
MVVM
Das Model-ViewModel-Muster (MVVM) hilft dabei, die Geschäfts- und Präsentationslogik einer Anwendung von ihrer Benutzeroberfläche (UI) sauber zu trennen. Das Beibehalten einer sauber Trennung zwischen Anwendungslogik und Benutzeroberfläche trägt dazu bei, zahlreiche Entwicklungsprobleme zu beheben, und kann das Testen, Verwalten und Entwickeln einer Anwendung erleichtern. Es kann auch die Möglichkeiten zur Wiederverwendung von Code erheblich verbessern und ermöglicht Es Entwicklern und UI-Designern, einfacher zusammenzuarbeiten, wenn sie ihre jeweiligen Teile einer App entwickeln.
Dependency Injection
Abhängigkeitsinjektion ermöglicht die Entkopplung konkreter Typen vom Code, der von diesen Typen abhängt. Im Allgemeinen wird ein Container verwendet, der eine Liste von Registrierungen und Zuordnungen zwischen Schnittstellen und abstrakten Typen sowie die konkreten Typen enthält, die diese Typen implementieren oder erweitern.
Container mit Abhängigkeitsinjektion verringern die Kopplung zwischen Objekten, indem sie eine Möglichkeit zum Instanziieren von Klasseninstanzen bereitstellen und deren Lebensdauer basierend auf der Konfiguration des Containers verwalten. Während der Objekterstellung fügt der Container alle Abhängigkeiten ein, die das Objekt benötigt. Wenn diese Abhängigkeiten noch nicht erstellt wurden, erstellt der Container zuerst die Abhängigkeiten und löst sie auf.
Kommunikation zwischen lose gekoppelten Komponenten
Die Xamarin.FormsMessagingCenter
-Klasse implementiert das Publish-Subscribe-Muster, sodass die nachrichtenbasierte Kommunikation zwischen Komponenten, die nicht durch Objekt- und Typverweise verknüpft werden können, möglich ist. Dieser Mechanismus ermöglicht die Kommunikation zwischen Herausgebern und Abonnenten, ohne dass ein Verweis aufeinander besteht, und trägt dazu bei, die Abhängigkeiten zwischen Komponenten zu verringern. Zudem können Komponenten unabhängig voneinander entwickelt und getestet werden.
Navigation
Xamarin.Forms enthält Unterstützung für die Seitennavigation, die sich in der Regel aus der Interaktion des Benutzers mit der Benutzeroberfläche oder der App selbst aufgrund interner logikgesteuerter Zustandsänderungen ergibt. Allerdings kann die Navigation in Anwendungen, die das MVVM-Muster verwenden, kompliziert zu implementieren sein.
In diesem Kapitel wird eine NavigationService
-Klasse vorgestellt, die verwendet wird, um die Modell-First-Navigation von Ansichtsmodellen aus durchzuführen. Das Platzieren von Navigationslogik in Ansichtsmodellklassen bedeutet, dass die Logik durch automatisierte Tests ausgeübt werden kann. Darüber hinaus kann das Ansichtsmodell logik implementieren, um die Navigation zu steuern, um sicherzustellen, dass bestimmte Geschäftsregeln erzwungen werden.
Überprüfung
Jede App, die Eingaben von Benutzern akzeptiert, sollte sicherstellen, dass die Eingabe gültig ist. Ohne Validierung kann ein Benutzer Daten bereitstellen, die dazu führen, dass die App fehlschlägt. Die Überprüfung erzwingt Geschäftsregeln und verhindert, dass angreifer böswillige Daten einschleusen.
Im Kontext des MVVM-Musters (Model-View-ViewModel) ist häufig ein Ansichtsmodell oder Modell erforderlich, um die Datenvalidierung durchzuführen und alle Validierungsfehler an die Ansicht zu melden, damit der Benutzer sie korrigieren kann.
Konfigurationsverwaltung
Einstellungen ermöglichen die Trennung von Daten, die das Verhalten einer App mit Code konfigurieren, sodass das Verhalten geändert werden kann, ohne die App neu zu erstellen. App-Einstellungen sind Daten, die eine App erstellt und verwaltet, und Benutzereinstellungen sind die anpassbaren Einstellungen einer App, die sich auf das Verhalten der App auswirken und keine häufige erneute Anpassung erfordern.
Containermicroservices
Microservices bieten einen Ansatz für die Anwendungsentwicklung und -bereitstellung, der den Anforderungen an Agilität, Skalierbarkeit und Zuverlässigkeit moderner Cloudanwendungen gerecht wird. Einer der Standard Vorteile von Microservices besteht darin, dass sie unabhängig skaliert werden können, was bedeutet, dass ein bestimmter Funktionsbereich skaliert werden kann, der mehr Verarbeitungsleistung oder Netzwerkbandbreite benötigt, um die Nachfrage zu unterstützen, ohne dass Bereiche der Anwendung unnötig skaliert werden, die keine erhöhte Nachfrage aufweisen.
Authentifizierung und Autorisierung
Es gibt viele Ansätze zum Integrieren der Authentifizierung und Autorisierung in eine Xamarin.Forms App, die mit einer ASP.NET MVC-Webanwendung kommuniziert. Hier werden die Authentifizierung und Autorisierung mit einem containerisierten Identitäts-Microservice durchgeführt, der IdentityServer 4 verwendet. IdentityServer ist ein Open-Source-Framework mit OpenID Connect und OAuth 2.0 für ASP.NET Core, das mit ASP.NET Core Identity integriert werden kann, um die Bearertokenauthentifizierung durchzuführen.
Zugreifen auf Remotedaten
Zahlreiche moderne webbasierte Lösungen nutzen auf Webservern gehostete Webdienste, um Funktionen für Remoteclientanwendungen bereitzustellen. Die von einem Webdienst verfügbar gemachten Vorgänge definieren eine Web-API, und Client-Apps sollten die Web-API nutzen können, ohne Kenntnis darüber zu haben, wie die von der API offengelegten Daten oder Vorgänge implementiert sind.
Komponententests
Das Testen von Modellen und Ansichtsmodellen aus MVVM-Anwendungen ist identisch mit dem Testen anderer Klassen, und die gleichen Tools und Techniken können verwendet werden. Es gibt jedoch einige Muster, die typisch für das Modellieren und Anzeigen von Modellklassen sind, die von bestimmten Komponententestverfahren profitieren können.
Communitywebsite
Dieses Projekt verfügt über eine Communitywebsite, auf der Sie Fragen stellen und Feedback geben können. Die Communitywebsite befindet sich auf GitHub. Alternativ können Sie Feedback zum eBook per E-Mail an dotnet-architecture-ebooks-feedback@service.microsoft.comsenden.