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] denisioru.livejournal.com 2015-04-19 09:11 am (UTC)(link)
Когда я слышу "садись и пиши с нуля" хочется воткнуть вилку в глаз тому человеку. Как правило это дятел, который не в состоянии или без желания разбираться в библиотеках чуть сложнее уровня "установил, а оно не заработало сразу так как мне надо".

[identity profile] metaclass.livejournal.com 2015-04-19 09:43 am (UTC)(link)
Ок, откуда столько портов жабьих либ тогда в дотнете? Из воздуха появились, свыше даны?

[identity profile] denisioru.livejournal.com 2015-04-19 09:46 am (UTC)(link)
По разным причинам. Но для конечного разработчика изобретать свои велосипеды лютое зло. Заказчик платит за решение своих задач. А пока что я убежден, что те кто пилит свой блэкджек и не использует готовы либы - имеет слишком дохрена свободного времени и ему либо надо зарплату резать либо переводить на другую должность по несоответствию.

[identity profile] metaclass.livejournal.com 2015-04-19 09:52 am (UTC)(link)
Ну ок, предположим, точно так же думает разработчик по ссылке (там прямо написано - времени не было, надо было для заказчиков софт пилить). Какое решение ты предложишь ему, вместо того, чтобы спортировать готовый, удобный и весьма популярный фреймворк c jvm на .net?

[identity profile] denisioru.livejournal.com 2015-04-19 09:55 am (UTC)(link)
Я не знаком с требованиями разработчика по ссылке. Но фреймворков в данном направлении запилено уже достаточно - с разной степенью готовности, гибкости, стоимостью и прочими. Пересчитай время портирования в деньги, накинь часов на юнит-тесты (т.к. большинство популярных и/или коммерческих так или иначе тестируются), накинь ещё часов на документацию. Посчитай сумму. Действительно на рынке нет готовых библиотек, стоимость которых укладывается в эту сумму?
Edited 2015-04-19 09:56 (UTC)

[identity profile] metaclass.livejournal.com 2015-04-19 10:05 am (UTC)(link)
Тут по старой ссылке - нет http://stackoverflow.com/questions/2186222/any-good-implementation-of-actors-for-c
В википедии - вроде есть: http://en.wikipedia.org/wiki/Actor_model но все запилены достаточно недавно, или заброшены или альфа.


Большинство .net разработчиков имеют именно такой mindset - если этого нет в микрософте, значит это никому не нужно, а писать свое ни в коем случае нельзя и садятся делать синхронные crud-сервисы из подручных материалов. Ну или переходят на жабу со скалой.
Edited 2015-04-19 10:07 (UTC)
gemelen: (Liquid Sphere)

[personal profile] gemelen 2015-04-19 10:08 am (UTC)(link)
Вкратце это должно звучать "если на дотнете делать что-то сложное и осмысленное - выкинь дотнет и возьми Java/Erlang/whatever".
Потому что пример вот этих вот ребят как раз. Я пробежался по остальным постам в этом же блоге и ситуация складывается весьма забавная: с начала используя линукс как платформу запуска и Hadoop+Hive для map/reduce, они занимались прикладным дрочерством и писали аналоги уже существующих вещей или всё-таки брали уже существующее (как Cassandra против первоначального RavenDB). И после всех этих радостей оказалось, что их стартап не успевает делать бабло и софт под запросы рынка.
Также, в камментах к этой записи виден denisio, чей дотнет головного мозга говорит сам за себя не первый год.

[identity profile] denisioru.livejournal.com 2015-04-19 10:09 am (UTC)(link)
Не знаю насчет большинства, я считаю в деньгах. Конечный вариант ПО должен укладываться в заданную стоимость. Тоесть я не против сделать всё охуительно красиво, правильно, гибко и расширяемо (ну с точки зрения данного момента и одного человека :)) - но если этот вариант будет в разы дороже и будет делаться также дольше, потребует больше времени (=денег) на саппорт, чем использовать готовые библы - и пусть оно не так будет красиво и где-то асинхронность придется сделать руками, а не использовать возможность библиотеки - но софт будет дешевле в разы - я выберу второй вариант.

[identity profile] 39d9bn.livejournal.com 2015-04-19 10:40 am (UTC)(link)
метакласс, зачем ты пытаешься строить сложные фразы? ты надорвешься и станешь инвалидом

[identity profile] tiendil.livejournal.com 2015-04-19 11:41 am (UTC)(link)
Когда я слышу, что кто-то хочет воткнуть вилку в глаз человеку, я хочу воткнуть вилку в глаз тому человеку, который хочет воткнуть вилку в глаз.

В любом софте есть масса нюансов, которые определяют как именно этот софт удобнее, быстрее и качественнее писать. Разработчики стороннего софта, в принципе, эти нюансы учесть не могут. Поэтому утверждать об абсолютном вреде велосипедостроения, как минимум, глупо и некомпетентно.

[identity profile] denisioru.livejournal.com 2015-04-19 11:44 am (UTC)(link)
Хорошо, перефразирую. Если есть возможность сэкономить десятки-сотни-тысячи человекочасов путем покупки или использования готовой библиотеки, даже путем некоторой адаптации ПО к ней - я выберу этот путь. Ибо софт выйдет быстрее, а разработчики смогут занятся теми задачами, за которые платит кастомер, а не за велосипеды.

[identity profile] maxdz.livejournal.com 2015-04-19 11:47 am (UTC)(link)
>переезда своего приложения с дотнета на jvm

