Компания Microsoft представила новый значительный выпуск платформы .NET 5, в котором предоставлена поддержка Linux, macOS и WebAssembly на архитектурах x86, x86_64, ARM32 и ARM64. В рамках .NET 5 пользователям предложен единый открытый фреймворк и runtime, которые можно использовать в различных областях разработки и на разных платформах. Выпуск .NET 5 сформирован благодаря унификации .NET Framework, .NET Core и Mono. На основе .NET 5 можно создавать многоплатформенные приложения, используя единую кодовую базу и общий процесс сборки, не зависящий от типа приложения...Подробнее: https://www.opennet.me/opennews/art.shtml?num=54066
хорошая попытка, M$, но нет
Не читал, но осуждаю?
M$ пользуется ресурсами сообщества, теми, которые пляшут под их дудку. Но не даёт права голоса сообществу, тем, которые видят иначе. Для M$ это win-win. И открыто, и "свободно", но развитие только в одном, выгодном им, направлении.Остаётся надеяться, что они не потопят Mono слишком быстро.
Вообще-то у всех так. Произвол Главных Разработчиков и Сопровождающих - самое мерзкое, что есть в СПО. Даже AGPL менее мерзка.
AGPL не мерзка вообще - это способ не дать утащить разработки по проприетарным норам. И "произвол" - не произвол, как раз пока свободная лицензия, есть BDFL - человек, а не громоздкая контора, и софт вменяемого размера. Недовольные уходят в форки, закрыть код всё равно нельзя - и всё хорошо. А вот если у тебя какая-нибудь BSD лицензия паршивая, политика определяется не человеком, а многоногой гадиной-комитетом, да ещё и софт такой, что хрен форкнешь - вот тут уже печально.Лицензия здесь, кстати, первична - вспоминаем эпопею с ораклом и mysql/openoffice, owncloud, openwrt и так далее.
>какая-нибудь BSD лицензия паршиваяКак, всё-таки, корёжит сектантов от большей свободы, чем у них. Ну откажитесь от всего более свободного кода, раз такие принципиальные. Так ведь нет, будут использовать SQLite, апач и лису, но плеваться не перестанут.
С чего бы меня заботила "большая свобода" для проприетарщиков?
>Остаётся надеяться, что они не потопят Mono слишком быстро.Они его уже потопили. С покупкой Xamarin. Nat Friedman взялся в MS именно оттуда. У моно своего SDK давно уже нет, всё собирается майкрософтовским, с телеметрией, которая сначала её отсылает, а потом пишет "выставьте такую-то переменную, чтобы отключить телеметрию".
Супер!
> .NET 5 продолжил .NET Core 3.0 и пришёл на смену .NET Framework, который отдельно больше развиваться не будет и остановится на .NET Framework 4.8.Что за камасутра там происходит?!
Раньше были 3 ветки .net
1) .net framework
2) .net core
3) monoТеперь останется только .net core . Это короче чисто историческая херня
Под линукс этим вообще кто-то пользуется? Лучше/хуже плюсов?
Пятой версией в продакшн? Наверное нет, не пользуются.
А версии 2, 3, да, есть в продакшен!)
глюкавое поделие, обновил студию (с обновой ставится NET5), обновил некоторые пакеты и все проект не запускается, старые пакеты для которых еще нет обновления, используют примитивы которые удалены, охренеть консистенстность платформы, будем ждать пока доделают до ума
сам накосячил и кто-то ему виноват
тупое, ищи issue на гитхабе
Ну да, там так всегда. Но они и предупреждают.
А зачем с плюсами сравнивать это другая песня. Если уж сравнивать то с java. Это как раз близнецы можно сказать.
Ерунду не говорите. Там от близнецов только архитектура выполнения. Синтаксис, логика построения и подход мыследуманья другой в НЕТ немного. Если там сделали, прям как НАДО, нативную компиляция (пошёл проверять), то для бизнеса этот швейцарский нож будет идеален.
Если "бизнес" уже вложился в JEE переход на новую платформу вряд ли имеет смысл.
Нет никакой разницы. Для рядового программера всё одинаково.
О да. Все странности скопировали из джавы, даже ковариантные массивы
Коваритивность вообще решение скорее волевое. Оно не бывает хорошим или плохим. Ну, вернее, оно всегда плохое. Причём без сравнительных категорий.
К слову, а чем вам ковариативность в данном случае массивов вам мешает? Ну знаете вы, что массивы в Яве ковариативны и что? Кушать теперь не можете? Не пользуйтесь ковариативными массивами, пользуйтесь какой-нибудь обобщённой коллекцией. В чём тут проблема-то?
> В чём тут проблема-то?У меня проблемы нет, просто, к слову заметил, что в c# затащили всё без разбору.
Вот например методы объекта:
ToString: реальную логику на него завязывать нельзя, так как заколебаетесь неявные приведения к object искать (нетипобезопасно), а иметь у всех объектов метод для дебага - как то непонятно, зачем. Опять же, все по разному понимают, зачем этот метод нужен.
Equals/GetHashCode: У нас была волна собеседований, и первый вопрос, который я задаю - как правильно вот это дело переопределять и когда.
Так вот, часть из кандидатов даже не знает, зачем они нужны (!), другая переопределяет их неправильно, третие вообще переопределяют их просто так, потому, что не знают, нужно ли вот сейчас его переопределить или нет.
Люди с десятилетним опытом тупят на такой мелочи, хотя далеко не джуниоры.
Понимаете, вопрос эквивалентности очень сложный вопрос. Более того, я не знаю его определённого разрешения. Хотя я -- "определённо" ложик-гик. Для меня Слупецкий-Борковский и Чёрч просто любимые писатели. И я не нахожу ответа как быть при определении эквивалентности или равенства.
По ощущениям, по назначению Equals/хешкод применяется меньше чем для 10 процентов типов.А есть эти методы у всех. У репозиториев, сервисов, коллекций, у любых обёрток.
По такой же логике можно было бы запихнуть в object компаратор для сортировки или dispose. А че, если, возможно, тип будет использоваться, в словарях, то, возможно, по нему надо бы и сотрировку уметь проводить.
По сути, в типе object должен быть только один метод, gettype. В том же расте эквивалентность надо явно писать, только если она используется. Иначе ее тупо нет.
Опять же, про непонимание, как это все работает:
Каждый .net разработчик на собесе говорит: структуры сравниваются по значению.
Окей, говорю я, то есть, если они сравниваются по значению, то у них просто сравниваются байтики и метод equals не будет вызываться для вложенных полей? И тут наверное половина людей тупить начинает.То есть, на лицо куча неявного поведения, которое нужно заучить, и все вокруг двух методов, которых могло бы и не быть. Захотел свой тип в словарь положить - изволь явно указать как их хешировать и сравнивать. А до этого момента даже не думай об этом.
Вероятно, такая архитектура обусловлена отсутствием дженериков на ранних версиях дотнета.
Не знаю, у меня наличие умолчального поведения эквивалентности или сравнения не вызывает никаких вопросов. Потому что хотя бы одна категория эквивалентности есть у абсолютно всех объектов. Да, по умолчанию объект эквивалентен только самому себе. И это нормально. Вот с хэшами хуже. Но тоже более менее логично.
Механизмы сравнения в Яве у меня тоже особого отторжения не вызывают. Всё понятно устроено. Хотя иногда становится препятствием.
По-моему, вы категорию "значения" слишком буквально понимаете, а она определяется... хм... семантикой домена, т.е. это воля разработчика что считать значением. Главное общие правила транзитивности и рефлективности не забывать и соблюдать. А то иногда такого наворотят, забывая, что если А = Б, то должно быть и Б = А, и если А = Б, а Б = В, то и А = В, а В = А.
И, нет, не вижу как тут наличие или отсутствие обобщений что-то может изменить. Для них же ещё параллельную линию иерархии вкрячили -- эту вашу любимую ковариативность.
Меня скорее смущает, что получаются линии а) типовых отношений, б) отношений сравнения и в) ещё и ковариативности. По-моему, многовато как-то. По-моему, даже среди очень опытных разрабов не многие способны осознать их взаимоотношения. Что, в общем-то, ведёт к неверным решениям. Но как уж есть.
Т.е. проблема не в наличии умолчального поведения, а в непонимании или недостаточной продуманности поведения проектируемого. Да, из-за его переусложнения, на мой взгляд, и общих родовых логических изъянов ООП.
> Под линукс этим вообще кто-то пользуется?Маловато, потому что MS удобненько опоздал с релизом кроссплатформенного .NET на несколько лет. Причем как бы красиво ни была написана новость часть кусков .NET по-прежнему работают только на платформе Windows.
> Лучше/хуже плюсов?
А вот нельзя сказать, пока не будет понятна задача, которую вы решаете. Если ваше приложение не требует ручной работы с ресурсами компьютера и вы спокойно можете позволить себе GC, то ответ да, однозначно лучше. Лучше, потому что при сохранении прочих равных возможностей вы приобретаете скорость написания кода.
Если вы хотите вручную рулить указателями и получить высокопроизводительный нативный рантайм, то ответ однозначно нет. Хотя есть функционал работы с указателями и unsafe, сборка нативных приложений вне Windows 10 не ожидается раньше .NET 6, поэтому нет смысла переходить с С++. С другой стороны они научились хотя бы экспортироваться.Опять же, если мы говорим про ООП-решения для бизнес-приложений или приложения с GUI, то это подойдёт, там удобно. Оно скорее конкурирует с Java, а не с С++. А если ваши приложения на С - проходите мимо, это не для вас.
Отдельно нужно в этой связи упомянуть Rust, потому что самое примечательное тут как раз то, насколько далеки Rust и .NET. Все фанатичные преимущества раста не играют никакой роли и не могут применяться в сравнении с .NET, потому что цели и назначения разные. =)
Я бы ещё Go упомянул:) нативно и с GC
> нативно и с GCТак нативно или с GC?
Вы дурачек? Вам написали нативно и с GS.
Как будто для C и C++ нет GC.A garbage collector for C and C++
https://www.hboehm.info/gc/> The Boehm-Demers-Weiser conservative garbage collector ...
Используется, например, в gcc Object-C, Inkscape, GNU mailutils, GNU Guile, Neko VM, NiX package manager, parser3 (parser.ru).
Вы разделяете нативный для языка GC, и сторонний GC, прикручиваемый как библиотека?
Я отвечал на "нативность" в смысле нативных программ (т.е. компилируемых в машинный код).
да. позволяет нативно в контейнерах крутить, и готовым оркестратором, кубером например, рулить
Кручу в кубере верчу, обмануть хочу.
Да. У нас в серьёзном продакшене (финансы). Доставляет что стек может быть сильно гибридным (из кучи разных ОС, контейнеров, мобильных платформ и прочего, а команда разрабов при этом одна и та же).
Финансы это не "серьёзный продакшэн", а куча гуана.
> Да. У нас в серьёзном продакшене (финансы).Никогда небыла даже близко.
> из кучи разных ОС, контейнеров, мобильных платформ и прочего,
Ну вот сами и опровергли
Сore пользовался. Глюков много и патчей нет годами. А так -- норм. Но это не плюсы ни разу. Это Ява, только менее понятная в плане сборки и работы с проектами. Ну, на мой взгляд.
пользуюсь. патчи выходят регулярно
известных проблем мало
Выходят, да, и даже много. Вот только не те.
>> В следующем выпуске .NET 6 в состав будут включены наработки проектов Xamarin и Mono, которые позволят обеспечить поддержку платформ iOS и Android.Тот самый замарин, который настолько кроссплатформенный, что нынче в бубунтах с райдером не запущается? А поддержку из коробки гуя в линухе в .NET 8 ждать?
Когда WinForms, WPF в Linux завезут? Кто-то публиковал под Linux приложения с помощью ClickOnce?
> Когда WinForms, WPF в Linux завезут?Первое на линуксе не требуется. WinForms - это примерно как стандартный тулкит X Server. Он в Windows-то оставлен для совместимости. Зачем тащить в Linux барахло 30-летней давности заточенное под ядро (именно ядро) другой ОС?
Второе зависит от WDDM и DirectX от слова "совсем". Как вы думаете что лучше и проще сделать? Написать новый кроссплатформенный тулкит на базе Xamarin.Forms, портировать во все ОС WDDM и DirectX или обмазаться обёртками в стиле wine? ИМХО ответ очевиден.
> Первое на линуксе не требуется. WinForms - это примерно как стандартный тулкит X Server. Он в Windows-то оставлен для совместимости. Зачем тащить в Linux барахло 30-летней давности заточенное под ядро (именно ядро) другой ОС?Тогда его надо выкинуть из .Net тоже. А то ты написанные программы будут тут работать, а тут не работать. Не получится подвинуть джаву, фишка которой в стандартизации.
Одна из причин популярности Windows в том, что они не выкидывают, а тащат для обратной совместимости старье десятилетиями. Откройте Windows 10, установленную со стандартными настройками. Попробуйте создать папку на рабочем столе с именем con или prn. Подумайте почему нельзя и почему у вас возникает странная ошибка (привет из msdos).Смысл в том, что WinForms не развивается и не будет развиваться никогда. Он старый и исторически сидел в ядре (win32k.sys). После того как Windows перешел на композитный рабочий стол целиком и полностью (8.0+) эти компоненты оставлены ради обратной совместимости.
Одна из причин низкой популярности Linux на десктопе в том, что он делает наоборот. Ломает API и вынуждает переписывать весь софт (X -> Wayland). Имеет много опций для выполнения одной и той же задачи при полном отсутствии единого стандарта между дистрибутивами (GTK, Qt, EFL,..).
> Не получится подвинуть джаву, фишка которой в стандартизации.
В Java нету WinForms, слава Богу. Отсутствие поддержки копролитов на тех платформах, где их не завозили недостатком не является.
> А то ты написанные программы будут тут работать, а тут не работать.
Если разработчик не захочет поддерживать платформу, то он и не станет. Тот кто создаёт кроссплатформенное приложение изначально понимает, что к ряду библиотек привязываться нельзя. Улучшение кроссплатформенности в .NET это строго функционал для разработчиков. Тем кто пытается запустить старьё с новыми рантаймами на Linux лучше обратиться в CodeWeavers
Вообще, это болячка линуксоидов-фанатиков. Улучшение кроссплатформенности новых программ на .NET 5 ни в коей мере не отразится на старых. Разработчики не будут их переписывать. В чем смысл?
Джава сама по себе огорожена ещё круче всяких винформсов. К счастью медленно но верно её выдавливают
Чем например Ява огорожена?
так хрен редьки не слаще, все равно нет кроссплатформенныъ гуев в Net5, а в джава есть
А как же avalonia? https://github.com/AvaloniaUI/Avalonia
> А как же avalonia? https://github.com/AvaloniaUI/Avaloniaтак это ж 3rd party
Формально да, но MS их поддерживает.
Фишка джавы в уродливых гуях, с которыми она самостоятельно движется в известном направлении( и это вовсе не «успех» )
Да чего в них уродливого-то? Разные есть.
> Не получится подвинуть джаву, фишка которой в стандартизации.А я то и не знал. Для энтерпайз оборудования с мордой на энтерпрайз джаве использую строго определённую версию. А так как оно разношерстное вот и стоит куча разных вариантов джавы. И все стандартные. И нет, дело не в истечении срока годности сертифкатов.
WPF ждали, но кое-кто в МС встал в позу и сказал что даже если прилетят пуллреквесты с готовой имплементацией гуя под линуксы - никто это не будет втаскивать, не в интересах компании. Такой вот особо огороженный опенсорс
Там было очень большое и публичное обсуждение этого вопроса, и я его читал.Вот по памяти несколько тезисов.
1) Внутрь архитектуры WPF не заложена кроссплатформенность.
Если вы внимательно посмотрите на то как устроен WPF, вы увидите, что большая часть классов на низком уровне зависит от системных компонентов Windows и модулей ядра. Кроссплатформенный WPF - это оксюморон. Причем, когда речь зашла про AvaloniaUI, MS сказал, что никогда таким заниматься не будет.2) Отвязать или бесшовно заменить платформозависмые компоненты нельзя
Нет промежуточного API между ассемблями WPF и системными компонентами. WPF предполагает наличие функционала в ОС, а это значит, что WPF должен привязываться... к wine? Или какой-то другой реализации WinAPI в Linux. Но ведь Linux не предоставляет WinAPI и не должен.3) MS жестко заявил об отказе от принятия патчей
По их мнению любая попытка добавить кросплатформенность внутрь WPF либо будет жутким костылём, эмуляцией или обёрткой, либо сломает совместимость с имеющимися приложениями. Причем, скорее сломает совместимость, чем всё остальное, ведь Avalonia же вам не WPF.Осознав запрос на кроссплатформенный тулкит при наличии нишевого UWP, WinForms, WPF и Xamarin они сели делать новый и грозятся показать к .NET 6, взяв за основу единственный который более современный и более кроссплатфоорменный - Xamarin.Forms.
> никто это не будет втаскивать, не в интересах компании
Ах если бы... писать имплементацию "гуя под линуксы" это громко сказано. Правильно так: обвешать WPF линуксоспецифичными костылями, которых тонна под каждый дистрибутив и пусть это поддерживает MS, а не могучие сборщики 1001 несовместимого с самим собой линукса.
> Такой вот особо огороженный опенсорс
Правильно, так и надо. Автор не должен принимать код, который ему не нравится. Хотите по-своему - делайте форк.
>Но ведь Linux не предоставляет WinAPI и не должен.Это ещё почему? В Linux есть множество различных GUI API(Gtk,Qt,Tcl,…), почему не может быть свободной реализации WinAPI и DirectX в штатной поставке? Тем более, что всё это не привязано намертво к реестру и модели прав WinNT, только секцию ресурсов переделать(меню,диалоги,иконки), чтобы она тянула файл ресурсов из /usr/share/progname, а не из самого ELF-файла.
MS почему то не постеснялись реализовать Linux API.
> почему не может быть свободной реализации WinAPI и DirectX в штатной поставке?Может, но НЕ ДОЛЖЕН.
То что на самом деле нужно, так это LinuxAPI на уровне ОС в юзерспейсе, единое для всех дистрибутивов, гарантированно работающее. LSB - это мало.
> в бубунтахНет, https://rider-support.jetbrains.com/hc/en-us/articles/360000...
> с райдером
Да, Лучше чем с Visual Studio. Jet brains в этом плане молодцы
Не, это Коре. Просто чуть библиотек накинули. И оно не всё "кроссплатформенное" на деле.
Когда гуи завезут? Будет КорКде?
https://avaloniaui.net/
В следующем ноябре выйдет .NET 6 с поддержкой MAUI - кроссплатформенного UI.
Разработчики wine-mono заявили, что, благодаря открытому когду, это будет работать в Wine практически без проблем, прям из коробки.
Звучит заманчиво.. интересно узнать, размер проекта после сборки намного ли увеличится
А зачем тебе его статически линковать? wine как и Qt уже лежат на дисках большинства.
На быстрый JSON кстати сильно плевались, потому что у него части фич не было к которой в других сериализаторах уже попривыкли и активно юзают
Этого никто и не скрывал с самого начала. Хотите фичи — терпите меньшую производительность.
здесь МС нам наглядно объясняет что не собирается развивать линукс, как они везде официально пишут, а только проталкивать везде свое г
За .NET, Java, JS надо высылать и расстреливать. Можно не насмерть, но чтоб больно.
> Выпуск .NET 5 сформирован благодаря унификации .NET Framework, .NET Core и Mono.Что означает "унификации"? Я могу без libmono дёргать mono_XXX API из .NET 5?
https://github.com/AaronRobinsonMSFT/DNNE
От Microsoft нам ничего не нужно!
Удваиваю: горбатого только могила исправит.
А от гугла нужно?
По-моему майрософт в сотню раз адекватнее гугла.
Специалист по сортам?
Этой новости однозначно большой и жирный минус.
Ну твоему комментарию точно минус
Да да, как мы посмели оскорбить твой обожаемый M$
Новость превосходная, хотя и несколько запоздавшая.Ситуация, кстати, довольно забавная:
Когда-то майки забабахали си-шарп в противовес джаве, засунув в него все то, чего жабе сильно не хватало и что Гослинг туда впихивать не собирался (зачастую банальным "не хочу", у кого есть желание может по рассылке полазить). Примитивные типы (не все есть объект - число это просто число), структуры на стеке (меньше работы gc), лямбды, феноменально простой pInvoke заместо кошмарного jni, linq(!!!) и т.д. и т.п. Это была бомба, обещавшая лучший язык тысячелетия.
И что же майки решили сделать? Они решили "пускай этот лучший язык будет прибит гвоздями к нашей ОС - кто хочет лучший язык, пусть платит нам деньги за ОС. Шарп потащит Виндовс вперед, как ракетоноситель, в светлое и богатое будущее!".
Но оказалось, что их ОС настолько плоха, что даже лучший в мире язык не может ее тянуть вперед как паровоз. Наоборот, ОС утащила язык в трясину, в которой медленно тонула сама. И шарп практически умер. Вместо него всякие недоделки стали рожать всякие недоязыки, которые успешно заняли пустующую нишу.
Однако, к 2019 году майки наконец прозрели, что прocрали все полимеры, и решили ударными темпами возвращаться. Получится ли у них? Возможно. Ведь шарп действительно прекрасный и удобный язык. Особенно на фоне того, как оракел пытается похоронить джаву.
Как же тошно читать сообщение от анального раба Майкрософт.
«Анальный раб» Microsoft называет одно из главных детищ Microsoft **вном. Л — логика.
Гражданин, завязывайте курить линолеум.
C# действительно лучше Java:) в Java даже properties нет string Name { get; set; }. В Typescript кстати тоже есть. Но все портит only Windows. Я как-то давно присматривался к Mono. У меня сотрудник плюются от Java после C#. В конце концов я понял что он прав и больше не пишу джабе уйдя в другие языки.
Windows only только GUI: WPF & WinForms. И то есть варианты типа авалонии. Калькулятор вон недавно на линукс перетащили.
да хватает там говна, много что нереализованоприходилось даже моно патчить, и наоборот когда слазишь на чистый коре, то понимаешь что в моно многое было сделано лучше
в общем пилить они его будут еще года 2 до нормального состояния,
и комьюнити к сожалению там кусок говна
большей частью индусы макаки обиженные
Сейчас есть Kotlin, который ничем не хуже C# и совместим с Java-кодом.
Хуже. Хотя пытается догонять, да.
Ну у котлина есть пачка приколюх:
1. Компиляция в js;
2. Компиляция в нативный код; (ради ios)
3. Компиляция в java-код;
4. Поддержка от гугла для Android;
5. Куча сахара специально для DSL. (Гуглим Jetpack Compose);
Причём всё это работает так хорошо, что jb делают свой space целиком на котлине (бэк, фронт, мобилки)
Всё это мишура. Шарп от Явы в писанине ничем ни лучше, ни хуже. Никакой принципиальной разницы нет. Но в Яве сложное делать проще -- инструментарий куда более зрелый и проработанный.
> Наоборот, ОС утащила язык в трясину, в которой медленно тонула сама.Вот да! На протяжении многих лет С# не выбирался как язык для проекта из-за подвязок на Windows и вообще из-за ассоциирования.
> Однако, к 2019 году майки наконец прозрели, что прocрали все полимеры, и решили ударными темпами возвращаться.
Они прозрели раньше, когда Балмера прогнали. Просто крупные бизнесы шевелятся долго. Переосмысление поведения занимает годы.
C# прекрасно решает те задачи, за которые берётся и не лезет куда не просят (на низкий уровень) в отличии от С++. Современный переделанный ASP.NET Core, который типа теперь 5 - это мощный конкурент PHP, собственно почему MS и отказывается самостоятельно меинтейнить PHP под Windows. Ну и самое главное, прощай IIS! Для работы современной .NET вебни не нужна привязка к системному CLR, подаваемому через IIS. А те кто продолжает использовать IIS (как сервер приложений, а не вебовый) тому нужно переконфигурироваться соответственно для отказа от встроенных реализаций и стандартных системных компонентов.
> Особенно на фоне того, как оракел пытается похоронить джаву.
Java вечно вещь в себе. Они там всё на этой java имеют своё от начало и до конца. Java не инклюзивна. MS идёт вообще в другую сторону, они пытаются развивать экспорты, нативные билды и раздавать свою ивент-модель и стандартную библиотеку для связки с другим софтом без высокоуровневого API. Посмотрим что получится.
Борода. У создателя не было было бороды.
У созданых женщинами языков сложнее определить.
Ничего, сейчас и у женщин может быть борода!Даже член.
> Ничего, сейчас и у женщин может быть борода!
> Даже член.Не хочу смущать жертву современной системы образования (и зомбоящика с зомбонетом), но "сейчас" тут лишнее.
Взамен, советую пересилить себя и ознакомиться с наукой о живых существах (биология), в частности с такими вещами как "онтогенез", "гормоны" (и их влияние на фенотип - анонимов ждет много открытий чудных), а так же "хромосомы" и возможные сбои всех этих штук.
Да? Гормоны можно было купить хрен лет до нашей эры? Не знал. Спасибо, что просветили.
> Да? Гормоны можно было купить хрен лет до нашей эры?Проще. Их можно было (пере или недо)получить абсолютно бесплатно уже тогда, из-за сбоя этого самого "гормонального механизма". Из-за недоедания, авитаминоза, болезни каких-либо органов и прочих "прелестей". Или хирургического вмешательства.
Уж излишней растительностью на женском лице или женоподобными мужчинами никого не удивить было.> Не знал. Спасибо, что просветили.
Всегда пожалуйста!
Но все же, на досуге почитайте хотя бы учебник по биологии для 8-9 классов.
Да? Вы там бывали? Есть достоверные сведения? Их нет. Тот объём гормональных препаратов, который сейчас используется для "трансперехода", никогда и ни при каких природных условиях не был доступен. Поэтому -- это бизнес. Продажи и, да, типичное марксистское отчуждение. Отчуждение человека от тела, продажа ему его же тела.
> Да? Вы там бывали? Есть достоверные сведения?Сведения о кастратах, "хоровых мальчиках", евнухах? Или о "сбоях" в наборе хромосом (XXY)? Упоминания гермафродитов в мифах и сказках всевозможных народностей (Гермафродит - сын Гермеса и Афродиты)? А женский фенотип, несмотря на XY (из-за частичной или полной блокада тестостерона, как правило еще при развитии плода) - это теперь "болезнь" современности, потому что раньше солнце было ярче?
Ага, а ещё тогда антиподы жили. Вот, написано же. И даже "фотки" есть.
Потому что раньше гормонов и гормоноподобных препаратов в окружающей среде в таком неимоверном количестве никогда не было и быть не могло.
Вероятно, дело было не только в этом.
ШарпОвые приложения очень долгое время были жирнющими и тормозными и это помимо того, что их требовалось-таки компилить
Чувствуется что ты не программист. Я читал исходники Шарпа. Как буд то написано было студентами бесонными ночами. Надо и земля с джавой. Написали в язык полную туфту одноразовую.
Микрософт - это работает не трогай. А джава для души!
смешно такое читать
Верните WCF который вы удалили. Пока не сделаете я вынужден буду на NET Framework 4.8 сидеть.
Раб ты что тут раскричался. Лучше купи нашу лицензию.
На.Net давно есть возможность свободно клепать приложения.
> Раб
> купи нашу лицензиюДжавовую?
gRPC
Поддерживаю. Всем нужно глянуть gRPC, отличная вещь.
https://github.com/CoreWCF/CoreWCF
> разработки клиентских приложений WPF и Windows FormsОни что это дело портировали под линукс? Или поддержка линукса там ограниченная?
Нет, не портировали и не собираются.
GUI там кроссплатформенным стал или условно только?
развивается Avalonia UI и Uno Platform с помощью которого портировали калькулятор с fluent дизайном. Ещё и MAUI, но стабильная версия выйдет только с релизом Net 6
Uno - https://platform.uno/
Avalonia - https://avaloniaui.net/
До чего же забавно видеть на ЛОРе и опеннете вопросы про GUI в каждой первой теме про .net core :)
Столько лет значительная часть суровых линуксоидов презрительно использовали термины вроде "мышевоз" относительно ущербных ламеров, которым нужен был GUI, а не прекрасная консолька.
И вот теперь, когда все стремительно перетекает на Web-технологии, включая даже свежий корпоративный софт, местным завсегдатаям просто позарез оказались нужны WinForms и WPF! Существующие кросс-платформенные решения им не подходят, нужно непременно поросшие мхом виндоформы!
И не важно, что большинство известного софта, имеющий развесистый гуй, намного старше 10 лет и подобные приложения никогда и не писались на дотнете, не его это ниша.
Но нужно же придумать, почему кросс-платформенный дотнет - это полное говно? Вот ОФИЦИАЛЬНОГО гуя от микрософта нет! Примерно через год появится, но это уже дело будущих сражений. Уже сегодня хватает проблем - тот же VSCode, которым умеют наглость пользоваться все больше суровых линуксоидов, да еще и хвалить его в слух на этих страницах!
Ахахах, вот точно подмечено. Внезапно всем консольщикам зачесались гуи ))
Ага, GUI is the new Black. Хит сезона)
А за что VSCode хвалить? Ну работает и работает. Довольно унылая хрень. Как прочие массовые "среды разработки".
Пишут, что кросс-платформенный, опенсорс, активно пилится на гитхабе, есть куча плагинов на все случаи жизни. В два пинка можно развернуть его сервер у себя и кодить из любого браузера, хоть с айпада. Но раз вы говорите, что довольно унылая хрень, значит врут...
Зачем мне это? У всех давно всё "с полпинка" развётрывается. Это очередной "швейцарский нож", в котором вроде и всё есть, а всё непригодно для фактического применения. Очередное spring boot. Мне не нужно с полпинка, мне нужно понимать что делается и как. Мне нужен хороший редактор с развитыми возможностями компоновки кода как мне его удобнее будет воспринимать. А все эти полпинки -- в зад.
>>Зачем мне это?Начнем с того, что мир не вращается вокруг тебя. И если тебе лично что-то не нужно, это ничего не говорит о качествах продукта в принципе - есть те, кому нужно, и только совсем упоротый будет спорить с тем, что сейчас VSCode - это один из самых распространенных инструментов в этой области.
>>У всех давно всё "с полпинка" развётрывается.
Давай расскажи, как ты с полпинка развернешь сервер того же эклипса, чтобы иметь возможность работать со своими проектами из любой точки планеты из браузера. Единственный вариант тут - чистая консоль через ssh, что далеко не эклипс. Кому-то и vim'a через ssh хватит, но для огромного числа разработчиков VSCode - это как раз золотая середина между vim'ом и монструозными IDE от JetBrains и Microsoft. И это будет еще довольно быстро работать - по сути чисто-текстовый Web-траффик без картинок, который еще и отлично жмется. Чтобы получить такое в твоем эклипсе - это по сути надо что-то из разряда VNC.
>>Это очередной "швейцарский нож", в котором вроде и всё есть, а всё непригодно для фактического применения.
И ты, конечно же, без проблем приведешь небольший список того, что там непригодно и почему?
>>Мне не нужно с полпинка, мне нужно понимать что делается и как.
JSON с конфигурацией это сложно для понимания? Возможности расширения, позволяющие менять практически любые аспекты на свой вкус?
>>Мне нужен хороший редактор с развитыми возможностями компоновки кода как мне его удобнее будет воспринимать.
Пока что ты не привел ни одного конкретного примера, чем он плох как редактор. Только тирады про швейцарский нож и комбайны, что конечно же полная дичь. Никто не заставляет тебя делать из него комбайн - ты можешь включить Zen-mode, и у тебя на экране не будет вообще ничего, только документ и ни буквой больше. И ты можешь редактировать его, как тебе хочется - хочешь, как в Sublime, хочешь в vim-mode, или еще как, имея полный контроль над всеми параметрами.
Если тебе захочется сделать что-то в терминале прямо там - никаких проблем, но никто и не принуждает к этому.И в конечном итоге это все никак не отменяет того факта, что огромное количество людей используют VSCode, не смотря на то, что ноунэйм с опеннета с ними категорически не согласен.
Знаешь, я убеждённый солипсист и для меня таки мир крутиться только вокруг меня. Потому что нету больше вокруг чего. Поэтому моём личное мнение говорит мне о чём угодно всё и сразу.
Да, увы, грамматика русского языка вокруг меня не крутит|ся. А так, да -- VSC вполне себе ничего. Использовать можно, но не лучше и не хуже куче прочего хлама.
Слился, а как дысал-то как дысал. хехе.
VSCode это не "среда разработки", а текстовый редактор. И всем известно, что настоящие линуксоиды юзают vim или emacs, которым не нужен гуй. Но с тех пор, как дотнет стал опенсорсным и кроссплатформенным, оказалось, что очень важное значение имеет работоспособность Windows Forms и WPF под линуксами, очень многие спрашивают...
Вот как текстовые редактор VSCode и так себе. Мне куда удобней пользоваться git-ом и mvn из командной строки, а кодить в том же Эклипсе. Мне плохой комбайн не нужен. Я в таких комбайнах не понимаю что происходит.
>Мне куда удобней пользоваться git-ом и mvn из командной строки,И я пользуюсь git'ом из командной строки в VSCode, если мне надо, а если нет, то и никакой командной строки у меня не видно. Самая обыкновенная командная строка, как и у тебя.
> Мне плохой комбайн не нужен. Я в таких комбайнах не понимаю что происходит.
Комбайн из текстового редактора делает пользователь. Это он занимается его настройкой и выбирает, какие плагины ставить.
Ну и что в этом такого, чтобы заявлять о каком-то прям уникальном супер-пупер удобном опыте? Рядовая лажа. Некрасивая и не фига не удобная.
Забудьте всё, что было! У нас новая технология. И так 25 лет подряд))))
Вот именно поэтому 15 лет назад при выборе во что окончательно специализироваться в системном администрировании я выбрал Linux. И ни разу не пожалел - большая часть моих знаний актуальна до сих пор и будет актуальна еще десятилетия, если мне надо я всегда могу посмотреть исходники ядра, маны, найти кучу людей и рассылок которые разьяснят почему в ядре/coreutils/findutils/etc что-то именно так а не по-другому. И я с сожалением и сочувствием смотрел все эти годы на мучения бывших коллег которым приходилось каждый год переучиваться под очередные "инновационные технологии" от M$ представляющие из себя черный ящик и работающие именно так "потому что так надо", у них все обучение и понимание сводилось к тупой зубрежке всей это бессмыслицы и исследованиям методом научного тыка.
15 лет ничего не делать? норм работа
Кocтылинупc и вдруг стабильный? С тобой точно всё в порядке? Стабильно он может разве что не работать вообще-то, ибо ломают его постоянно. Начиная со Stable API is nonsense, из-за чего драйверописание превращается в тот ещё аттракцион и заканчивая всякими переходами между мажорными версиями gtk с qt и прочими интересными вещами (hal выпилили, udev впилили - и всё, переписывай теперь). Винда тоже не подарок, что творилось при переписывании софта с XP под висту я прекрасно помню - но это было почти лет назад, а в кocтылинупce такая веселуха - повседневная реальность.
У меня ситуация абсолютно обратная. Выбрав 15 лет назад специализацию на системном администрировании Linux, я столкнулся с тем, что одного его мало знать. В итоге специализаций стало больше, а из-за этого задачи стали больше.Я в один прекрасный момент перестал верить в байки FSF и прочую неинженерную религию вокруг Linux и стал задумываться, о том, сколько я работаю.
Вот например:
> я всегда могу посмотреть исходники ядра, маны, найти кучу людей и рассылок которые разьяснят почему в ядре/coreutils/findutils/etc что-то именно так а не по-другому.Вы подаёте это как достоинство, а для меня сама идея чтения левых манов, рассылок, копание в коде - это недостаток, потому что зачастую в Linux это надо делать.
> И я с сожалением и сочувствием смотрел все эти годы на мучения бывших коллег которым приходилось каждый год переучиваться под очередные "инновационные технологии"
А я всегда смотрел на них без грамма сожаления. MS редко что-то изобретает. Он строит свое решение, которое +/- универсально должно решить конкретную задачу конкретного корпоративного заказчика. Те кто ходят на их курсы, платят деньги за экзамены и учат магическое расположение кнопок в интерфейсе должны страдать. Давеча тут сдавался один знакомый. Человек пытался учить ADCS без грамма понимания TLS и PKI и ADFS без понимания чем аутентификация отличается от авторизации. Дурачков везде много.
> всей это бессмыслицы и исследованиям методом научного тыка.
А вот это я слышу очень часто от гордых админов Linux, которые считают себя лучше других людей. Обычно через 20 минут личной беседы на профессиональные темы они готовы на стенку лезть, а еще через 20 начинают конспектировать, потому что вся эта гордыня и превосходство от глупости и невежественности. Той же самой глупости, что у тех дурачков, которые учатся кнопки жамкать на платных курсах.
Мне прямо даже интересно стало, а что вы там у них такого не поняли, что посчитали бессмыслицей и не смогли найти официальную техдоку, что пришлось тыкаться?
Везде все одинаково. Если речь про .Net, то там полно кода вообще без документации и чтобы этим пользоваться нужно лезть в глубины глубин и самому разбирать код как это все работает. Такая же ситуация с юниксовым софтом (да, местами где-то лучше, местами где-то тоже самое).Смешно, что большинство современных админов считают, что администрирования софта это пик их карьеры. Лезть в код и его патчить это и есть системное администрирование испокона веков. Историческая справка, в эпоху BBS были sysOp и sysAdmin, первые модерировали и перезапускали BBS, в то время как вторые модернизировали, патчили и т.д., вели так сказать прогрес. Вывод: жимкать кнопки, читать доку к конфигу в /etc это уровень sysop. Так чем вы гордитесь? =)
Давай пруфы про код без документации
Я лично такие случаи не записываю. Смысл не в том, что нет страницы с докой, а в том, что из нее ничего не ясно. Описание было в стиле вот функция, возращает то-то, точка. Встречались целые куски API, из описания которого вообще не ясно как этим пользоваться. Код в тоже время был рабочий и полезный. Выход был либо искать в нете того кто разобрался и рассказал, либо самому вникать в дебри.С учетом того, что я не помню какие именно это были случаи и с тем фактом, что документация обновляется, найти конкретные косяки не представляется сейчас возможным. Как встречу еще раз -- напишу.
Возможно не самый лучший пример, из последнего, где были трудности
https://docs.microsoft.com/en-us/dotnet/api/microsoft.aspnet...Реальный код, как сделать чтобы авторизация была и по куки и по bearer:
services.AddAuthorization(o =>
{
o.AddPolicy("BearerPolicy", policy =>
policy.AddAuthenticationSchemes(JwtBearerDefaults.AuthenticationScheme)
.RequireAuthenticatedUser()
.AddRequirements(new AuthenticationTypeRequirement("AuthenticationTypes.Federation"))
);o.AddPolicy("CookiePolicy", policy =>
policy.AddAuthenticationSchemes(IdentityConstants.ApplicationScheme)
.RequireAuthenticatedUser()
.AddRequirements(new AuthenticationTypeRequirement("Identity.Application"))
);
});Из этого кода самое страшное то, что "Identity.Application" зашит в код и нигде не упоминается. В данном случае идет простое наследование IAuthorizationRequirement:
public class AuthenticationTypeRequirement : IAuthorizationRequirement
{
internal string AuthenticationType { get; }public AuthenticationTypeRequirement(string authenticationType)
{
AuthenticationType = authenticationType;
}
}Дока на IAuthorizationRequirement очень полезна: https://docs.microsoft.com/en-us/dotnet/api/microsoft.aspnet...
Прикольный (один из) ответ МС: https://github.com/dotnet/aspnetcore/issues/18329
Как зашит-то интересно https://github.com/aspnet/Identity/blob/feedcb5c53444f716ef5...
Я не понимаю ваше непонимание...Начнем с конца, семантически вот такая строка:
public class AuthenticationTypeRequirement : IAuthorizationRequirement
означает, что класс реализует интерфейс. В документации интерфейса и он пустой, но есть перечень его имплементаций... Что нет так-то? Могу лишь догадываться... возможно вас удивило, что интерфейс IAuthorizationRequirement абстрактен настолько, что не требует имплементации полей... Ну так это ничего страшного.Вы в своем коде показали регистрацию двух политик авторизации. Причем политика авторизации применяется в зависимости от типа аутентификации. Для этого и существует ваш класс AuthenticationTypeRequirement. Вот только вы не показали самое интересное, как вы удовлетворяете это условие. Где-то там у вас должен быть класс-хэндлер примерно такого вида:
public class AuthenticationTypeHandler : AuthorizationHandler<AuthenticationTypeRequirement>
AuthenticationTypeHandler - это я навскидку придумал =)
Судя по передаваемым названиям есть подозрение, что вы это из IdentityUserLogin.LoginProvider берёте и сличаете или из HttpContext.User.Identity.AuthenticationType. Без кода хэндлера это гадание.Но это я так... давайте лучше разбираться в том что вообще такое AuthenticationType и зачем в это поле присваиваются строки. Там много причин, на самом деле... Ну вот давайте представим себе например мультитеннантное приложение. Есть ваша аутентификация, а есть теннанты пользователей, на которых нужно дать возможность или отобрать возможность аутентифицировать пользователей через внешнего провайдера аутентификации типа Google, Facebook, VK или вообще у клиента свой OAuth2. Вопрос: как сделать single sign out в рамках теннанта, когда админиcтратор теннанта резко выключил Facebook? Только чур не на всё ваше приложение, а только конкретному клиенту и только фейсбук... Очевидно что для этого нужно вести учет теннантов и типов приложений. И нужен уникальный идентификатор типа аутентификации. Ну вот примерно что делает эта строка. Обратите внимание, это безотносительно кода выше.
Далее давайте подумаем абстрактно. А если у меня наоборот вообще нет не то что мультитенантных приложений, но даже ни одной жалкой федерации нету? Ну очевидно, что это поле должно показать это явным образом. Ну вот для этого и придумана константа "Identity.Application", которая, по сути, признак локальной аутентификации.
Константа-строка "Identity.Application" много где упоминается в документации при работе с cookies, главное понимать, что в этой связи это уникальный идентификатор провайдера аутентификации и технически её можно отловить в хендлере. Странно, что вопросы по ней, а не про "AuthenticationTypes.Federation", которая скрывает реального провайдера аутентификации при использовании JWT ввиду технических ограничений...
Так-то я не понимаю в этих ваших дотнетах, поэтому не удивляюсь как так вы пишете что вам нужно и по JWT и по кукам, вроде бы одновременно, а по факту проводите дифференциацию на уровне политик авторизации. Такое себе...
1) Мультитенатность. Зачем она нужна в корпоративных B2B приложениях? Не нужна. Точка. Да, это было мое осознанное решение. Нужен будет OAuth2 -- прикручу, не беспокойтесь.>Так-то я не понимаю в этих ваших дотнетах
Ну, вы с этого бы и начали. Я вас пошлю к первоисточнику: https://www.dotnetcurry.com/aspnet-core/1511/authentication-...
>Такое себе...
Давайте, критикуйте.
> 1) Мультитенатность. Зачем она нужна в корпоративных B2B приложениях? Не нужна. Точка.Вот и начинает до меня доходить ваше "непонимание". Вы видимо дурак. Точка.
Вам не надо а другим надо, MS делает не только дуракам, у которых чуть что "не нужно", а в том числе с оглядкой на сервис-провайдеров, которые даже и крупным бизнесом-то могут не быть.Поддержка мультитенанси внутри среды это не только лишь OAuth2. Понимание как всё устроено и зачем устроена позволяет понять архитектуру решений по AuthN/AuthZ. Вам видимо это "не нужно" поэтому вы ищете простое решение, чтобы вам его описали в красивой доке в форме пошагового руководства, а вы чуть чуть подправите под себя. Так да? Привыкли читать блоги и форумы про Linux вместо техдоки (они есть, но частично платные у вендоров), нахватались хамского "не нужно" и думаете, что это нормальный подход. А потом у вас трудности... непонятно конечно почему... XD
> Ну, вы с этого бы и начали. Я вас пошлю к первоисточнику:
> https://www.dotnetcurry.com/aspnet-core/1511/authentication-...Это не первоисточник - это ерунда какая-то. Официальную доку надо читать. Понимать в ней слова, осознавать словосочетания, вникать в смысл предложения. Первоисточник относительно .NET не бывает вне домена microsoft.com или пары его субдоменов.
> Давайте, критикуйте.
И буду критиковать двоечников-лодырей, которые не хотят разбираться в проблеме целиком, а только частично, а потом гонят на реализацию, потому что видите ли им странно и не получается.
То что вы решили неиспользовать мультитенанси в вашем приложении - это ваше решение, но система учитывает возможность его существования у других, поэтому устроена и работает с его поддержкой. Такова архитектура, поэтому всё так. Вам документации не хватает и захардкожено везде, потому что вы не понимаете её и вместо того чтобы разбираться по официальной техдоке идёте в гугл в попытке найти простое решение.
Вам интересно зачем делал через Policy. Затем, чтоЭто работает:
[Authorize(Policy = "CookiePolicy")]
[HttpGet("test-cookie")]
public async Task<IActionResult> GetTestCookie()
{
return await Task.FromResult(Ok(new { result = "Cookie authorized" }));
}[Authorize(Policy = "BearerPolicy")]
[HttpGet("test-bearer")]
public async Task<IActionResult> GetTestBearer()
{
return await Task.FromResult(Ok(new { result = "Bearer authorized" }));
}
[Authorize(AuthenticationSchemes = "Bearer")]
[HttpGet("test-bearer2")]
public async Task<IActionResult> GetTestBearer2()
{
return await Task.FromResult(Ok(new { result = "Bearer authorized" }));
}
Это не работает (через bearer можно авторизоваться):[Authorize(AuthenticationSchemes = "Identity.Application")]
[HttpGet("test-cookie2")]
public async Task<IActionResult> GetTestCookie2()
{
return await Task.FromResult(Ok(new { result = "Cookie authorized" }));
}Вам был интересна проверка типов авторизации:
public class AuthenticationTypeAuthorizationHandler : IAuthorizationHandler
{
public Task HandleAsync(AuthorizationHandlerContext context)
{
var pendingRequirements = context.PendingRequirements.ToList();foreach (var requirement in pendingRequirements.OfType<AuthenticationTypeRequirement>())
{
if (requirement.AuthenticationType == context.User.Identity.AuthenticationType)
context.Succeed(requirement);
}return Task.CompletedTask;
}
}Если знаете как сделать так, чтобы [Authorize(AuthenticationSchemes = "ЧТО-ТО")] четко разделял bearer от куки, то пожалуйста, высказывайтесь.
> context.User.Identity.AuthenticationTypeАга значит всё-таки из контекста проверяете. Угадал.
> Если знаете как сделать так, чтобы [Authorize(AuthenticationSchemes = "ЧТО-ТО")] четко разделял bearer от куки, то пожалуйста, высказывайтесь.
Официальная статья чем конкретно не угодила?
https://docs.microsoft.com/en-us/aspnet/core/security/author...
Вобщем, решил вопрос:services.AddAuthentication()
.AddJwtBearer(JwtBearerDefaults.AuthenticationScheme, o => { ... })
.AddCookie("Cookie", o => { ... });services.ConfigureApplicationCookie(o =>
{
o.ForwardDefaultSelector = ctx =>
{
if (ctx.Request.Query.ContainsKey("access_token") || ctx.Request.Headers.ContainsKey("Authorization"))
return JwtBearerDefaults.AuthenticationScheme;return "Cookie";
};
});services.AddAuthorization(o =>
{
o.AddPolicy("BearerPolicy", p => p.AddAuthenticationSchemes(JwtBearerDefaults.AuthenticationScheme)
.RequireAuthenticatedUser()
);
o.AddPolicy("CookiePolicy", p => p.AddAuthenticationSchemes("Cookie")
.RequireAuthenticatedUser()
);
});При логине по кукам не забыть указать схему HttpContext.SignInAsync("Cookie", ...). После этого все работает и через [Authorize(Policy = "CookiePolicy")] и через [Authorize(AuthenticationSchemes = "Cookie")] и через любую схему через [Authorize].
Спасибо вам, но не докам от МС, в которых ничего этого не рассказывается.
Годно и без подводных камней с лиценционной политикой(привет Oracle)
А что там с Oracle? Жабу собирают все кому не лень, есть из чего выбрать. Как у MS с этим?
Oracle JDK как бы намекает, что если ты бомж то юзай недоджаву OpenJDK без поддержки, то есть тип сам фикси... двойные стандарты опенсорса такие двойные
Ну не рассказывай сказки. Нет никакой проблемы с любым желаемым уровнем поддержки OpenJDK. Есть и бесплатный LTS, есть и платный. Причём очень разный платный, т.е. есть конкуренция.
OpenJDK какой версии в LTS силами IBM? 8? 9? А сейчас 15 версия языка! Шикарная поддержка протухшей жабы
Уточню что бомж в понимании Oracle это средний и малый бизнес, а не любитель сосисок красная цена
Чего вы к Оракл пристали. Оракл давно не монополист в коммерческой поддержке Явы.
Оракель владелец жабы на все 100, а всякие там jcp получают зеленый свет с разрешенич прорицателя...
У МС всё откровенно. Ставишь dotnet и тебя сразу предупреждают, что поделие будет собирать инфу в пользу МС. Отказаться можно только отказавшись устанавливать. Ну и куча всяких каверзных ограничений на коммерческое использование.
1. Хорошо что честно, сразу, и коротко говорят. Некоторые прячут такую информацию за километровыми стенами из лицензионных соглашений. А потом в принципе не дают возможности отключить.
2. SET DOTNET_CLI_TELEMETRY_OPTOUT=1
3. А телеметрия только для CLI, но не для рантайма
А ограничений на коммерческое использования никаких нет: https://dotnet.microsoft.com/platform/free
И это явно описано в лицензии:
runtime: https://github.com/dotnet/runtime/blob/master/LICENSE.TXT
installer: https://github.com/dotnet/installer/blob/master/LICENSE
sdk: https://github.com/dotnet/sdk/blob/master/LICENSE.TXT
Да, тут нет подводных. Тут надводные и не камни, а целые Эвересты. Писать коммерческое пока на этом нельзя.
Почему?
Зачем пинать труп?
Если ты про Java, то дотнет ее не откровенно отфудболивает
Плюс дотнета в том, что он самодостаточен(все из коробки), в отчилии от java с ее тысячями фреймворков, систем сборок, виртуальных машин, реализаций либ и прочих ништячков для гуранов говнеца
Да уж, странно обилие инструментария под любые нужды и задачи объявлять минусом.
Люто бешено ненавижу Майкрософт!
Зато любишь Oracle и IBM) двоемыслие прям болезнь какая то и в опенсорсе
Убей себя и твои страдания прекратятся.
Очень хорошо. Спасибо, Майкрософт! Развивается пакет. Не может не радовать. Хотя, может не рабовать. Если ты не используешь NET.
Как ни крути у c# в visual studio, перед Java было явное приимушество в виде редактора форточек, ибо каждый раз руками писать и отвлекаться дело явно лишнее.
Ну не знаю, я под FX пишу и ничего меня не парит.
JavaFX? Который подох лет 6 назад? И выкинут ораклом на мороз? Что ты такое анонимус?
Ваши познания поражают глубиной.
В FX builder и пр. плохо то что конструкторы генерируют очень много лишнего кода, который только путает, да и потом его установить целый геморой.. Да и в jar,ax есть такая проблема, что не понятно как его распространять. В магазинах линуксе нельзя просто взять и закачать свою программу написаную на джаве, то же самое я так понимаю и в виндовс и маках
Ну "установить" геморроя как раз нет никакого. Да и нативную инсталяшку тоже сделать не так, чтобы уж сложно. И, да, получается толсто.
Память оно жрёт просто ушатаешься. Классический виндовый .Net и Java просто ультра-легковесные по сравнению с ним. Единственный выигрышь по сравнению с Electron - что пишешь на полноценном языке, а не на жабоскрипте.
В общем, интересная штука. Со временем может Яву подвинет.
Скорее сдохнет и вместо него очередное "ненужно" придумают.
Интересно, mono можно было использовать как встраиваемую в приложение библиотеку, и отлаживать C#, запуская это приложение из Xamarin/VS. А с .Net Core такое можно?