Haben Sie darüber nachgedacht, in Java einen Soap / Rest-Server einzurichten und mit PHP darüber zu sprechen? Ich denke, das wäre viel einfacher als das, was Sie erreichen wollen.
Es gibt bereits ein paar Beiträge zur SO-Diskussion, ob diese Architektur eine gute Idee oder eine schlechte Idee ist. Aus vielen Gründen innerhalb unseres Unternehmens, einschließlich der vorhandenen Programmierkenntnisse, haben wir uns entschieden, Java für das Backend und PHP für das Frontend zu verwenden. Unser Ziel ist etwas wie ...
Java - Modelle / Controller
PHP - Ansichten
Wir arbeiten daran, einen Prototyp der Interaktion zwischen Glassfish und Apache zu erstellen. Eine Sache, an der wir noch arbeiten, ist, wenn ein Benutzer Ссылка besucht und sich anmeldet, wird dieser Login an den Glassfish-Controller gesendet, der existiert irgendwo wie /login.java
. Wir können das kein Problem machen, das Problem besteht darin, dass die Ansicht unter dieser URL gerendert wird.
Hat jemand das mit PHP oder anderen Technologien gemacht?
Es tut mir leid, das hier zu erwähnen, aber es scheint, als würde es die Dinge viel einfacher machen, nur mit einer dieser Sprachen zu bleiben. Wenn Sie PHP verwenden, um Ihrer Ansicht mehr Logik hinzuzufügen, lohnt sich ein Blick auf Geschwindigkeit . Es ermöglicht Ihnen, auf Variablen zuzugreifen und sie zu erstellen, Listen zu durchlaufen, Konditionale zu verwenden, Makros zu definieren, Methodenaufrufe aufzurufen usw. Dies scheint die Dinge viel sauberer zu machen. Es ist jedoch normalerweise eine gute Idee zu versuchen, so viel Logik wie möglich aus Ihren Vorlagen herauszuhalten.
Wenn Sie PHP verwenden möchten, weil das erforderlich ist, würde ich vorschlagen, einen Blick auf die Verwendung von Webdiensten zu werfen, um zu kommunizieren. Sehen Sie sich die Google GSON Bibliothek an. Es ist wirklich nettes Werkzeug (auf der Java-Seite) für die Zuordnung von JSON-Objekten zu Ihrem Modell (und umgekehrt).
In Ihrem Front-End könnte es sich auch lohnen, einen Blick auf Backbone zu werfen. Es ist ein Werkzeug, das es einfach macht, Ihre Modellobjekte zu modellieren und Ereignisse an sie zu binden oder sie direkt an Felder usw. anzubinden.
Haben Sie darüber nachgedacht, in Java einen Soap / Rest-Server einzurichten und mit PHP darüber zu sprechen? Ich denke, das wäre viel einfacher als das, was Sie erreichen wollen.
Ich habe Erfahrungen aus erster Hand bei zwei Unternehmen gesammelt, die den Java Service Layer und den PHP Client Layer-Technologie-Stack verwenden, obwohl er nicht ausschließlich verwendet wurde. Um die Schichten klar zu trennen, wurde eine wohldefinierte JSON-REST-API erstellt, so dass jede Schicht einen Vertrag hatte, zu dem sie kodieren konnte.
Die Java-Ebene, die SpringMVC zwischen der Persistenzschicht verwendet wird, um JSON-Ansichten mit wohldefinierten Routen zu erzeugen (dh URL-Struktur), damit die PHP-Ebene %code% resources erreichen kann.
Was das Problem login betrifft, gab es eigentlich zwei Java-Dienste, einen speziell für den Login / Logout und den anderen für das reguläre Backend.
Beim Besuch von %code% wäre das eine %code% Datei. Eine Übermittlung des Logins %code% an den "Login" -Service führte zum Hinzufügen eines Session-Cookies, aber auch zu einem verschlüsselten "User-ID" -Cookie. Der verschlüsselte Cookie könnte dann verwendet werden, um den Zugriff auf die Java-Service-Schicht für das Produkt zu schützen. Jeder REST-Request von PHP nach Java hätte Zugriff auf den Cookie, und der Java-Layer könnte dann die "Benutzer-ID" entschlüsseln und auf den PHP-REST-Aufruf antworten, wenn er gültig wäre. Die Java-Schicht hätte dann Zugriff auf die reale Benutzer-ID, um benutzerspezifische Daten aus dem persistenten Speicher zurückgeben zu können.
Es gibt bereits ein paar Beiträge zur SO-Diskussion, ob diese Architektur eine gute Idee oder eine schlechte Idee ist. Aus vielen Gründen innerhalb unseres Unternehmens, einschließlich der vorhandenen Programmierkenntnisse, haben wir uns entschieden, Java für das Backend und PHP für das Frontend zu verwenden. Unser Ziel ist etwas wie ...
Java - Modelle / Controller
PHP - Ansichten
Wir arbeiten daran, einen Prototyp der Interaktion zwischen Glassfish und Apache zu erstellen. Eine Sache, an der wir noch arbeiten, ist, wenn ein Benutzer Ссылка besucht und sich anmeldet, wird dieser Login an den Glassfish-Controller gesendet, der existiert irgendwo wie %code% . Wir können das kein Problem machen, das Problem besteht darin, dass die Ansicht unter dieser URL gerendert wird.
Hat jemand das mit PHP oder anderen Technologien gemacht?
Es tut mir leid, das hier zu erwähnen, aber es scheint, als würde es die Dinge viel einfacher machen, nur mit einer dieser Sprachen zu bleiben. Wenn Sie PHP verwenden, um Ihrer Ansicht mehr Logik hinzuzufügen, lohnt sich ein Blick auf Geschwindigkeit . Es ermöglicht Ihnen, auf Variablen zuzugreifen und sie zu erstellen, Listen zu durchlaufen, Konditionale zu verwenden, Makros zu definieren, Methodenaufrufe aufzurufen usw. Dies scheint die Dinge viel sauberer zu machen. Es ist jedoch normalerweise eine gute Idee zu versuchen, so viel Logik wie möglich aus Ihren Vorlagen herauszuhalten.
Wenn Sie PHP verwenden möchten, weil das erforderlich ist, würde ich vorschlagen, einen Blick auf die Verwendung von Webdiensten zu werfen, um zu kommunizieren. Sehen Sie sich die Google GSON Bibliothek an. Es ist wirklich nettes Werkzeug (auf der Java-Seite) für die Zuordnung von JSON-Objekten zu Ihrem Modell (und umgekehrt).
In Ihrem Front-End könnte es sich auch lohnen, einen Blick auf Backbone zu werfen. Es ist ein Werkzeug, das es einfach macht, Ihre Modellobjekte zu modellieren und Ereignisse an sie zu binden oder sie direkt an Felder usw. anzubinden.
Ich habe Erfahrungen aus erster Hand bei zwei Unternehmen gesammelt, die den Java Service Layer und den PHP Client Layer-Technologie-Stack verwenden, obwohl er nicht ausschließlich verwendet wurde. Um die Schichten klar zu trennen, wurde eine wohldefinierte JSON-REST-API erstellt, so dass jede Schicht einen Vertrag hatte, zu dem sie kodieren konnte.
Die Java-Ebene, die SpringMVC zwischen der Persistenzschicht verwendet wird, um JSON-Ansichten mit wohldefinierten Routen zu erzeugen (dh URL-Struktur), damit die PHP-Ebene GET/PUT/POST/DELETE
resources erreichen kann.
Was das Problem login betrifft, gab es eigentlich zwei Java-Dienste, einen speziell für den Login / Logout und den anderen für das reguläre Backend.
Beim Besuch von /login
wäre das eine .php
Datei. Eine Übermittlung des Logins <form>
an den "Login" -Service führte zum Hinzufügen eines Session-Cookies, aber auch zu einem verschlüsselten "User-ID" -Cookie. Der verschlüsselte Cookie könnte dann verwendet werden, um den Zugriff auf die Java-Service-Schicht für das Produkt zu schützen. Jeder REST-Request von PHP nach Java hätte Zugriff auf den Cookie, und der Java-Layer könnte dann die "Benutzer-ID" entschlüsseln und auf den PHP-REST-Aufruf antworten, wenn er gültig wäre. Die Java-Schicht hätte dann Zugriff auf die reale Benutzer-ID, um benutzerspezifische Daten aus dem persistenten Speicher zurückgeben zu können.