[RUBY] Was ist der Unterschied zwischen einem Webserver und einem Anwendungsserver?

Ich fragte mich: "Was ist der Unterschied zwischen einem Webserver und einem Anwendungsserver?"

Was ist ein Server?

Was ist ein Server? Die Geschichte. Der Server ist ein Server in englischer Sprache, dh er liefert und stellt bereit. Laut IT-Glossar ist ein Server ein anderer in einem Computernetzwerk. Ein Computer, der dem Computer seine eigenen Funktionen, Dienste, Daten usw. zur Verfügung stellt. Wenn wir eine Webseite durchsuchen, fragen Sie den Server von unserem PC aus: "Ich möchte diese Seite sehen!". Dann gibt der Server eine Seite mit der Aufschrift "Ja, das!" Zurück. Jetzt können Sie die fröhliche Webseite sehen. Normalerweise verfügt jede Servermaschine oder Serversoftware über eine feste Funktion oder einen festen Dienst, der nach außen bereitgestellt werden soll, sowie über ein unterstütztes Datenformat oder -protokoll (Kommunikationsvereinbarung). Dann heißt es "○○ Server" mit den Arten von Funktionen, die bereitgestellt werden sollen, wie "DB-Server", "Webserver" und "Anwendungsserver".

Webserver

Die Rolle des Webservers besteht darin, Inhaltsanforderungen vom Browser zu empfangen und eine Antwort an den Browser zurückzugeben. Wenn es sich bei der Anforderung zu diesem Zeitpunkt um statischen Webinhalt handelt (Inhalt, der denselben Anzeigeinhalt anzeigt, sofern er nicht aktualisiert wurde, z. B. HTML-, CSS- und Bilddateien), verarbeitet der Webserver ihn und gibt eine Antwort zurück. Bei dynamischen Webinhalten, bei denen eine Verarbeitung erforderlich ist, um den Anzeigeinhalt für jeden Client zu ändern, sendet der Webserver eine Anforderung an den Anwendungsserver. Anschließend wird das vom Anwendungsserver zurückgegebene Ergebnis als Antwort zurückgegeben. Bekannte Webserver sind Nginx und Apache.

Anwendungsserver

Der Anwendungsserver führt die von uns erstellte Anwendung aus. Die vom Webserver gesendete Anforderung wird vom Anwendungsserver an die Anwendung übertragen, und das von der Anwendung verarbeitete Ergebnis wird an den Webserver zurückgegeben. Bei der Entwicklung in einer lokalen Umgebung wird nur der Anwendungsserver eingerichtet. In der Produktionsumgebung ist die Verarbeitung statischer Inhalte jedoch häufig belastet, wenn der Webserver vor der Anwendung platziert wird.

Zum Beispiel Rails

Typische Rails-Anwendungsserver sind Unicorn, Thin, Rainbows, Puma usw. Die vom Webserver gesendete Anforderung wird vom Anwendungsserver an die Rails-Anwendung übertragen, und das von der Rails-Anwendung verarbeitete Ergebnis wird an den Webserver zurückgegeben. Richten Sie für die Entwicklung in einer lokalen Umgebung nur einen Anwendungsserver für Rails wie Puma ein (der normalerweise in der Entwicklungsumgebung ausgeführt wird). Andererseits wird in der Produktionsumgebung der Webserver häufig vor der Rails-Anwendung platziert, um die Last der statischen Inhaltsverarbeitung zu tragen. Auf diese Weise kann der Webserver mehrere Anwendungen gleichzeitig verarbeiten, Assets schnell rendern und viele der bei jeder Anforderung auftretenden Vorgänge ausführen.

Rack Lassen Sie uns hier auf Rack eingehen. Das Rack wechselt zwischen dem Ruby-Framework und dem Anwendungsserver und fungiert als Verbindung zwischen diesen. Bei Verwendung von Rack konvertiert der Server die gesendete HTTP-Anforderung in ein Formular, das von der Anwendung verstanden werden kann. Umgekehrt wird die Antwort von der App über Rack in HTTP konvertiert und an den Server zurückgegeben. Mit Rack können Sie Server und Frameworks frei kombinieren.

Zusammenfassung

Ich werde den Inhalt bisher zusammenfassen. Der Webserver empfängt die vom Browser gesendete Anforderung und gibt eine Antwort an den Browser zurück, wenn es sich um statischen Webinhalt handelt. Wenn es sich bei der Anforderung jedoch um dynamischen Webinhalt handelt, wird sie nicht vom Webserver verarbeitet und an den Anwendungsserver gesendet. Anschließend informiert der Anwendungsserver die Anwendung über die Middleware. Wenn der Vorgang abgeschlossen ist, werden die Ergebnisse in umgekehrter Reihenfolge an den Browser zurückgegeben.

Referenz

Unterschied zwischen Webserver und Anwendungsserver IT-Glossar Unterschiede zwischen Webserver und Anwendungsserver bei der Rails-Entwicklung (Übersetzung)

