Frage

Ist es realistisch, für eine Produktion Kaliber Web-Server der C # .NET-Klasse Httplistener als Grundlage zu benutzen?

Der HTTP-Web-Service, den ich zu hosten enthält keine aspx oder statische Dateien. Alle HTTP-Antworten sind dynamisch und in c # Code erzeugt, der über ein paar Switch-Anweisungen aufgerufen wird, die ein erholsames URL-Format zu überprüfen.

Mein Denken ist, dass IIS ist wirklich ein Wrapper Benutzer-Modus um den Windows-o / s HTTP-SYS-Kernel-Modul, die alle schwere Netz Handhabung tut und so ist Httplistener.

Ich habe bereits eine Basislauf multithreaded Web-Server, die für die Entwicklung ausgezeichnet ist, weil es im Debug-Modus in einer Instanz beginnt, jetzt denke ich brauche ich die Overkill von IIS für die Produktion. Ein niedriger Speicherbedarf ist ein weitere Attraktion.

War es hilfreich?

Lösung

Sie haben zwei schwerwiegende Entscheidungen hier. Und nein, Codierung eines eigenen Web-Servers mit Httplistener ist nicht produktions Grad.

1) Verwenden Sie IIS. Es hat eine Tonne von Funktionen für Sicherheit, Leistung und vielleicht noch wichtiger ist, Verwaltung , dass Sie sich selbst neu zu erfinden. Wie Remote-Verwaltung, Protokollierung, integrierte Windows-Sicherheit etc.

2) Verwenden Sie WCF und erstellen Sie eine Servicehost Ihre Dateien zu hosten. Dann müssen Sie Ihre eigenen Dienste implementieren und einen Weg finden, um ihre Lebensdauer zu verwalten. Sie können es tun, aber wieder, wenn Sie RESTful Web-Anrufe sprechen, wirklich IIS ist der Weg zu gehen.

Sie manuell Ihre eigenen rollen sollte vermieden werden. IIS hat sich in den vergangenen 10 Jahren stark verändert. Es ist gar nicht mehr einen großen monolithischen Server bedeutet. Sie haben so ziemlich alles modularisiert, vor allem in Windows 2008, so dass Sie ein schlankes und schnelles System.

Andere Tipps

Nun, wie es gesagt wurde -. Versuchen, IIS zu verwenden, auf dem ersten

Httplistener ist gar nicht schlecht - die schnellste Managed Zuhörer Server haben Sie jetzt können (schneller als TcpListener und schneller als Socket-Klasse). Und es ist tatsächlich der gleiche Kern wie bei IIS. Aber IIS hat eine Menge mehr Dinge.

Ich kann nicht sagen IIS Monolith - Hosting Nutzung gezeigt, dass es in Win2008 in Bezug auf die Stabilität und das Management schlechter wurde. Aber Ihre handgemachte Lösung kann viel schlimmer sein. Und auch nicht vergessen - http.sys viel mehr anpassbar als Httplistener. D. h Sie können nicht mit Httplistener tun Streaming, aber man kann das tun mit http.sys - Frage über Httplistener-Streaming

Aber wenn Sie genug Leistung als Entwickler haben -. Können Sie versuchen, eigenen http.sys Wrapper zu schreiben und das ist bester Ansatz von eigenem Web-Server in Windows zu schreiben

Müll, Rollen Sie Ihre eigenen. Die Architektur ermöglicht es. Seien Sie sich bewusst, obwohl es einige seltsame Verhalten in der Klasse sind. Schließen sie ein paar Mal in NT-Dienst nach unten macht es flakey als Beutel von Blätterteig.

Wenn Sie es auf Konsole ausführen, überhaupt keine Probleme, führen Sie es async und es sollte alles gut sein, aber das Starten und Stoppen das verflixte Ding. das ist eine andere Frage, die ich derzeit mit bin zu kämpfen, da keine Fehler aus dem hermetisch abgedichteten Microsoft Klassen produziert werden.

Ich fühle mich Python mit einem kleinen Hauch von CherryPy kommt auf

Wenn Sie es schreiben, dann werden Sie es halten müssen. Microsoft hat bereits einen Web-Server geschrieben -. Sie sollten es verwenden

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top