3 Stimmen

Wie erkennt iis eine Webanwendung?

Diese Fragen wurden mir in Vorstellungsgesprächen gestellt...

1. wie erkennt iis, welche Webanwendung angefordert wird?

2. wie erkennt man, dass eine Webanwendung entwickelt wird, in welcher Sprache?

Kann jemand diese im Detail erklären...

8voto

slugster Punkte 48412

Ich werde mich nicht mit der Frage beschäftigen, was eine Webanwendung ist, weil das nicht Ihre Frage ist, daher werde ich in dieser Antwort die Begriffe Webanwendung o virtuelles Verzeichnis austauschbar. Wenn Sie mehr darüber wissen wollen, was eine Webanwendung auf IIS ist, dann lesen Sie diesen Artikel von der offiziellen MS-Seite über IIS: Verstehen von Sites, Anwendungen und virtuellen Verzeichnissen auf IIS 7 wird Ihnen helfen. Im Titel steht zwar IIS7, aber es wird auch auf IIS6 eingegangen.


Welche Webanwendung wird angefordert?

Die Anforderung, die Sie an den Server stellen, enthält das virtuelle Verzeichnis, oder IIS ist bereits so konfiguriert, dass die Anforderung einem bestimmten virtuellen Verzeichnis zugeordnet wird. Wenn Ihre angeforderte URL wie folgt aussieht:

http://someServer/myWebSite/default.aspx

dann die myWebSite Teil dieser URL ist das virtuelle Verzeichnis, und IIS weiß genau, wie es zu handhaben ist, da es direkt einem Ordner im Dateisystem zugeordnet ist. Aber wie gesagt, das ist nur der einfache Ansatz, den Sie wahrscheinlich für den Zugriff auf Ihre eigenen Webanwendungen auf Ihrem Entwicklungsrechner oder im Intranet Ihres Unternehmens verwenden. Es gibt auch eine andere Möglichkeit, das virtuelle Verzeichnis anhand der URL zu finden - mit Host-Kopfzeilen . Wenn Sie eine Anfrage an eine (IIS-basierte) Website im Internet stellen, wird diese höchstwahrscheinlich auf demselben Webserver mit Dutzenden oder sogar Hunderten von anderen Websites gehostet. In diesem Fall Host-Header-Bindungen werden verwendet, um die Anfrage einer bestimmten Website/Webanwendung zuzuordnen. In diesem Artikel können Sie nachlesen, wie Host-Header funktionieren: HOWTO: Grundlagen der IIS 6-Anfrageverarbeitung, Teil 2 - Website, virtuelles Verzeichnis und Webanwendung .


Sprache für Webanwendungen

Die Sprache der Seite wird auf der Seite selbst angegeben (in der aspx- oder ascx-Datei). Immer, wenn die Arbeitsprozesse des App-Pools zum ersten Mal gestartet oder wiederverwendet (neu gestartet) werden, wird die Webseiten werden neu kompiliert wird die auf der Seite oder im Steuerelement angegebene Sprache als Richtlinie für den zu verwendenden Compiler verwendet. Der kompilierte Code wird dann in einem Zwischenspeicher aufbewahrt, bis Dateien geändert werden und eine Neukompilierung erforderlich ist oder die Arbeitsprozesse wiederverwendet werden.

Wenn sie vorkompiliert ist, ist es nicht notwendig, die Seitensprache zu kennen, da sie bereits in eine Zwischensprache namens MSIL (Microsoft Intermediate Language, oder korrekter: MSIL) kompiliert wurde. CIL, Gemeinsame Zwischensprache ), wird dieser Code dann vor der Ausführung in nativen Code JIT-kompiliert. (JIT-Kompilierung: einfache Erklärung , wiki-Erklärung , eine etwas härtere Erklärung ).

Wenn die Webanwendung mit ngen kompiliert wurde, liegt sie bereits in einer nativen Maschinensprache vor und muss daher nicht mehr kompiliert werden.

1voto

jrista Punkte 31522

Zu Frage Nr. 1: IIS verwendet eine so genannte Metadatenbank, um Informationen über die gehosteten Webanwendungen sowie eine Reihe anderer nützlicher Informationen zu erfassen. Die IIS-Metadatenbank verfolgt jeden Knoten, sei es eine ganze Website oder einfach ein untergeordnetes virtuelles Verzeichnis, die als "Anwendungen" gekennzeichnet sind. Jede Anwendung kann in einem Anwendungspool gehostet werden... entweder einzeln oder viele Anwendungen können sich einen einzigen Pool teilen. IIS bietet eine Vielzahl von Verwaltungsoptionen, darunter eine WMI-API, LDAP-API, COM-APIs und verwaltete APIs (welche APIs verfügbar sind, hängt von der Version von IIS ab... v7 enthält einige umfangreiche verwaltete APIs sowie umfangreiche PowerShell-Unterstützung).

Um ganz ehrlich zu sein, glaube ich nicht, dass die Frage Nr. 2 überhaupt eine berechtigte Frage ist. Dem IIS selbst ist es egal, in welcher Sprache etwas geschrieben wurde, da der IIS nicht für die Kompilierung zuständig ist. Ich denke, das deutet darauf hin, dass der Interviewer die Konzepte selbst nicht richtig verstanden hat. Es ist auch möglich, dass es sich bei der Frage um eine Trickfrage handelte und die richtige Antwort lautete: "IIS kann und muss nicht wissen, in welcher Sprache eine Webanwendung erstellt wurde, da IIS nicht für die Kompilierung von .NET-Websites verantwortlich ist."

Der ASP.NET-Arbeitsprozess hingegen ist für die Kompilierung und Ausführung von ASP.NET-Anwendungen zuständig. Die Sprache wird normalerweise durch das @Page Richtlinie am Anfang der zu verarbeitenden Datei. Die Kompilierung kann entweder frühzeitig erfolgen, wobei die Website in eine .dll-Assembly zusammen mit .aspx-, .ascx- und anderen Handler-Dateien gerendert wird, oder sie kann in Echtzeit erfolgen, so dass eine Website dynamisch erstellt werden kann. Letzteres erfordert, dass die ASP.NET-Laufzeitumgebung die Sprache der zu kompilierenden Seite kennt.

1voto

Jaroslav Jandek Punkte 9303

Vereinfachte Version:

IIS ist in der Lage, ISAPI-Erweiterungen (wie SSL-Filter, Komprimierungsfilter, PHP, ASP.NET, ...) einzubinden.

1) IIS prüft den angeforderten URI und sendet ihn an die Nebenstelle, bei der dieser URI-Pfad registriert ist.
ASP.NET-Register *.ascx, *.ashx, *.aspx,... Pfade standardmäßig.
*.php Pfade werden in der Regel mit PHP-Erweiterung usw. registriert.

2) Jetzt erhält ASP.NET seine erste Anfrage und die ApplicationManager Klasse erstellt eine Anwendungsdomäne und eine HostingEnvironment Objekt mit Informationen und Isolierung für unsere Anwendung (basierend auf dem URI).

3) Kernobjekte werden initialisiert ( Http* wie HttpRequest, usw.)

4) A HttpApplication Objekt erstellt wird.

5) Die Anfrage wird bearbeitet und liefert eine Antwort (wenn sie erfolgreich war).

Die 2-4 Schritte werden nur einmal ausgeführt, und die Objekte bleiben im Speicher und warten auf weitere Anfragen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X