Recommended Posts

Was ist der Unterschied zwischen einem Webserver und einem Anwendungsserver?
Was ist der Unterschied zwischen einer Aktion und einer Instanzmethode?
Was ist der Unterschied zwischen SimpleDateFormat und DateTimeFormatter? ??
Was ist der Unterschied zwischen Systemspezifikation und Funktionsspezifikation?
[Rails] Was ist der Unterschied zwischen Redirect und Rendering?
Was ist der Unterschied zwischen Überspringen und Ausstehend? [RSpec]
[Rails] Was ist der Unterschied zwischen Bundle-Installation und Bundle-Update?
[Java] Was ist der Unterschied zwischen Form, Entität und dto? [Bohne]
Was ist der Unterschied zwischen den Verantwortlichkeiten der Domänenschicht und der Anwendungsschicht in der Zwiebelarchitektur [DDD]?
Rails-Webserver und Anwendungsserver
[Ruby] Beziehung zwischen Elternklasse und Kinderklasse. Beziehung zwischen Klasse und Instanz.
Über den Unterschied zwischen irb und pry
Was benötigen Sie am Ende, um eine Web-App mit Java zu erstellen? Erklären Sie den Mechanismus und was zum Lernen notwendig ist
[Spring Boot] Vorsichtsmaßnahmen beim Entwickeln einer Webanwendung mit Spring Boot und beim Ausführen eines Krieges auf einem unabhängigen Tomcat-Server
[Java] Verstehe den Unterschied zwischen List und Set
[Rails / Active Record] Über den Unterschied zwischen create und create!
Verstehe den Unterschied zwischen abstrakten Klassen und Schnittstellen!
[Java] Unterschied zwischen gleich und == in einer Zeichenfolge, die ein Referenztyp ist
Zeigt an, wie viele Jahre und Monate der Unterschied zu einem bestimmten Datum beträgt
Lernen Sie beim Erstellen eines WEB-Servers die Einführung in die Entwicklung von WEB-Anwendungen anhand der Grundlagen
Was tun, wenn die Meldung "Ein Server läuft bereits" angezeigt wird. Fehler beim Versuch, den Rails-Server zu starten
[Ruby] Ich habe über den Unterschied zwischen each_with_index und each.with_index nachgedacht
[Rails] Ich habe den Unterschied zwischen Ressourcen und Ressourcen untersucht
Was ist eine Schnittstelle?
Unterschiede zwischen Klassen und Instanzen in Ruby
Was ist ein Initialisierer?
Was ist ein Operator?
Vergleichen Sie den Unterschied zwischen Docker-Datei vor und nach Docker-Slim
Was ist eine Anmerkung?
Verstehe in 3 Minuten! Eine sehr grobe Erklärung des Unterschieds zwischen Sitzung und Cookie
Erstellen Sie eine JAVA WEB App und probieren Sie OMC APM aus
Ich habe versucht, eine Webanwendung zu erstellen, die Tweets mit einer Vue-Word-Cloud durchsucht und die Tendenz untersucht, was im zugehörigen Profil geschrieben steht
Unterschied zwischen vh und%
Was ist ein Servlet?
Was ist Webentwicklung?
Unterschied zwischen i ++ und ++ i
[Swift] UITextField hat mir den Unterschied zwischen Null und "" beigebracht.
Ich werde den Unterschied zwischen der Entwicklung von Android-Anwendungen und der Entwicklung von iOS-Anwendungen aus der Sicht von iOS-Ingenieuren erläutern
Jetzt im dritten Jahr ist das Missverständnis, das ich bemerkt habe, der Unterschied zwischen der Gleichheitsmethode und ==
Eine Anwendung, die den Wert des Beschleunigungssensors durch UDP-Kommunikation zwischen C # und Android erfasst
[Docker-compose] Unterschied zwischen env_file und Umgebung. Informationen zur Priorität der Anwendung von Umgebungsvariablen
Unterschied zwischen Java und JavaScript (wie man den Durchschnitt findet)
Was ist die LocalDateTime-Klasse? [Java-Anfänger] -Datum und Zeitklasse-
Die erste WEB-Anwendung mit Spring Boot-Making a Pomodoro Timer-
[Java] Überprüfen Sie den Unterschied zwischen orElse und orElseGet mit IntStream
[Java] Eine Klasse ist ein Betriebssystem und eine Instanz ist ein virtueller Computer.
Überschreiben wir den Unterschied zwischen == (Identität) und der Methode equals (Äquivalenz).
Der Unterschied zwischen der Programmierung mit Ruby-Klassen und der Programmierung ohne Ruby-Klassen
Logback-Protokoll wird nicht ausgegeben, wenn die Serveranwendung geschlossen wird
Ist die Kurzschlussauswertung wirklich schnell? Unterschied zwischen && und & in Java
[Memorandum] Was ist ein Fehler?
Was ist eine Wrapper-Klasse?
Was ist ein Ruby-Modul?