cranequinier: (65x70)
cranequinier ([personal profile] cranequinier) wrote2015-06-13 10:21 pm

Чем сейчас принято торчать в веб из виндовых программ?

Есть коммандлайновая программа под Windows, которая принимает файл килобайт в триста и выдает взад файл килобайт в сто.
Из неё делается онлайновый сервис.
Вопрос: как это принять делать в 21-м веке?

Я пока делаю FastCGI, благо я это дело контрибучу знаю и люблю, переделки минимальны, и входит по-умолчанию в виндовые имеджы бесплатного клауд-хостинга от Амазона.

Но не оставляет ощущение, что FastCGI это какое-то окаменелое говно мамонта, а надо всё делать на чем-то ещё. А на чём?

[identity profile] yatur.livejournal.com 2015-06-14 04:42 am (UTC)(link)
Ну... У каждого своя религия. Если речь идет о винде, то народ нынче курит ASP.NET WebAPI.
Я, правда, не знаю как там у него с стримингом, чтобы не читать весь запрос в память, но при размере в 300 КБ и небольшом трафике это не проблема.

[identity profile] cranequinier.livejournal.com 2015-06-14 04:48 am (UTC)(link)
Спасибо.

А чем оно лучше FastCGI? Или даже просто CGI?

И, кстати - а можно ли его разумным образом написать на ANSI C, или надо сишную DLL из какого-нибудь C# вызывать?

[identity profile] yatur.livejournal.com 2015-06-14 04:59 am (UTC)(link)
Я не очень знаком с FastCGI.

Судя по описанию, это довольно сильно похоже на ASP.NET Application Pools.
Так что, лучше оно, наверное, маргинально - интеграцией с отладчиком, легкостью администрирования и т.п.

Лучше CGI оно тем, что не запускается новый процесс на каждый запрос.

На ANSI C в 21-м веке в веб не торчат :) Так что да - C#.

PS. Хотя, если FastCGI изнутри похож на CGI, то там же, небось, самому надо парсить заголовки, Transfer-Encoding и т.п? Здесь все это берет на себя система - в простейшем случае просто пишешь метод, который принимает byte[] и возврарщает byte[]
Edited 2015-06-14 05:09 (UTC)

[identity profile] cranequinier.livejournal.com 2015-06-14 05:29 am (UTC)(link)
> Лучше CGI оно тем, что не запускается новый процесс на каждый запрос.

Нну, из CGI тоже можно просто дёргать постоянно работающий сервер. Хотя такое дёргание и небесплатно пишется, и надежность у наколенного варианта будет так себе.

> Хотя, если FastCGI изнутри похож на CGI, то там же, небось, самому надо парсить заголовки, Transfer-Encoding и т.п? Здесь все это берет на себя система - в простейшем случае просто пишешь метод, который принимает byte[] и возврарщает byte[]

Если заголовки всегда одинаковые, то их и в CGI можно не парсить. А если бывают разные, то byte[] наверное не получится. Допустим пришел тебе текст по-китайски. А ты ждал ASCII. Какая разница, в CGI произошло это печальное событие или в C#?

[identity profile] yatur.livejournal.com 2015-06-14 04:56 pm (UTC)(link)
C# молча преобразует китайский текст в Unicode. Равно как и любой другой. Только тогда надо не byte[], а string.