Исполняемые файлы C # CGI - хорошая или плохая идея? - PullRequest
3 голосов
/ 02 ноября 2010

Я хотел бы написать приложение на C # для обработки моего HTTP (включая запросы AJAX), а не идти по пути PHP, PERL или ASP, поскольку мне просто нужно возвращать некоторый стандартный HTML, хотя, очевидно, поскольку я хочу CGI, динамически генерируемый.

ОБНОВЛЕНИЕ: Я не предлагаю писать свой собственный веб-сервер, но исполняемый файл размещен на веб-сервере, таком как IIS или Apache.Также я не хочу изучать и использовать ASP (я знаю, что могу сделать это намного быстрее, время разработки, я сам на C #), и я просто хочу, чтобы верный HTML-код W3C отправлялся обратно клиенту.

Есть ли веские причинычто не сделал этого?

Я понимаю, что каждый раз, когда делается HTTP-запрос, исполняемый файл должен быть загружен и запущен - но наверняка так же, как Perl, ASP и PHP?Есть ли способ заставить исполняемый файл работать со всеми HTTP-запросами для конкретной страницы?(хотя мне кажется, что я просто пишу мини-HTTP-сервер!)

Есть ли хорошие уроки?Я читал этот, но он немного устаревший (2005): http://www.codeproject.com/KB/cs/cgi_csharp.aspx

ОБНОВЛЕНИЕ2: Я не думаю, что скорость будет проблемой в любом случае (запуск небольшого exe безGUI почти мгновенный), но если бы я хотел быть действительно эффективным, я мог бы написать сервер C #, тогда нестатические запросы страниц могут иметь крошечный исполняемый файл, написанный на C, который отправляет запрос на сервер C # и возвращает ответ.Не мог ли я?:)

Ответы [ 2 ]

5 голосов
/ 02 ноября 2010

Существуют такие решения, как FastCGI , которые исключают накладные расходы на запуск исполняемого файла каждый раз, когда вы хотите обработать запрос.Очень немногие люди до сих пор используют традиционные CGI.Я не знаю, есть ли решение, совместимое с .net.

Существует гораздо лучший вариант для .NET, класс System.Web.IHttpHandler.

Все, что вам нужно сделать, это подклассIHttpHandler, и перегрузить 1 метод для обработки запроса.На мой взгляд, это более простой CGI.

На сайте MSDN .

есть хороший пример.
0 голосов
/ 02 ноября 2010

Я бы предложил использовать API HttpListener для такого рода вещей, если IIS действительно не подходит для вас.

...