Unternehmensanwendungsmuster mit eBook Xamarin.Forms
Architekturleitfaden für die Entwicklung anpassbarer, wartungsfähiger und testbarer Xamarin.Forms Unternehmensanwendungen
Hinweis
Dieses eBook wurde im Frühjahr 2017 veröffentlicht und wurde seitdem nicht aktualisiert. Es gibt viel in dem Buch, das wertvoll bleibt, aber einige der Materialien sind veraltet.
Dieses eBook enthält Anleitungen zum Implementieren des Model-View-ViewModel (MVVM)-Musters, der Abhängigkeitseinfügung, der Navigation, der Validierung und der Konfigurationsverwaltung, während die lose Kopplung beibehalten wird. 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 der Zweck und der Umfang des Leitfadens erläutert und wer darauf abzielt.
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-View-ViewModel (MVVM)-Muster hilft dabei, die Geschäfts- und Präsentationslogik einer Anwendung von der Benutzeroberfläche (UI) sauber zu trennen. Die Aufrechterhaltung einer sauberen Trennung zwischen Anwendungslogik und Benutzeroberfläche trägt dazu bei, zahlreiche Entwicklungsprobleme zu beheben und eine Anwendung einfacher zu testen, zu verwalten und zu entwickeln. Es kann auch die Wiederverwendungsmöglichkeiten von Code erheblich verbessern und Entwicklern und UI-Designern ermöglichen, bei der Entwicklung ihrer jeweiligen Teile einer App einfacher zusammenzuarbeiten.
Dependency Injection
Die Abhängigkeitseinfügung ermöglicht die Entkoppelung konkreter Typen aus dem 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 Erstellung von Objekten 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 Veröffentlichungsabonnent-Muster, sodass nachrichtenbasierte Kommunikation zwischen Komponenten, die unannehlich sind, um eine Verknüpfung nach Objekt- und Typverweise zu ermöglichen. 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 in der Regel aus der Interaktion des Benutzers mit der Benutzeroberfläche oder aus der App selbst resultiert, aufgrund von internen logikgesteuerten Zustandsänderungen. Allerdings kann die Navigation in Anwendungen, die das MVVM-Muster verwenden, kompliziert zu implementieren sein.
In diesem Kapitel wird eine NavigationService
Klasse dargestellt, die zum Ausführen der Ansichtsmodell-ersten Navigation aus Ansichtsmodellen verwendet wird. Das Platzieren von Navigationslogik in Ansichtsmodellklassen bedeutet, dass die Logik über 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.
Prü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 ein Angreifer schädliche Daten eingibt.
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 Hauptvorteile von Microservices besteht darin, dass sie unabhängig voneinander skaliert werden können, was bedeutet, dass ein bestimmter Funktionsbereich skaliert werden kann, der mehr Verarbeitungsleistung oder Netzwerkbandbreite erfordert, um den Bedarf zu unterstützen, ohne unnötige Skalierungsbereiche der Anwendung, die keine erhöhte Nachfrage haben.
Authentifizierung und Autorisierung
Es gibt viele Ansätze zum Integrieren von Authentifizierung und Autorisierung in eine Xamarin.Forms App, die mit einer ASP.NET MVC-Webanwendung kommuniziert. Hier erfolgt die Authentifizierung und Autorisierung mit einem containerisierten Identitäts-Microservice, 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 Modell- und Ansichtsmodellklassen sind, die von bestimmten Komponententests profitieren können.
Communitywebsite
Dieses Projekt verfügt über eine Communitywebsite, auf der Sie Fragen posten und Feedback geben können. Die Communitywebsite befindet sich auf GitHub. Alternativ können Sie Feedback zum E-Book per E-Mail senden.dotnet-architecture-ebooks-feedback@service.microsoft.com