cranequinier: (65x70)
[personal profile] cranequinier
Есть коммандлайновая программа под Windows, которая принимает файл килобайт в триста и выдает взад файл килобайт в сто.
Из неё делается онлайновый сервис.
Вопрос: как это принять делать в 21-м веке?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Date: 2015-06-14 04:45 am (UTC)
dennisgorelik: (2009)
From: [personal profile] dennisgorelik
Торчать в веб из Windows принято с помощью IIS и Apache.
Ты, верноятно, имел ввиду чем принято соединять windows программы с веб сервером?

Date: 2015-06-14 05:11 am (UTC)
dennisgorelik: 2020-06-13 in my home office (Default)
From: [personal profile] dennisgorelik
А как так получилось, что у этой утилиты нет DLL или исходного кода, который можно было бы скомпилировать в DLL?

Date: 2015-06-14 05:25 am (UTC)
From: [identity profile] cranequinier.livejournal.com
Исходный код есть.

Но мараться о C# не очень хочется. Если этого можно избежать.

Date: 2015-06-14 10:10 am (UTC)
dennisgorelik: 2020-06-13 in my home office (Default)
From: [personal profile] dennisgorelik
Если не ошибаюсь, библиотека может быть скомпилирована вообще на чём угодно.

Ну и, теоретически, современный ASP.NET веб сайт можно на managed C++ писать.

А чем плох C#?

Date: 2015-06-15 03:29 pm (UTC)
From: [identity profile] cranequinier.livejournal.com
> ASP.NET веб сайт можно на managed C++ писать.

Это ещё хуже.

> А чем плох C#?

На сервере ничем особенно не плох. Просто ещё один язык в проекте, и ещё одна прокладка.

Date: 2015-06-14 05:01 pm (UTC)
From: [identity profile] yatur.livejournal.com
Т.е., ты хочешь, чтобы было как в 21-м веке, но настаиваешь на том, что будешь делать это в набедренной повязке и с каменным топором в руках. Не получится.

Придется замараться - или о Джаву, или о Джаваскрипт, или о C#, или о Питон какой-нибудь. Т.е., можно и с каменным топором - он отлично работает, но не надо тогда претендовать на 21-й век.

Date: 2015-06-15 03:31 pm (UTC)
From: [identity profile] cranequinier.livejournal.com
> Т.е., ты хочешь, чтобы было как в 21-м веке,

Не то чтобы прямо хочу. Интересуюсь просто, как там, в 21-м веке? Польза есть?

> но настаиваешь на том, что будешь делать это в набедренной повязке и с каменным топором в руках.

Да и не то чтобы прямо настаиваю. При прочих равных предпочитаю.

> Придется замараться - или о Джаву, или о Джаваскрипт, или о C#, или о Питон какой-нибудь.

Я бы предпочел мараться о PHP или JS. Они все равно неизбежны.

Date: 2015-06-14 07:16 pm (UTC)
From: [identity profile] yatur.livejournal.com
Т.е., ты хочешь, чтобы было как в 21-м веке, но настаиваешь на том, что будешь делать это в набедренной повязке и с каменным топором в руках. Не получится.

Придется замараться - или о Джаву, или о Джаваскрипт, или о C#, или о Питон какой-нибудь. Т.е., можно и с каменным топором - он отлично работает, но не надо тогда претендовать на 21-й век.

Date: 2015-06-14 08:48 pm (UTC)
From: [identity profile] rrr2.livejournal.com
managed С++, наверное, тоже прокатит...

Date: 2015-06-14 04:57 pm (UTC)
From: [identity profile] soonts.livejournal.com
Я бы вот это попробовал: https://casablanca.codeplex.com/

Если же нет желания экспериментировать, проверенный временем вариант это ASP.NET и C++ DLL.
Чтобы это работало нужно настроить Full Trust режим в asp.net приложении, но это даже некоторые shared hostings позволяют делать.
Например у меня сайт на discountasp.net и я там периодически это использовал.
Правда не для своих DLL-ек, а для системной esent.dll, но я думаю и свои тоже будут работать, если им не нужно писать или читать из корня диcка C: или делать ещё что-нибудь, на что нет прав у пользователя, под которым ASP.NET приложение работает.

Если хотите, могу как-нибудь в свободное от работы время запилить вам за пиво "Hello world"-стайл пример любого из этих двух подходов.
Edited Date: 2015-06-14 08:14 pm (UTC)

Date: 2015-06-15 03:16 pm (UTC)
From: [identity profile] cranequinier.livejournal.com
Большое спасибо. Масса практически полезно информации.

> Если хотите, могу как-нибудь в свободное от работы время запилить вам за пиво "Hello world"-стайл пример любого из этих двух подходов.

Спасибо, у меня нет проблем с писанием программ. Наоборот - я в него робко прячусь от действительно полезной деятельности...

Profile

cranequinier: (Default)
cranequinier

March 2020

S M T W T F S
1234567
891011121314
15161718192021
22 232425262728
293031    

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jul. 2nd, 2025 04:15 am
Powered by Dreamwidth Studios