Nx Mustern

July 31st, 2020
by Dave

In diesem Artikel haben wir die Unterschiede, Verwendungen und Einschränkungen der Manfred Steyer und Nrwl/Nx Variationen des Shell-Bibliotheksmusters diskutiert. Wie wir sehen können, ist Feature-Shell kein Bibliotheksmuster, das für jedes Szenario sinnvoll ist. In NX 1899 änderte Siemens das einfache Muster, um mehrere Feature-Eingaben in Pattern Feature zu ermöglichen, und entfernte die anderen Barrieren für einfache Musterung, wie z. B. überlappende Instanzen, und ermöglichte es, UDFs und Feature-Gruppen mit der Simple-Methode zu modellieren. Unterstützung für symbolische Threads wurde sowohl für Pattern Feature als auch für Pattern Face hinzugefügt. Als Ergebnis der oben genannten Gespräche mit Lars Gyrup Brink Nielsen haben wir uns ein alternatives Shell-Bibliotheksmuster ausgedacht. Die Strategie besteht darin, eine Shell-Bibliothek pro Anwendung zu verwenden, die unseren gebundenen Kontext verwendet, wie in Abbildung 3 dargestellt. Auf diese Weise stellen wir sicher, dass jede Anwendung genau die Funktionen erhält, die sie benötigt, und unsere Größe des gebundenen Kontexts entspricht dem richtigen Kohäsionsgrad für die Geschäftslogik. Jetzt sind die Feature-Bibliotheken die, die über den gebundenen Kontext gemeinsam genutzt werden, wodurch die Codefreigabe maximiert wird, ohne den Zusammenhalt zu verlieren. Dieses Update von NX enthält Musterverbesserungen, um den Mustererstellungsprozess zu vereinfachen und auch die Aktualisierungs- und Erstellungszeiten von Mustern zu reduzieren. Während der Analyse der verschiedenen Anwendungsfallkombinationen für diese beiden Varianten konnten wir die Composite Shell-Bibliothek entwerfen. Dieses Schalenmuster bietet eine neue Möglichkeit, unsere Anwendungen mit einem höheren Fokus auf Flexibilität durch Zusammensetzung zu komponieren.

Bisher haben wir zwei verschiedene Shell-Bibliotheksmuster gesehen, jedes mit seinen eigenen Anwendungsfällen, Stärken und Einschränkungen. Wir müssen uns jedoch nicht niederlassen. Es ist unsere Aufgabe als Fachleute, bessere Wege zu finden, um Probleme zu lösen und die Werkzeuge an unsere Bedürfnisse anzupassen. Die Techniken reichen von der Verwendung einzelner Repositorys mit einsetzbaren Bibliotheken bis hin zu massiven Monorepos mit zusammenlebenden Anwendungen und Bibliotheken. Front-End-Projekte sind nicht ausgeschlossen und wir haben gesehen, wie es mit Mustern und Techniken wie Domain-Driven Design und Clean Architecture angewendet wurde, die wir vor Jahren nur auf der Serverseite für möglich hielten. Bauen Sie darauf auf und passen Sie es an Ihre eigenen Bedürfnisse an. Kombinieren, umbenennen und reassemblieren Sie die analysierten Shell-Bibliotheksmuster, oder erfinden Sie Ihre eigenen. Sie haben nur den Wert, den sie Ihrem Team und Ihrem Projekt bringen. In früheren Versionen unterstützte die Simple-Methode des Musterns nicht mehrere Features. Wenn mehr als ein Feature ausgewählt wurde, würde das Muster zu einem Variationsmuster werden, das dem Muster-Feature aufgrund der Komplexität des Variationsmusters Overhead hinzufügen würde, was manchmal zu einer schlechten Aktualisierungsleistung führen würde. In DDD ist die Domäne der Umfang des Geschäftsproblems, das versucht, durch Software gelöst zu werden.

Eine Diskussion über die Nützlichkeit von Muscheln mit meinem Freund Lars Gyrup Brink Nielsen ließ mich jedoch erkennen, dass die Granularität dieser Schalen gegen uns spielen kann. Im Gegensatz zur Nrwl-Definition für Feature-Shell orchestrieren Manfreds Shell-Bibliotheken nicht die gesamten Anwendungsrouten und -features. Stattdessen ordnen sie nur die Routen und Features eines einzelnen gebundenen Kontexts an. Es ist aufgabe der Anwendung, die Slices der Domäne einzuschließen, die ihren Anforderungen entsprechen. In seinem Buch erwähnt Manfred Steyer Shell in einem anderen Kontext: als Orchestrator mehrerer Mikro-Frontend-Anwendungen. Hier implementiert jede Micro-Frontend-Anwendung jeden unserer gebundenen Kontexte, anstatt sie in Bibliotheken zu isolieren. Listing 1 zeigt uns, wie die Navigation innerhalb der Buchungsanwendung konfiguriert werden würde. Aber, dies ist eine konkrete Umsetzung und wir sprachen über die Booking-Anwendung als Abstraktion der Booking-Domain. Wenn diese Routen in einer unserer Buchungsanwendungen platziert würden, müssten wir sie in den anderen duplizieren.

Posted in Uncategorised | Comments (0)

  • Letham Nights Instagram

    Instagram