【问题标题】:Is there a mature, Mono-compatible FastCGI library?有成熟的、兼容 Mono 的 FastCGI 库吗?
【发布时间】:2011-11-02 12:38:09
【问题描述】:

我想设置一个在 Mono 上运行的持久应用服务器,它需要能够接受 Web 请求并返回一些合适的响应。这是一项简单的任务,几乎就是 FastCGI 的用途,但我似乎找不到不与 ASP.NET 粘合在一起的 FastCGI 解决方案。

更清楚一点:我对 ASP.NET 不感兴趣,也不想使用它或尝试选择 ASP.NET 堆栈的任何部分。我真正需要的只是一种通过 FastCGI 与网络服务器交互的方法,其余的我都可以解决。

【问题讨论】:

    标签: .net mono fastcgi


    【解决方案1】:

    虽然 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);
        }
    }
    

    要构建此示例,您可以从 https://github.com/mono/xsp/tree/master/src/Mono.WebServer.FastCgi 下载所有 CS 文件,并排除任何不使用 Mono.FastCgi 命名空间的文件。

    【讨论】:

    • 布莱恩,感谢您在这方面所做的出色工作!我有一个有关托管依赖于静态变量的单声道应用程序的相关 SO 问题,如果您有时间回答这个问题,我将不胜感激:stackoverflow.com/questions/13480328/…
    【解决方案2】:

    也许您可以将 FASTCGI C 库连接到 Mono。

    另一种可能性是使用SCGI 协议。该协议(在某种程度上比 FastCGI 效率低)与 FastCGI 共享让持久应用程序为 Web 服务器工作的能力。但是 SCGI 非常简单,编写自己的 SCGI 协议实现非常简单(假设您具备 HTTP 的工作知识)。

    【讨论】:

    • 由于似乎没有任何好的 FastCGI .NET 库,我会给 SimpleCGI 一个机会,并将这个答案标记为已接受。干杯。
    猜你喜欢
    • 2010-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多