.NET и Linux — как быть?

Работаю в коммерческой разработке более 4-х лет с платформой .Net и языком C#. Но почти год назад попробовал пользоваться ОС Linux... Oh, My God! — как же удобно, симпатично, конфигурабельно и шустро! Попробовал различные Debian-деривативы и Arch-направление. Короче, похоже, Ван Лав...
Но, большая часть рабочих коммерческих проектов — на классическом .Net. Как дальше жить?...
:’(
Вопрос риторический. Но тема, полагаю, достойная.
Уважаемые эксперты и тролли DOU.UA, как по Вашему мнению, можно было бы выйти из данной ситуации?

1. Перейти на Java/Python/TypeScript? (FrontEnd люблю, но пока не основной профиль).

2. Жить на Linux, а работать на Windows (постоянно ребутаясь или работая на рабочей виртуалке)?

3. Максимально перейти на .Net Core с Rider\VSCode и полностью перестроиться с .Net-разработчика на чисто .NetCore-разработчика?

4. Забить на любовь :) и зарабатывать, где платят?

5. Другие бредовые идеи?

Спасибо за мысли любого вида и содержания!

👍ПодобаєтьсяСподобалось0
До обраногоВ обраному0
LinkedIn

Найкращі коментарі пропустити

Исходить из реалий дня сегодняшнего и перспектив
а сегодня Net — это прежде всего .net core
кору уже 5.5 лет, показала она себя достойно, M$ на нее сделали очень серьезную ставку
а net core и linux — с друг другом дружат отлично и хлеба не просят

Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Даже не верится что топик создан в 2022 году!
Сейчас даже тренеры по дотнету записывают свои видосы на макбуках и работают в VS Code. Есть VS Code Online, которую можно использовать даже с мобилы на Андроиде: vscode.dev
.Net сейчас настолько кросс-платформенный, что его теперь можно запихнуть даже в ембед.
Тот же ASP.Net сейчас крутят на Linux серверах. А по многочисленным просьбам «ретроградов» на .Net Core портировали даже Win Forms (WPF появилась в 2006 если что).
Я, конечно, понимаю что бывает всякое легаси: и до сих пор знаю проект где работают комы на VB6 — но меня на этом проекте давно нет!.
Так что не заморачивайтесь: если Вы .Net разработкик — оставайтесь им! Нет такого, как .NetCore-разработчик, есть просто новая версия .Net. И будьте уверены: работа и клиенты будут!
Уж если во фронте каждый год платять за переписывание с Ангуляра на Реакт, с Реакта на Вуй или что там модно в этом году — то значит лишних денег у бизнеса валом и на переход на .Net Core по-любому найдется. Ну а кто переходить не хочет — это уже мертвый проект и мертвый бизнес. Слезайте с мертвой лошади и ищите живую!

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

Rider лучше студии. А VS Code уже вообще прямо в браузере работает. И вполне неплохо.

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

Почему в теории? Как раз на практике.
Я как-то пробовал VS for Mac — она есть, но какашечная, не советую.

Студия под мак это отдельная история, там всё очень очень печально.

Если что-то нужно запускать через Вайн это не то пальто. Одно дело игрушки с протоном запускать, а другое дело рабочий инструмент, который благодаря вайн может работать не так, как должно. Да и не работает она с версии 2013 года.

особенно под солярисом.

кторого уже даже нет в списках поддерживаемых платформ.
ну да, лучший софт — не написанный софт.

Перейти, звісно.

Но, большая часть рабочих коммерческих проектов — на классическом .Net. Как дальше жить?...

Ну очевидно, что тут делать — переходить на Go. Компилировать код можно как под Windows, так под Linux, и под Darwin. Ну а писать код в — VSCode, под что угодно, оптимальный вариант — под WSL на Дебиане или Убунте.

1. Microsoft вже адаптував .Net для Linux. Просто перейти на новіші версії.
2. docker. пишеш в Linux, збираєш та запускаєш в докері.
3. DualBooot — теж варіант.

5. Другие бредовые идеи?

Пиши на Mono **злодейский смех**

А на самом деле вот:

