2010-06-19 10 views
5

Ich entwickle einen kleinen Server, der über http Schnittstelle soll. Da ich möchte, dass es mit verschiedenen ausgereiften http-Servern verwendet werden kann, habe ich FastCGI als gemeinsame Schnittstelle gewählt.Gibt es eine .NET FastCGI-Bibliothek?

Jetzt kann ich keine (kostenlose) .NET-Bibliothek finden, die die FCGI-Schnittstelle implementiert und die ganze harte Arbeit für mich erledigt. Kennst du einen?

Antwort

2

Nicht, dass ich mir bewusst bin (ich bin auch auf der Suche)

Eine der Schwierigkeiten besteht darin, dass FastCGI zu erfordern scheint, dass Sie einen Griff an einen Hörer-Buchse an einen untergeordneten Prozess an Ort und Stelle übergeben von das normale StdIn-Handle - etwas, das die Standard-.NET-Klassen (Process, Socket usw.) nicht erlauben. Dies bedeutet, dass die Implementierung einer FastCGI-Bibliothek in .Net letztendlich die Re-Implementation der Process- und Socket-Klassen mit P/Invoke-Aufrufen von nativen Windows-Funktionen erfordert.

+0

Dank für Ihre Antwort. Ich bin immer noch auf der Suche nach einer solchen Bibliothek. Ich war mir dieser Schwierigkeiten nicht bewusst, dann wäre es vielleicht einfacher, einen nativen Wrapper um die c-Bibliothek zu erstellen und die Anfragen an meinen verwalteten Server weiterzuleiten? – Milan

+0

@ entity64 Das hört sich nach einer guten Idee an - die Alternative wäre, es in einer .Net-Sprache neu zu implementieren. – Justin

+0

Ich verstehe deinen zweiten Punkt nicht. Aus meiner Sicht gibt es den Webserver, der Client zu einem (Server) Fastcgi-Prozess ist, um die Anfragen weiterzuleiten. Dieser Prozess kann selbst Client für einen anderen Serverprozess sein. Nach meinem Verständnis ist es nicht notwendig, den Besitz des Sockets, der die Webserver/Fastcgi-Schnittstelle behandelt, zu übertragen. – schoetbi

2

ich eine solche Bibliothek in F # vor kurzem implementiert: SharpCGI

Auch von C# vollständig nutzbar.

Das Problem, das Kragen beschreibt, ist mit einigen Win32-Hackereien gelöst, die .NET-Interna ausnutzen. Sie müssen dies jedoch nicht verwenden, wenn Sie Ihren Webserver so konfigurieren, dass er stattdessen einen bestimmten Port für FastCGI verwendet.

+1

Läuft SharpCgi auf Mono, und wie beschreibt das Problem, das Kragen beschreibt, ein SharpCgi-Setup auf Mono? – ssn

1

Ja, es gibt viele Bibliotheken wie SharpCGI und FCGIDotNet, aber sie alle implementieren die Server-Seite des Protokolls. Ich muss immer noch Code finden, um mit einem vorhandenen FastCGI-Server zu sprechen, es ist genau das Gegenteil dessen, was all diese Bibliotheken tun (obwohl der Code dafür zu 90% gleich ist).

+0

werfen Sie einen Blick auf nginx;) –

+0

@Quandary Thats nicht in C# geschrieben – Muis

2

Ich bin nach all dieser Zeit hierher gekommen, um zu sagen, dass ich eine in C# geschriebene FastCGI-Bibliothek erstellt habe, die für zukünftige Leser nützlich sein könnte. Es ist nicht stark dokumentiert (FastCgi ist ein ziemlich einfacher Standard, also sehe ich nicht, warum es so wäre), aber ich denke, es ist ausreichend dokumentiert, um von anderen benutzt zu werden.
Gegenwärtig wird eine API sowohl für Anwendungsserver als auch für Webserver verfügbar gemacht, obwohl einige Features möglicherweise noch fehlen. Sie sollten es immer noch überprüfen.
Ich habe es in letzter Zeit nicht oft berührt, aber es funktioniert wirklich gut für mich (ich benutze es immer noch).

Sie können es über NuGet oder unter meiner GitHub herunterladen. Es heißt FastCgiNet.

2

Siehe Mono.WebServer.FastCGI bei
https://github.com/mono/xsp/tree/master/src

Es gibt auch ein FastCGI CLIENT hier:
http://sourceforge.net/projects/fcgidotnet/

Und die FastCGI-Spezifikation ist hier:
http://www.fastcgi.com/devkit/doc/fcgi-spec.html

Sie eine OWIN konforme Implementierung finden Sie hier:
https://github.com/mzabani/Fos

Zusätzlich sind diese Bibliotheken auch interessant:


HyperFastCGI:
https://github.com/xplicit/HyperFastCgi

oder
https://github.com/gigi81/sharpfastcgi

oder #cgi
https://github.com/wmeyer/SharpCGI

Wenn Sie weitere Beispiele auf FastCGI brauchen CLIENT Ts, können Sie einen Blick auf diese gehen Bibliothek

https://github.com/tomasen/fcgi_client

Verwandte Themen