Ich erstelle eine neue Business-Webanwendung und möchte Folgendes erreichen:
- Verwenden Sie die besten Technologien aus ihren jeweiligen Bereichen. Ich möchte ein zuverlässiges Backend-Framework mit solidem ORM. Und ich möchte das fortschrittlichste SPA-Framework (Single Page Application) mit den aktuellsten HTML- und Javascript-Funktionen für die Frontend-Anwendung
- Bereitstellen von Back-End-Entitäten und Business-Services für die Verwendung aus verschiedenen Arten von Anwendungen - z. B. Webanwendungen, Mobilgeräten (Android) und möglicherweise anderen Typen (Smart Devices usw.)
Um beide Anforderungen zu erfüllen, bin ich geneigt, meine Anwendung in Backend- und Frontend-Anwendungen vollständig zu trennen und die Kommunikation zwischen ihnen mithilfe der REST-API (JSON) zu organisieren. Ist das ein vernünftiger Ansatz?
Eine solche Trennung ist keine offensichtliche Designlösung, da viele Webanwendungstechnologien integrierte Ansichtsebenen haben, in denen die serverseitige Anwendung die Generierung der Ansicht mehr oder weniger steuert und die Antworten aus der Ansicht teilweise verarbeitet (z. B. SpringMVC mit Ansichtsebene, PHP Yii mit Ansicht) Java JSF / Facelets speichert den Status ihrer Komponenten vollständig auf dem Server. Es gibt also viele Technologien, die eine stärkere Kopplung vorschlagen und eine schnellere Entwicklungszeit und einen gleichmäßigeren Pfadverlauf versprechen. Also - ich muss vorsichtig sein, wenn ich anfange, Technologien in einer Weise einzusetzen, die nicht weit verbreitet ist.
Soweit ich weiß, ergibt sich dann ein vollständig getrenntes SPA-Frontend normalerweise aus der Notwendigkeit, eine Drittanbieter-API zu verwenden. Aber ist ein solches Sounddesign entkoppelnd, wenn sowohl das Backend als auch das Frontend von einer Firma entwickelt werden?
Meine Wahl der Technologien ist derzeit Java / Spring-Backend und Angular2 / Web Components / Polymer für Frontend - wenn ich das sagen darf. Aber das ist für diese Frage irrelevant, weil es sich bei dieser Frage um allgemeine Gestaltung und nicht um die Wahl konkreter Technologien handelt?
So - I must be cautious when starting to use technologies in manner which is not widely used.
Ja, Sie müssen vorsichtig sein, wenn Sie vorhaben, Seide mit einem Hammer zu pechen. Vielleicht ist es nicht das richtige Werkzeug.Antworten:
Ja es ist normal Dies ist jedoch nur dann normal, wenn Sie diese Art der Trennung benötigen und dieses Setup nicht in Ihrer gesamten Anwendung erzwingen.
Ein SPA bringt einige Probleme mit sich. Hier sind nur einige, die mir gerade in den Sinn kommen:
Natürlich gibt es auch SPA-Vorteile:
Die Sache ist also, dass beide Ansätze Vor- und Nachteile haben (SPA vs. Serverseiten). Nehmen Sie sich etwas Zeit, um beide Optionen zu untersuchen, und wählen Sie sie dann entsprechend Ihrer Situation aus.
quelle
Die Antwort auf Ihre Frage ist einfach. Ja. Was Sie vorschlagen, ist ein vernünftiger Ansatz. Aber ich denke, Sie möchten fragen, ob es ein besserer Ansatz ist, und leider kann keiner von uns dies für Sie beantworten. Die Faktoren umfassen zu viele Facetten, ohne dass sowohl Ihre Organisation als auch die Produktanforderungen offengelegt werden und keine wirklichen Schlussfolgerungen gezogen werden können. Ich denke du weißt sowieso schon was zu tun ist.
quelle
Normal mit Vorbehalten.
Front-End-Javascript-Frameworks sind in ihren Möglichkeiten begrenzt. Wenn Sie RAW-APIs für die Verwendung durch mehrere Anwendungen erstellen, müssen die RAW-API-Aufrufe in der Regel serverseitig verarbeitet werden, um Modelle anzuzeigen, die mit dieser bestimmten Anwendung funktionieren.
Daher könnte eine "normale" Architektur sein:
Wenn Sie nur eine Webanwendung haben, können Sie die Ebene "API Exposing Business Logic" ausschneiden und den serverseitigen Webcode die Geschäftslogik direkt aufrufen lassen.
Da Sie die Geschäftslogik in eine eigene Bibliothek unterteilt haben, ist sie immer noch von der Benutzeroberflächenlogik entkoppelt, und Sie können später jederzeit eine Serviceebene hinzufügen.
In ähnlicher Weise ist die HTTP-Kommunikation nicht eingeschränkt, da der API-Dienst vom serverseitigen Code aufgerufen wird. (obwohl das jetzt so ziemlich universell ist)
Wenn Sie das Javascript haben, rufen Sie denselben Host auf, von dem aus es bedient wird, und Sie müssen sich nicht mit cors herumschlagen
quelle