metaclass: (Default)
metaclass ([personal profile] metaclass) wrote2015-04-19 11:59 am

Ад дотнета

Тут недавно выпустили akka.net, которая, по идее, сможет решить большую часть проблем с асинхронным обменом сообщениями для моего софта.
Сижу читаю всякое по теме, набрел на такую ссылку: http://www.aaronstannard.com/the-profound-weakness-of-the-net-oss-ecosystem/ - это один из разработчиков akka.net, занимавшийся ее remoting-кишками.

Вкратце: "если на дотнете делать что-то сложное и осмысленное - садись и пиши фреймворки с нуля, потому что индусам и микрософту ничего этого не надо".

Еще одна забавная хрень оттуда же: они подумали и вместо переезда своего приложения с дотнета на jvm, решили спортировать акку с jvm на дотнет. Это только с первого взгляда выглядит странным в рамках религии "мы не занимаемся изготовлением инструментов", но если сравнить приложение со сложной бизнес-логикой, разрабатываемое 2-3-5 лет и фреймворки - может оказаться, что портировать вторые потребует гораздо меньше времени.

[identity profile] jakobz.livejournal.com 2015-04-19 02:54 pm (UTC)(link)
Ну, в серверном дотнете даже не с акторов начинается. Там же негде хостить серверные приложения по-человечески.

Есть типа IIS, который сложно заставить просто не выключаться. Т.е. какие-нибудь фоновые процессы там нельзя хостить. Не говоря уже о том, .NET туда воткнут откровенными хаками.

Есть windows services, которые надо руками каждый раз прикручивать, придумывать как их деплоить, как мониторить.

Т.е., грубо говоря, в дотнете нет Application Server-а. Какие там в жопу асинхронные агенты?

[identity profile] anonim-legion.livejournal.com 2015-04-19 04:17 pm (UTC)(link)
>Есть типа IIS, который сложно заставить просто не выключаться

Можете подробнее?

capcha: no-brainer

[identity profile] metaclass.livejournal.com 2015-04-19 04:31 pm (UTC)(link)
Веб-сервисы в IIS живут в отдельном процессе w3wp, который рециклируется (т.е. один воркер процесс закрывается, второй создается по мере надобности).
Вне обработки запроса считается что сервисы никак не существуют, т.к. никакого состояния у них нет.
В приложении, где хостятся сервисы, состояние может быть, но при рестарте воркеров оно теряется, его надо где-то отдельно хранить.

А вещи вроде "раз в 10 минут выполнять какую-нибудь обработку" в таком варианте вообще поместить некуда.

[identity profile] enternet.livejournal.com 2015-04-20 12:45 pm (UTC)(link)
Сгущает он без меры. Необходимость Application Server вообще надумана. Длинные процессы всё равно живут на других машинах, на вебсервере им не место. Но если очень хочется, есть параметры, их можно подкрутить и IIS не будет засыпать.

[identity profile] metaclass.livejournal.com 2015-04-20 01:18 pm (UTC)(link)
А почему бы все в одном процессе не держать? Тем более, что "другие машины" - это уже какой-то энтерпрайз на тыщи человек, на 10-100 хватает одного сервера.

[identity profile] binf.livejournal.com 2015-04-20 06:29 pm (UTC)(link)
не, ну так для маленьких надо делать self-hosted. OWIN например, очень гут

[identity profile] enternet.livejournal.com 2015-04-20 07:15 pm (UTC)(link)
Да ради бога. Только не надо этой фиксации на IIS. Можно уже закопать стюардессу. Пишите под катану (последний MVC) это и майкрософт рекомендует и будет там один негасимый процесс.
gemelen: (Liquid Sphere)

[personal profile] gemelen 2015-04-19 07:29 pm (UTC)(link)
К этому есть две хорошие цитаты автора по ссылке в посте:
The paramount technical challenge facing the majority of .NET developers today looks like building Web APIs that serve JSON over HTTP, judging from the BUILD 2014 sessions. Distributed computing, consistent hashing, high availability, data visualization, and reactive computing are concepts that a virtually absent from the any conversation around .NET.
...
Compare this to the Java ecosystem: virtually every major .NET project is a port of something originally evented for the JVM. I’m looking at you, NAnt, NUnit, NuGet (Maven), NHibernate, Lucene.NET, Helios, Akka.NET, and so on
:)
PS: капча внезапно доставляет

[identity profile] binf.livejournal.com 2015-04-20 06:33 pm (UTC)(link)
Для больших приложений - azure, меньше тыщи человек - self hosted