成熟したMono互換のFastCGIライブラリはありますか?

Mono上で動作する永続的なアプリケーションサーバーをセットアップして、Web要求を受け入れて適切な応答を返すことができるようにする必要があります。これは簡単な作業であり、FastCGIの目的はかなりわかりますが、ASP.NETと一緒に貼り付けられていないFastCGIソリューションを見つけることはできません。

明確にするには:私はASP.NETに興味がなく、ASP.NETスタックの一部を使用したり、共同利用しようとしません。私が本当に必要とするのは、FastCGIを使ってWebサーバーとやりとりする方法です。残りの部分を把握することができます。

3
追加された
ビュー: 3

2 答え

Mono FastCGIの実装は常にASP.NETサーバーで実装されていますが、私はこのコードをあらゆる種類のサーバー実装で使用できるように書いています。ここで動作するはずの基本的な例です。リクエスト固有のコードは Process メソッドにあり、 ResponderRequest.GetParameter でFastCGI環境変数にアクセスできます。

using Mono.FastCgi;

public class MyResponder : IResponder {

    RequestResponder req;

    public MyResponder(RequestResponder req) {
        req = request;
    }

    public int Process() {
        req.SendOutput("Content-Type: text/plain\r\n\r\n");
        req.SendOutput("Server name: ");
        req.SendOutput(req.GetParameter("SERVER_NAME");
        return 0;
    }

    public ResponderRequest Request {
        get {return req;}
    }


    public static void Main() {
        Socket socket = SocketFactory.CreatePipeSocket(IntPtr.Zero);
       //           = SocketFactory.CreateTcpSocket(address, port);
       //           = SocketFactory.CreateUnixSocket(path);

        Server server = new Server(socket);

        server.SetResponder(typeof (MyResponder));
        server.Start(false);
    }
}

この例を作成するには、すべてのCSファイルを https: //github.com/mono/xsp/tree/master/src/Mono.WebServer.FastCgi を開き、 Mono.FastCgi 名前空間を使用しないファイルを除外します。

2
追加された
ブライアン、この素晴らしい仕事に感謝します!静的変数に依存するモノラルアプリケーションをホスティングすることに関する関連する質問があります。質問にチャーミングする時間があれば、大変感謝しています。> stackoverflow.com/questions/13480328/&hellip ;
追加された 著者 Glenn,

おそらく、FASTCGI CライブラリとMonoをインターフェースするかもしれません。

別の可能性は、 SCGI プロトコルを使用することです。そのプロトコル(FastCGIよりもいくぶん効率的ではない)は、FastCGIと、Webサーバーで永続的なアプリケーションを動作させる機能を共有します。しかし、SCGIは非常に単純なので、独自のSCGIプロトコル実装を書くことは非常に簡単です(あなたがHTTPの知識を持っていると仮定して)。

0
追加された
良いFastCGI .NETライブラリがないように見えるので、私はSimpleCGIにショットをつけて、この回答を受け入れてマークします。乾杯。
追加された 著者 pjohansson,