3. Максимально перейти на .Net Core с Rider\VSCode и полностью перестроиться с .Net-разработчика на чисто .NetCore-разработчика?

Хочу напомнить что уже пару лет как нет никакого .NET Core, а есть унифицированный .NET 5 и .NET 6 . Так что тебе в любом случае рано или поздно придется уходить со старого .NET FW

Так что тебе в любом случае рано или поздно придется уходить со старого .NET FW

Это только полумера. Рано или поздно придётся уходить вообще с .NET и любой её пародии.

Почему? И главное куда придётся уходить? Так как уже используется C++ для чего можно, и возможно потом будет Rust или аналог, но сайт и сервисы не напишешь на нём легко.
А лучше .Net для задач быстрого написания и самой производительной работы ничего нет.

придётся уходить вообще с .NET

Потому что нельзя
Потому что нельзя
Потому что нельзя
Быть на свете красивой такой.

1 и 4 по-моему самые жизнеспособные стратегии.

Особисто після знайомства з Арчем, побачив як виглядають шрифти у VSCode, зніс і більше ніколи не дивився в сторону лінуксів

Это ты не осилил арч и линукс, сижу на нем более 5 лет, а на линуксах 10+ лет. Ставил арч еще с 0 когда не было для него однокнопочных инсталляторов. Ставил его на 5 рабочих станций, нигде проблем со шрифтами не было, надо просто ставить нормальные то что по дефолту арч ничего не ставит из них

Ви напевно ще й tiling window manager використовуєте

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

шрифти

«ШГ» называется. Кто понял, тот молодец.

переписав простий проект з моно на python. Прийняти зєднання з мережі, розпакувати данні, занести в базу. Возився правда тижні три. Але памяті почало брати 300кб замість 1 ГБ і навантаження на базу зменшилось в 20 раз. Звичайно дотнетчик все написав за 4 дні методом бігом в продакшен. За останні 10 років що MS зробило цікаве для мене це lsp.

Ух какие прохладные истории:) Язык то тут причем? Я могу поверить что .net сожрет на 50 мбайт больше из-за рантайма, но все остальное — косяки писавшего. Возможно на .net делалась полная выгрузка, распаковка, вставка а на python распаковывался каждый пакет.

Там все було в косяках. Але було написано за тиждень. Весь сервер в 4ГБ ОЗУ був. Задача отримати число з мережі , перевірити чи є в таблиці, нема дати відлуп, є внести другу таблицю (+ чуть арифметики). Все прекрасно працювало на девелоперській машині. В реальному житті через пів року все лягло. (Лягла база , її засмикали). Захист від дублікатів був покладений на індекс ко кількох стовпцях , який ріст швидше ніж дані (Ну так вийшло). В перевірці першого числа в простому select завалявся ще order by + offset підозрюю для UI, хоч реально могло бути тільки 0 чи 1 запис. І купа іншого сміття. Треба було все викинути і ощадливо відноситись до кожного SQL. Хоча, людина все зробила за один спрінт.
До речі чи придумали framework який обходиться без поля id?

І купа іншого сміття. Треба було все викинути і ощадливо відноситись до кожного SQL. Хоча, людина все зробила за один спрінт.

Это и есть реальная жизнь. Сделать за один спринт а позже переписать кусок нужного в реальной жизни функционала когда выросла нагрузка — это и есть правильный подход. А не писать несколько месяцев идеальный код с оптимизацией всех запросов sql не зная будет ли оно вообще использоваться и какая будет нагрузка.

Саме цікавіше навантаження НЕ виросло. Ну максимум на 10 відсотків. 90 відсотків часу було витрачено на то, щоб придумати валідний шлях висмикування данних. Економія 10 годин в момент проектування виливається в 100 годин на етапі супорту.

Приписать косяки конкретной неаккуратной реализации всей платформе — это круто. Сразу виден рациональный подход.

Дякую. Якщо люди беруть вже .net C++ rust для написання то вони вже повинні думати. На один спрінт є RoR, django.

Кстати, кроме того что .NET программист наворотил чушь (судя по посту — описанию косяков), эта ветка действительно про проблемы с платформой (как-то просмотрел что это было на моно, позор мне).
Моно — это брат-уродец настоящего .NET. Например, управление памятью в нем реализовано заметно хуже. Причем многие даже не знают, что в моно другой сборщик мусора. И то, что .NET простит, на моно может выйти большим боком.

