Hallo MB,
Ein "Requesthandler" ist ein Typ von Programm, der Requests bekommt und Antworten liefert.
Ok zählt Router dazu? Nah deiner Deninition schon wenn du "Subprogramme" dazu zählst
Äh. Hm. Tja. Keine Ahnung. Mein "Requesthandler" war eine Wortschöpfung von mir. Was verstehst Du unter Router? Ich assoziere damit (a) ein Gerät, das Teil der Netzwerkinfrastruktur ist und (b) eine Softwarekomponente, die Nachrichten auf Teilfunktionen der Software abbildet und dorthin delegiert (beispielsweise URLs auf Controller und Actions). Beides fällt nicht in diese grobe Kategorisierung von Software-Typen, die ich da aufgestellt habe. Höchstens könnte man den in (b) angeführten URL-Router als Teilkomponente eines Requesthandlers ansehen.
Ich schwafele deshalb so abstrakt daher, weil ein Router ein recht generischer Begriff ist. Grundsätzlich bekommt er Nachrichten, und leitet sie irgendwohin weiter. Möglicherweise bekommt er vom Weiterleitungsziel eine Antwort und leitet sie an den Anfragesteller weiter. Der Router an sich ist aber kein kurzlaufender Requesthandler, sondern ein langlaufender Service. Wobei es bei den Requesthandlern auch Mischformen zwischen kurz- und langlaufend geben kann: Ein PHP Script endet komplett, wenn der Request zu Ende ist, eine ASP.NET Anwendung wird einmal geladen und bleibt im Speicher - wenn die Klassen darin statische Elemente haben, kann man sich darin Werte von einem Request zum anderen merken (und sich eine blutige Nase holen wenn man nicht haarscharf aufpasst was man tut).
Beispiele für Komponenten mit Routing-Aufgaben:
- Dein Hoster hat einen Router, der die einlaufenden IP-Pakete auf die Server des Rechenzentrums verteilt. Dafür beachtet er IP, Port und ggf. muss er noch HTTP Header inspizieren (Verteilung per Hostname-Header).
- Der Server hat einen Router, der die einlaufenden IP Pakete nach Port trennt und der lauschenden Anwendung zuteilt (unter Windows ggf. wiedermal mit HTTP-Inspektion, da können mehrere Dienste auf den gleichen Port lauschen)
- Der http-Listener im Service "Apache" hat einen Router, je nach Hostname und Pfad das entsprechende Web adressiert. Ich weiß nicht wie der Apache strukturiert ist - aber der IIS kann in diesem Schritt den Request auf virtuelle Webs weiterleiten, die sich auf etliche Prozesse im Server verteilen und sehr unterschiedlich konfiguriert sind (Application Pools).
- Deine Website (oder mein RESTful WEB-API) hat einen Router, der aus der URL einen Controller und eine Action ableitet und die Arbeit dorthin delegiert.
- etc etc etc
Rolf