.net... jvm... C/C++!

[identity profile] thedeemon.livejournal.com 2015-04-19 12:01 pm (UTC)(link)
Теперь придется еще и себе воткнуть.

[identity profile] anonim-legion.livejournal.com 2015-04-19 12:44 pm (UTC)(link)
Deplhi

[identity profile] jakobz.livejournal.com 2015-04-19 01:47 pm (UTC)(link)
Подтверждаю - майндсет 90% дотнета именно такой. Запили какой-нибудь хитрый хелпер или утилитку - и на тебя уже смотрят косо, типа "велосипедист".

Ну, например, я например реально слышал что-то типа "ну ты навернул функциональщины" за вот такой примерно хелпер:

T Run(this Logger log, string description, Func fn) {
.. таймеры-логирование-try
fn();
.., catch и записать исключение, сколько времени заняло, и т.п.
}

От такого подхода, со временем, мозг отключается до того состояния, когда кроме CRUD он вообще ни на что не способен.

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

Дотнетчики выбирают второе, т.к. первое для них - табу. И это чисто .net-специфика.

[identity profile] denisioru.livejournal.com 2015-04-19 01:58 pm (UTC)(link)
На любой случай жизни конечно нет готовых либ. Но есть другие, которые могут использоваться. Тоесть конечно можно уперетца и сказать "я хочу акторов и асинхронно и буду портировать с жавы", а можно сказать "портирование займет N человеко-часов, что мы выиграем в итоге?" - и вот тут зависит от ответа. Если это действительно нужный продукт, который удачно впилица во все наши продукты и сэкономит сотни-тысячи человеко-часов (кстати тут тоже вопрос - оно окупит?) - тогда обсуждаемо. Если это просто хотелка для поддержания собственного эго или попытка занятца хобби в рабочее время - тогда сразу нахуй.

Ну и стереотипы не всегда работают. Разные задачи, разные люди, те же линуксоиды или жависты - тоже притча во языцах, но случаи бывают разные.
Edited 2015-04-19 14:00 (UTC)

[identity profile] metaclass.livejournal.com 2015-04-19 02:14 pm (UTC)(link)
Те же самые люди тот же самый хелпер в составе какой-нибудь готовой либы 100500мб размером съедят спокойно :)

[identity profile] jakobz.livejournal.com 2015-04-19 02:36 pm (UTC)(link)
Ага. Особенно если она от MS, или Фаулер сказал что это такой паттерн.

[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 минут выполнять какую-нибудь обработку" в таком варианте вообще поместить некуда.
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] worm-ii.livejournal.com 2015-04-20 09:26 am (UTC)(link)
Ну, если заказчик тоже будет готов несколько адаптировать свои требования к ушам сторонней библиотеки, торчащим из конечного результата, то тогда, конечно, да. А вдруг нет?

[identity profile] denisioru.livejournal.com 2015-04-20 10:02 am (UTC)(link)
Заказчику в подавляющем большинстве случаев глубоко пофигу, какие акторы и клоуны внутри софта и насколько они асинхронны. И уж тем более какие библиотеки используются при разработке.

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

[identity profile] permea-kra.livejournal.com 2015-04-20 01:05 pm (UTC)(link)
Вот смех смехом, а под кресты апп-серверы есть. И веб, соответственно, тоже. И библиотек пожалуй даже побольше, чем под дотнет.

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

[identity profile] binf.livejournal.com 2015-04-20 06:17 pm (UTC)(link)
Мой велосипед двоичной сериализации работает примерно в 2 раза быстрее и делает файл примерно на порядок меньше, чем protobuf-net, и соответственно на порядок быстрее и компактнее официального сериализатора binaryformatter. это можно считать аргументом в пользу велосипеда? или надо до упора юзать уёбищные инструенты?

[identity profile] metaclass.livejournal.com 2015-04-20 06:21 pm (UTC)(link)
Я считаю, что надо использовать то что правильно технически.
А религиозные фанатики реюза говна и менеджеры с "мы же не должны писать для себя инструменты" должны сдохнуть.

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

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

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

[identity profile] theaspect.livejournal.com 2015-04-21 06:06 am (UTC)(link)
Парадокс самореферентности же не решается

[identity profile] theaspect.livejournal.com 2015-04-21 06:07 am (UTC)(link)
и во всех ад пиздов с портированием

[identity profile] binf.livejournal.com 2015-04-23 01:38 pm (UTC)(link)
пойду расскажу кастомеру, что он должен дождаться UI библиотки на erlang для winRT или похоронить свою винду с Metro и перейти на бубунту, потому что инструменты в java круче аналогов дотнэта. Больше эрлэнга, больше хардкора!





gemelen: (Liquid Sphere)

[personal profile] gemelen 2015-04-23 05:33 pm (UTC)(link)
Да это ваше и их право дрочить вприсядку и понимать слова так как вам удобно.

[identity profile] binf.livejournal.com 2015-04-23 06:58 pm (UTC)(link)
Жабоебизм мешает вам нормально соображать. Удобство здесь не при чём, это прямое следствие из "выкинь дотнет и возьми Java".
gemelen: (Liquid Sphere)

[personal profile] gemelen 2015-04-23 07:22 pm (UTC)(link)
До чего же вы тупы. Подите нахуй.

[identity profile] binf.livejournal.com 2015-04-23 08:03 pm (UTC)(link)
Ты поц и даун. Сдохни