> /usr/bin/time -v python -c 'print("Hallo")'

Maximum resident set size (kbytes): 8184
Але памяті почало брати 300кб

Ох уж эти сказки, ох уж эти сказочники...

Ор 😅😅😅 300кб на пітоні лол 😅😅

cat hello.pyx
print("hello")
cython hello.pyx —embed
gcc -Os -I /usr/include/python2.7 hello.c -lpython2.7 -o hello
./hello
hello
ls -la hello
-rwxr-xr-x 1 serg serg 24464 Feb 16 09:02 hello

Каюсь.
serg 472237 0.0 0.0 9944 6956 pts/0 S+ 09:15 0:00 ./hello
root 472351 0.0 0.0 6256 724 pts/1 S+ 09:15 0:00 grep hello
[email protected]:~# pmap 472237
472237: ./hello
000055748b79f000 8K r---- hello
000055748b7a1000 8K r-x— hello
000055748b7a3000 4K r---- hello
000055748b7a4000 4K r---- hello
000055748b7a5000 4K rw--- hello
000055748d631000 848K rw--- [ anon ]
00007fb35d8d8000 340K r---- LC_CTYPE
00007fb35d92f000 1476K rw--- [ anon ]
00007fb35daa0000 60K r---- libm-2.31.so
00007fb35daaf000 616K r-x— libm-2.31.so
00007fb35db49000 612K r---- libm-2.31.so
00007fb35dbe2000 4K r---- libm-2.31.so
00007fb35dbe3000 4K rw--- libm-2.31.so
00007fb35dbe8000 4K r---- libutil-2.31.so
00007fb35dbe9000 4K r-x— libutil-2.31.so
00007fb35dbea000 4K r---- libutil-2.31.so
00007fb35dbeb000 4K r---- libutil-2.31.so
00007fb35dbec000 4K rw--- libutil-2.31.so
00007fb35dbf0000 4K r---- libdl-2.31.so
00007fb35dbf1000 8K r-x— libdl-2.31.so
00007fb35dbf3000 4K r---- libdl-2.31.so
00007fb35dbf4000 4K r---- libdl-2.31.so
00007fb35dbf5000 4K rw--- libdl-2.31.so
00007fb35dbf8000 28K r---- libpthread-2.31.so
00007fb35dbff000 64K r-x— libpthread-2.31.so
00007fb35dc0f000 20K r---- libpthread-2.31.so
00007fb35dc14000 4K r---- libpthread-2.31.so
00007fb35dc15000 4K rw--- libpthread-2.31.so
00007fb35dc16000 16K rw--- [ anon ]
00007fb35dc20000 12K r---- libz.so.1.2.11
00007fb35dc23000 68K r-x— libz.so.1.2.11
00007fb35dc34000 24K r---- libz.so.1.2.11
00007fb35dc3a000 4K ----- libz.so.1.2.11
00007fb35dc3b000 4K r---- libz.so.1.2.11
00007fb35dc3c000 4K rw--- libz.so.1.2.11
00007fb35dc40000 148K r---- libc-2.31.so
00007fb35dc65000 1324K r-x— libc-2.31.so
00007fb35ddb0000 296K r---- libc-2.31.so
00007fb35ddfa000 4K ----- libc-2.31.so
00007fb35ddfb000 12K r---- libc-2.31.so
00007fb35ddfe000 12K rw--- libc-2.31.so
00007fb35de01000 16K rw--- [ anon ]
00007fb35de08000 312K r---- libpython2.7.so.1.0
00007fb35de56000 1464K r-x— libpython2.7.so.1.0
00007fb35dfc4000 1056K r---- libpython2.7.so.1.0
00007fb35e0cc000 4K ----- libpython2.7.so.1.0
00007fb35e0cd000 8K r---- libpython2.7.so.1.0
00007fb35e0cf000 476K rw--- libpython2.7.so.1.0
00007fb35e146000 140K rw--- [ anon ]
00007fb35e16b000 20K rw--- [ anon ]
00007fb35e178000 28K r—s- gconv-modules.cache
00007fb35e186000 8K rw--- [ anon ]
00007fb35e188000 4K r---- ld-2.31.so
00007fb35e189000 128K r-x— ld-2.31.so
00007fb35e1a9000 32K r---- ld-2.31.so
00007fb35e1b2000 4K r---- ld-2.31.so
00007fb35e1b3000 4K rw--- ld-2.31.so
00007fb35e1b4000 4K rw--- [ anon ]
00007ffe08109000 132K rw--- [ stack ]
00007ffe081f0000 16K r---- [ anon ]
00007ffe081f4000 8K r-x— [ anon ]
total 9944K

