Heim  >  Artikel  >  Backend-Entwicklung  >  Was ist der wesentliche Unterschied zwischen den Ausführungsmethoden von CGI und Servlet? Was sind die wesentlichen Unterschiede in den Prinzipien der Webentwicklung zwischen PHP und Java?

Was ist der wesentliche Unterschied zwischen den Ausführungsmethoden von CGI und Servlet? Was sind die wesentlichen Unterschiede in den Prinzipien der Webentwicklung zwischen PHP und Java?

WBOY
WBOYOriginal
2016-12-01 00:01:151836Durchsuche

Antwortinhalt:

Derzeit dürften keine Server mehr im CGI-Modus laufen. PHP ist FastCGI, was der Hauptgrund dafür ist, dass diese Vereinbarung auch heute noch fortgeführt werden kann. Servlet kann mit Pythons WSGI verglichen werden. Es handelt sich um eine Programmierschnittstelle, über die der Webserver und die Webanwendung klar getrennt werden können. Jede eingehende Anforderung ruft die Servlet-Schnittstelle einmal auf, sodass die Webanwendung keine Bedenken haben muss die technischen Details, z. B. ob der Webserver Multithreading, Multiprozess oder Multiplexing verwendet, aber nur diese Schnittstelle implementieren muss. Da es sich um eine Programmierschnittstelle handelt, muss sie mit der Programmiersprache verbunden sein. Servlet kann nur in Java verwendet werden. Andere Sprachen können nicht mit Servlet programmiert werden (es sei denn, es gibt eine Möglichkeit, mit Java kompatibel zu sein). ein Netzwerkprotokoll, es funktioniert auf Sockets und hat nichts mit der Sprache zu tun. In der Vergangenheit hat CGI bei jeder eingehenden Anfrage im Allgemeinen einen Prozess vom Server abgezweigt. Diese Anfrage wurde erst verarbeitet und beendet, nachdem die Verarbeitung abgeschlossen war. Der Verarbeitungsprozess bestand darin, den HTTP-Header aus der Umgebungsvariablen abzurufen und den POST daraus zu lesen Standardeingabe. Daten, Ausgabe der HTTP-Antwort von der Standardausgabe. Aufgrund der Notwendigkeit, Prozesse ständig zu erstellen und zu zerstören, ist die Leistung dieser Implementierung relativ gering und auch ihre Funktionen unterliegen vielen Einschränkungen. FastCGI ist eine Verbesserung von CGI. Es akzeptiert mehrere aufeinanderfolgende Anfragen über eine einzelne Verbindung und verarbeitet sie einzeln, wodurch der Durchsatz verbessert wird. FastCGI hat wie CGI nichts mit Sprache zu tun, solange es dem FastCGI-Protokoll folgt. Normalerweise kann jedoch jeweils nur eine Anfrage verarbeitet werden. Es muss also ein gewisser Grad an Parallelität erreicht werden (FastCGI hat auch die Multiplexing-Funktion, aber ich weiß nicht, wie gut sie unterstützt wird)

Aber tatsächlich aus der Sicht des Webs Bei Anwendungen ist der Unterschied zwischen den beiden nicht groß. Obwohl PHP FastCGI verwendet, wird es auch einmal pro Anfrage aufgerufen. Obwohl viele PHP-Programmierer gerne Webseiten und Code vermischen, um die Wartung zu erschweren, unterstützt PHP auch die Verwendung von OOP und unterstützt mit MVC wie Java auch Vorlagen wie JSP, die Code einbetten können. Es gibt einige Unterschiede: Java arbeitet beispielsweise im selben Prozess, kann globale Objekte aufrufen, kann zusätzliche Thread-Pools verwenden usw., während der Lebenszyklus von PHP-Objekten grundsätzlich auf den Umfang einer einzelnen Anfrage beschränkt ist, aber viele Dinge sind immer noch ähnlich, sind alle anforderungsorientierte Programmierung. Um den Unterschied zu erkennen, beginnen Sie mit dem einfachen Servercode
Sehen Sie sich den in Python integrierten CGIHTTPServer an
Der Hauptcode lautet wie folgt: Verzweigen Sie den Prozess und führen Sie dann das CGI-Programm aus. untergeordnete Beziehung zum Serverprozess

Servlet schaut auf Spring+Steg, Was ist der wesentliche Unterschied zwischen den Ausführungsmethoden von CGI und Servlet? Was sind die wesentlichen Unterschiede in den Prinzipien der Webentwicklung zwischen PHP und Java?
App-Code Im selben Prozess wie der Server
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn