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

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

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

Date: 2015-04-19 09:11 am (UTC)
From: [identity profile] denisioru.livejournal.com
Когда я слышу "садись и пиши с нуля" хочется воткнуть вилку в глаз тому человеку. Как правило это дятел, который не в состоянии или без желания разбираться в библиотеках чуть сложнее уровня "установил, а оно не заработало сразу так как мне надо".

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Date: 2015-04-20 09:26 am (UTC)
From: [identity profile] worm-ii.livejournal.com
Ну, если заказчик тоже будет готов несколько адаптировать свои требования к ушам сторонней библиотеки, торчащим из конечного результата, то тогда, конечно, да. А вдруг нет?

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

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

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

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

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

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

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

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

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

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

capcha: no-brainer

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

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

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

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

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

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

Date: 2015-04-19 07:29 pm (UTC)
gemelen: (Liquid Sphere)
From: [personal profile] gemelen
К этому есть две хорошие цитаты автора по ссылке в посте:
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: капча внезапно доставляет

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

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





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

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

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

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

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

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

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

Date: 2015-04-19 12:44 pm (UTC)

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

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

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

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

Profile

metaclass: (Default)
metaclass

April 2017

S M T W T F S
      1
2345678
9101112 131415
16171819202122
23242526272829
30      

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jun. 6th, 2025 06:26 am
Powered by Dreamwidth Studios