In unserem Intranet haben wir einige End-Service-Plattformen wie BPM, Dokumenten-Management-System, etc. Diese End-Service-Dienste offenbaren REST-API. Wir entwickeln Web-Anwendungen mit AngularJS als Frontend.AngularJS: Serverseitige Architektur
Es gibt zwei Möglichkeiten, wie wir von AngualJS zu diesen Endpunktdiensten telefonieren können.
Option 1: Wenn diese Endpunktservices REST verfügbar machen, rufen Sie diese REST-API direkt aus AngualrJS auf.
Option 2: eine mittlere Schicht einführen (auf einem Anwendungsserver wie WebLogic oder Tomcat). Erstellen Sie eine Java-Anwendungsschicht, die die Endpunkt-REST-API aufruft. und hosten Sie es auf dieser millde Schicht. Das AngularJS ruft REST auf, das von dieser mittleren Schicht bereitgestellt wird; Diese mittlere Ebene ruft in den Endpunkt REST auf.
Ich persönlich bevorzuge die Option 1; aber Ich lade Ihre Openion zu diesem Thema ein. Ich habe die Vor- und Nachteile von Option 1 aufgeführt, so wie ich sie sehe.
Vorteile von Option 1:
- Bessere Leistung (Durchsatz) ein weniger Hop für HTTP-Anfragen gegeben.
- Geringere Entwicklungs-/Bereitstellungsbemühungen aufgrund einer Komponente weniger.
- Geringere Anzahl von Fehlerstellen. Wenn es ein Problem gibt, kennen wir es entweder in Angualrs oder im Endservice.
Nachteile von Option 1:
- Sicherheitsfragen? Da bin ich mir nicht sicher - möchte dazu Expertenmeinungen machen.
- CORS: die Enddienste müssen Access-Control-Allow-Origin zu den entsprechenden Domänen aktivieren.
- Schlechte Protokollierung? Wenn etwas schief geht, sind die Protokolle nur auf Benutzerrechnern (IE/Chrome-Entwicklungstool) oder im End-Service verfügbar.
- Zu viel Verarbeitung in AngualJS Schicht? Diese Verarbeitung analysiert hauptsächlich das Ergebnis des End-Service. Dies hängt auch von der Art des verwendeten Endservice ab.
Danke für die Antwort. Es macht alles Sinn. Die Anwendungen, über die ich spreche, sind jedoch nur zugänglich, wenn der Benutzer mit dem Intranet verbunden ist. Mein Hauptanliegen bei Option 2 ist, dass wir unsere eigene REST-Schicht erstellen müssen, die im Wesentlichen einfach um den Endpunkt REST "gewickelt" wird. –
Ich folge nicht der Sicherheitsfrage, die Sie erwähnen. Unsere Endpunktdienste haben die Tokens, die wir z.B. JSESSIONID, LtpaToken (für WebSphere). LtpaToken führt die Authentifizierungsdaten aus, aber selbst mit Option 2 müssen wir es an den Browser übergeben (in Form von Cookies), damit der Browser es an den Dienst zurückgibt. Entschuldigung, ich kann deine Antwort nicht abgeben, da ich dieses Recht (noch) nicht habe. Aber ich mochte deine Antwort. –
Ich denke, es könnte sich lohnen, beide Ansätze zu entwickeln, um ein "Gefühl" dafür zu bekommen, was für Sie am besten funktioniert. –