Моя ціль була мінімально зменьшити витрати на підтримку мережевого зєднання . І тут фреймворки дійсно зло. Пишеться швидко але ресурси ідуть як не в себе .

Автор, где ты находишь старый дотнет? :-) Сейчас на кор где-то 70%+ вакансий, обычный вендовый старый доттнет, это лютое старье которое не стоит тех денег которые дают.
На убунте работает/разрабатывается мой домашний проект(веб сайтик), написаный полсностью на мс стеке sql, asp. et core, entity framrwork и все что нужно для разработки типа visual studio code, проект как и на винде в пару кликов запустился и работает.

где ты находишь старый дотнет?

Особенно с такими условиями. Я понимаю всяким мамонтам пихать .NET Framework.

Работаю в коммерческой разработке более 4-х лет

Опція 3 звичайно: і лінукс (ще мак спробуйте;)), і сучасний .NET. Якщо хтось дуже захоче, щоб ви працювали з .NET Framework, куплять вам топову віндову машину, на ній і працюватимете з легасі.

Если вам так понравился Linux, тогда о чем речь. Переезжаете с Microsoft-а.
Есть ещё вероятность что вам просто понравилось что-то новое учить. Попробуйте ещё python тогда обязательно.

Linux со своей стабильностью тр@хает винду куда надо)

Мне надоели заморочки в WSL/WSL2/Hyper-V и я перешел полностью на Linux чуть больше года назад. Как уже писали, проекты на .NET Framework — это злое legacy. Современную backend разработку на .NET можно уже давно полностью вести на Linux/MacOS.

Не срача ради, а друг спрашивает — как сейчас поживает .NET разработка на маках с M1 процессорами? IDE, баги рантайма, работа с Докером, вот это вот всё?

Мой еще не приехал, но то, что я изучал перед выбором можно сумировать так: есть трудности, но решаемые. Rider уже оптимизировали под M1, .NET 6 тоже поддерживает M1, Docker Desktop полностью портировали под M1, Rancher Desktop тоже. Про баги рантайма ничего сказать не могу, рекомендую без них обходиться 😜

Еще в Августе тестил, .net core 3.1 запустился норм. Azure functions под python — были с багом.
С докером не тестил. IDE — Rider.

Не срача ради, а друг спрашивает — как сейчас поживает .NET разработка на маках с M1 процессорами? IDE, баги рантайма, работа с Докером, вот это вот всё?

А напуркуа это вообще надо? На огрызке разработкой под дотнет заниматься? Из мазохизма? Я кагбэ понимаю, что для iOS девелоперов выбора нет, но остальным-то зачем страдать?

Потому что это топ лептоп на данный момент?:)

Очень хорошее железо с очень хорошей автономностью. Ось для многих спорная, да, но тут вкусовщина.
Лично я если когда-нибудь решу переехать с десктопа на ноут, то «огрызок» будет в числе первых претендентов на покупку.

Очень хорошее железо

ну такое — очередная несовместимая с x86 платформа, а значит с софтом будет так же, как во времена PowerPC. Производительность не имеет смысла, если нечем ее утилизировать.

с очень хорошей автономностью

Вот это вообще не аргумент — для любого ноута достаточно час-полтора без розетки прожить.
Хотя, наверное, хипстерам, которые работают из кафе это должно быть важно. Но вот какую это играет роль дома или в офисе?

Мне кажется Dual boot норм идея, или 2 ноута — один дома, второй на работе

