Ich habe eine Anforderung von einem Client für meine PHP-Web-Anwendung zu 3-Tier. Zum Beispiel hätte ich einen Webserver auf Apache in der DMZ, aber es sollte keine DB-Verbindungen enthalten. Es sollte eine Verbindung zu einem Middle-Server herstellen, der die Geschäftsobjekte hostet, sich jedoch hinter der Firewall befindet. Dann verbinden sich diese Objekte mit meinem SQL-Cluster auf einem anderen Server.Wie mache ich eine 3-Tier mit PHP
Ich habe tatsächlich diese mit .NET getan, aber ich bin nicht sicher, wie mein Stack einrichten PHP. Ich nehme an, dass ich meine mittlere Front-Tier-Ebene die mittlere Schicht mit REST-basierten Webdiensten aufrufen könnte, wenn ich meine mittlere Schicht als zweiten Webserver erstelle, aber das scheint übermäßig komplex zu sein.
Der Hauptgrund dafür ist, erweiterte Sicherheit: wir keine Passwörter auf den DMZ ersten Tier-Webserver haben. Der zweite Grund ist die Skalierbarkeit - mehrere Server auf verschiedenen Ebenen zu haben, die die Anfragen verarbeiten können. Der letzte Grund ist für die Bereitstellung - es ist einfacher, wenn ich eine Reihe von Servern für Testzwecke offline nehmen kann, bevor sie wieder in Produktion gehen.
Gibt es ein Open-Source-Projekt, das zeigt, wie das geht? Das einzige Beispiel, das ich finden kann, ist der Webserver, der Dateien von einem freigegebenen Laufwerk auf einem anderen Rechner hostet (so wie DotNetNuke vorgibt, 3-stufig zu sein), aber das ist NICHT sicher.
Anmerkung: Ich habe in SO für diese Antwort sah, und ich habe eine Menge von ähnlichen Fragen sehen, haben aber nicht, dass jemand, der tatsächlich beantwortet gefunden. Dies ist NICHT eine Datenzugriffsschicht (obwohl ich sie verwenden werde) - meine primäre Frage ist das Design zwischen UI und Middle Tier.
Große Antwort und Gegenargument. Schön. – Chris
Ich weiß, dass dies eine komplexere Architektur ist, aber es machte Sinn, wenn ich es in .NET gemacht habe :) – Ric
Wie würden meine PHP-Skripte auf dem Webserver mit dem FastCGI auf der zweiten Ebene kommunizieren? Und wie würde mein PHP DAL-Objekt auf dem MiddleTier FastCGI verwenden, um die DB aufzurufen? – Ric