Есть ли зрелая, моно-совместимая библиотека FastCGI? - PullRequest
3 голосов
/ 27 октября 2011

Я хотел бы настроить постоянный сервер приложений, работающий на Mono, который должен иметь возможность принимать веб-запросы и возвращать некоторые подходящие ответы.Это простая задача, и почти для чего нужен FastCGI, но я не могу найти решение FastCGI, которое не склеено с ASP.NET.

Чтобы быть более ясным: я не заинтересован вASP.NET и не хотят использовать его или пытаться кооптировать любую часть стека ASP.NET.Все, что мне действительно нужно, это способ взаимодействия с веб-сервером через FastCGI, и я могу выяснить все остальное.

Ответы [ 2 ]

2 голосов
/ 02 ноября 2011

Хотя реализация Mono FastCGI всегда поставляется с сервером ASP.NET, я написал код таким образом, чтобы его можно было использовать с любой реализацией сервера.Вот основной пример, который должен работать.Код для вашего запроса идет в методе Process, и вы можете получить доступ к переменным среды FastCGI через ResponderRequest.GetParameter.

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

.* и просто исключите все файлы, которые не используют пространство имен Mono.FastCgi.

0 голосов
/ 27 октября 2011

Возможно, вы можете связать библиотеку FASTCGI C с Mono.

Другой возможностью может быть использование протокола SCGI . Этот протокол (почему-то менее эффективный, чем FastCGI) совместно с FastCGI предоставляет возможность постоянного приложения, работающего на веб-сервере. Но SCGI настолько прост, что написать собственную реализацию протокола SCGI очень просто (при условии, что у вас есть опыт работы с HTTP).

...