.NET Core уже вчерашний день. .NET 6 сейчас актуально и работает под Linux

Исходить из реалий дня сегодняшнего и перспектив
а сегодня Net — это прежде всего .net core
кору уже 5.5 лет, показала она себя достойно, M$ на нее сделали очень серьезную ставку
а net core и linux — с друг другом дружат отлично и хлеба не просят

.net Framework вакансії — це униле гівно мамонта.

Вопросы о .net core такие как будто автор был 5 лет в заморозке

Если это не desktop ui, то можно пробовать докеризировать. Есть docker runtime для .net framework 4. Если же это десктоп, то, думаю, вообще не вариант.

Віртаульні машини з Windows.

В теории есть Mono от Мигеля, но по факту оно мало где нужно (разве что ASP.NET). У меня была похожая ситуация и я свичнулся с C# на C++ (и переход между языками не очень сложный и кресты под линуксами достаточно активно применяются). Под Windows я так и не смог вернуться.

Я работал с Mono. Это боль и уныние. Особенно если надо написать сервис этот сервис должен хоть что-то делать. GC с 2 поколениями, другой предел попадания в LOH и соответственно фрагментация этого самого LOH могут доставить много приятных и не очень минут.

Не понимаю в чем проблема? Древний .net последний раз видел 2 года назад. Смените проект и будет вам счастье.

Но, большая часть рабочих коммерческих проектов — на классическом .Net.

Ну, легаси пусть деды поддерживают, я лично реджектю офферы на такое.

1. Ещё какой-нить Rust Haskell Golang ... Ну и для развитися полезно знать более чем одну платформу и методу
2. Не знаю, как по мне геморройно...
3. Ну... думаешь .Net Core сильно популярно будет? Такая себе ниша, и вряд ли позвлит далеко уйти от Windows

В целом я бы просто продолжил развивать кругозор изучая то, что тебе нравится, благо в Linux хороший выбор.

.Net Core сильно популярно будет? Такая себе ниша, и вряд ли позвлит далеко уйти от Windows

Если что, сейчас не 2010-й год. .Net Core уже позволяет максимально далеко уйти от Windows. Как в плане разработки, так и в плане рантайма.

Он то позволяет, но сам по себе не очень UNIX-way, много ли есть Unix-only проектов на .NET Core?

Эмм, практически весь бэкенд?..

Ну хоть бы глянул зашел на вакансии, везде кор требуют :-)

тему на доу проще создать)

Лучше бы ты расширил кругозор сам, перед тем как советовать, тьма энтерпрайза который уже давно хостится на линуксе, вендовый проект сейчас надо еще поискать. Уже давно все пилят на коре который прекрасно педалится и хостится ни линуксе. Вы там часом не из 2015 года пишете? :-)

Я больше про то, что разработчики .NET Core в большей части это бывшие Windows разработчики, которые работают в Visual Studio и т. п. Да, сейчас хостинг на Linux достаточно популярен, и .NET Core я рассматриваю больше как перенести комфотную для Windows разработчиков среду на Linux, при этом, я думаю, что большинство разработчиков используют всё-таки Windows клиенты.

То что всё прекрасно педалится и хостится это прекрасно, вот только это не Unix way, и как по мне он выглядит несколько чужеродно. Поэтому я больше имел в виду то, что да, ты можешь работать под Linux на .NET Core, но всё равно ты будешь даже общаться по большей части с теми, кто пришёл из мира Windows. Ну да, часть Windows сделали рабочей под Linux...

общаться по большей части с теми, кто пришёл из мира Windows

Это какой-то культ ленуксоедов? Лично мне похер на юникс вей или кто из какого мира пришел, я уже пару раз сидел в чито линуксовом окружении на рабочем проекте — другая ось другие проблемы, в остально — похер. Ну и хостинг апликейшена и личная рабочая среда это как бы разные вещи.

Ну для того чтобы добровольно начать игру в хаскель, нужно сильно разочароваться в жизни.

Я понял, что природное любопытство и стремление узнавать что-то новое в жизни это разачарование. Тогда, наверное, люди, копающие отсюда и до обеда самые увлечённые :)

Підписатись на коментарі