Сучасна диджитал-освіта для дітей — безоплатне заняття в GoITeens ×
Mazda CX 30
×

Обучение новому после WinForms

Всем привет!
Так сложилось, что на текущий момент я работаю Middle C# Desktop разработчиком, а именно под WinForms.
Из языков знаю C# и T-SQL, всё. Ситуация не из лучших, согласен :)

В связи с тем, что направление desktop умирает как таковое (ведь так?), вакансий становится всё меньше и меньше — я решил, пока еще не поздно, выучить что-то новое и интересное, и соответственно безболезненное для перехода с .NET, с чем можно будет спокойно плыть дальше.

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

Заранее благодарен!

👍ПодобаєтьсяСподобалось0
До обраногоВ обраному0
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
в какую сторону лучше посмотреть и на какие языки, и технологии обратить внимание уже зная C#
языки... э... Typescript.

технологии.. ну, Unity3D, например.

Только-только хотел порекомендовать asp.net mvc. Мне лично очень нравилась технология еще со времен ВУЗа. Веб-разработка на строго типизированном языке — это круто.

А UWP разве не рулит? Вам сам Бог велел туда оглобли поворачивать. Там на шарпе прекрасная дока. Единственное, что там мне не понравилось — если приложение неактивно, ОС останавливает его, несмотря, что там могут быть рабочие фоновые процессы

Нет, UWP однозначно не рулит в этой стране в оффлайн работе — joxi.ru/DrlldKYio5ZlrP.png

Соглашусь с Dmytro Zhluktenko, действительно редко где встречал вакансии с UWP.
Зачастую все хотят ASP.NET или WPF

Вот если честно, по большому счету, кому сейчас нужен UWP? Microsoft прос.. т.е. упустили свой шанс и их Windows Store и рядом не стоИт с Google Play и Apple Store.

Нет, сейчас рулит web. А если все-таки про десктоп, то вангую, что после того как .NET Core станет мейнстримом, традиционные майкрософтовские фреймворки рулить перестанут и уступят опен-сорсным.

Если все-равно вэбом заниматься, то зачем думать о смене языка? Народ пишет на .Net бизнесс приложения.
Почти 10 лет назад я писал свое первое Desktop WinForms приложение. А под него до сих пор пишут. 1 год назад целый год я занимался поддержкой WPF приложения. Никуда не девается Desktop. Сейчас вэб сервисы на .Net использую в своем Salesforce.
Посмотри на Azure, Dynamics. Я бы не отказывался от .Net.

Аналогичная ситуация, но работал и с WPF, работы мало, бывает приходит UWP (не понравилось) но это исключение чем правило всем подавай ASP.NET. Так как я хронически не переношу WEB, а от одного только взгляда на код JS меня тянет застрелится, ушёл в Unity3D работаю за копейки, перспектив не вижу кроме VR но пока оно войдет в массы есть опасность сдохнуть с голоду клепая социалочки на Unity3D. Сейчас смотрю на Xamarin хотя тоже вариант не из лучших, по многим причинам ! Мне жаль чувак, порадовать тебя нечем ...

Спасибо :) у меня ситуация чуть другая, работаю в стабильной компании, пишу модули для Enterprise приложения, которое полностью на WinForms, есть конечно и legacy-код, с которым иногда приходиться сталкиваться, но в целом всё Ок.
Но я не живу иллюзиями и прекрасно понимаю, что desktop рано или поздно загнётся, и его заменит web и кросс-платформенные решения (и в нашей компании тоже).
Тем более есть желание развиваться, заниматься self-education :)
Недавно игрался с Xamarin (когда он еще не был MS), честно скажу — не понравилось, показался чем-то недоделанным и сырым (но это сугубо моё мнение), хотя есть в нём и приятные штуки (XAML, MVVM и т.д).
В сторону Unity не смотрел, как-то не прёт меня разработка игр...
Вот сейчас начал изучать JS, в принципе синтаксис очень похож на C# и пока в обучении всё идёт легко, но нужно чуть переосмыслить, из-за его «сумасшедшей» динамики :)

На счёт Xamarin абсолютно согласен, по JS (не смотря на то что он мне не нравится) я немного трогал его используя Phaser.js и Three.js (всё для работы с графикой, так как я очень люблю графику в особенности 3D) то могу сказать что меня заинтересовало, даже может быть и рискнул бы перейти на него, вот только чисто по работе мало подобных предложений, многие хотят Ангуляр или ещё что-то для фронт-части, так что наверно хорошая затея смотреть в сторону JS аналога ему нет, работы на «фронте» куча, зная JS без работы не останешься ...

Так а вы тогда посмотрите в сторону TypeScript, в нём есть статическая типизация

Спасибо, почитал — интересно
А бэкенд в данном случае ASP.NET ?

Бэкэнд в данном случае что угодно
В варианте typescript+react получаются очень неплохие spa

Если будете смотреть в эту сторону, можно начать с этих видео:
Введение в программирование на TypeScript — www.youtube.com/watch?v=YvA1AkRXiPo
TypeScript Fundamentals. Урок 1. Введение в TypeScript — www.youtube.com/watch?v=bSoIeNo-aiw
ReactJS Essential. Урок 1. Введение в React — www.youtube.com/watch?v=gbTSl88k5pk
Разработка SPA на React, NodeJS, Express и MongoDB — www.youtube.com/watch?v=mYvdeFfZ_NE

Большое спасибо!
Я сейчас начал проходить видео-курс по JavaScript (Essential и Advanced) от CyberBionic
Чтобы понимать логику и основы, а затем думаю переключиться на изучение TypeScript + SPA

Не зависимо от контекста рекомендовал бы ознакомиться с WCF/WebAPI и Entity Framework.
Подавляющая часть новых проектов сейчас — это веб, т.е. ASP.Net MVC, а там могут понадобится и JS/jQuery.
Если не хочется переходить на веб, а остаться работать с back-end, то часто могут потребоваться знания по Multithreading, сборке мусора, оптимизации памяти и производительности при обработке больших массивов данных, построении распределенных систем.

EF, Multithreading, GC и всё вышеуказанное, что касается back-end’a — я знаю.
На счёт веба я еще пока не решился, хочу ли я туда :)
А вот на счёт «остаться с C# на бекэнде» с текущей ситуацией на рынке разве выйдет? Какие вакансии нужно искать?
Спасибо!

Есть чистый бекэнд — так и пишут в вакансиях «backend developer». В основном, разработка сервисов, REST API, какие-то инфраструктурные вещи, интеграции с другими системами, Azure/Amazon и т.д. Вакансии есть — это как раз мой профиль, поэтому регулярно интересуюсь. Но надо понимать, что Web там все равно присутствует, только без фронтенда. Так что надо знать, как работают HTTP запросы и все с этим связанное.
То, что вы долго работали на WinForms — это вообще-то минус для такой работы. Может сложиться впечатление у работодателя, что вы «формошлеп». Может оказаться, например, что Multithreading вы как раз и не знаете :) Сходите на пару собеседований — посмотрите, что спрашивают, потянете ли. WPF выглядит предпочтительней, конечно.

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

Есть такая тенденция :) Тем не менее, на высоконагруженных проектах хорошо бы, чтобы человек разбирался, как сервер менеджит потоки, в асинхронности операций ввода/вывода и т.д. Еще пример: на последнем проекте использовалась очередь сообщений, которую обслуживали несколько рабочих потоков — писалось это вручную. Так что нужно бывает, особенно на бекенде.

Редкая фигня. Обычно 90 проблем из 100 возникает, когда .Net архитекторы из епама решают, что к базе нужно обращаться через LINQ-провайдер (LINQ как и потоки тоже очень вредная технология) любого из orm и никак по другому, параллельно поощряя размножение как раковой опухоли всяких ненужных IRepository.

Ага :) вместо архитекторов им нужны батраки, которые все плейн скл поправят при изменении схемы бд

Ага :) нужны одни архитекторы, чтобы тащить каждый параметр через 7 лэйеров.

Согласен. Разве что в некоторых нишевых направлениях. А на том же вебе можно вообще им не пользоваться. Я вот как начал работать с ASP.NET MVC (особенно на .NET 4.6, где решена из коробки проблема передачи культуры при запуске таска), уже и не помню, когда писал что-либо вне рамок async\await.

На счёт WinForms согласен, сейчас я жалею, что влез в это болото. Но раньше я, к сожалению, этого не понимал, нашёл работу и пошло поехало :( в итоге что есть то есть.
Не знаю, конечно, под какие критерии попадают «формошлепы», возможно, и меня можно приписать к их рядам :) но я занимаюсь полностью full-stack’ом (серверная часть, клиентская часть, CLR’ки и т.д.)

В моем понимании «формошлеп» это создание форм как основной вид деятельности. Т.е. постоянное решение бизнес-задач в ущерб техническим. Есть накатанные сценарии: как прочитать данные, как проапдейтить и основной челлендж это обработка событий интерфейса и дизайн. Хотя вот в WPF это все гораздо интересней и больше пространства для творчества. Вы еще смотрите, что лично вам ближе — если нравиться делать UI, то на WPF можно найти интересные вакансии. Потому как backend на .NET — это практически всегда ентерпрайз, хотя есть исключения.

На счёт веба я еще пока не решился, хочу ли я туда :)
Хотя бы для общего развития и понимания целостности картины, я бы рекомендовал с MVC познакомиться. Даже если не будете работать по этому направлению сами, часто могут встретиться задачи, где ваши задачи будут пречекаться с задачами веб команд.
А вот на счёт «остаться с C# на бекэнде» с текущей ситуацией на рынке разве выйдет?
Задачи по обработке больших массивов данных, ETL, агрегирование, создание API, интеграция разных сервисов — все это никуда не денется, и вебом эти задачи не заменить. Другой вопрос, что UI приложения все больше заменяют на сайты и поэтому работы, связанной с UI на бекенде все меньше. Если раньше ентерпрайз часто заказывал какой-то софа для внутренних нужд в виде десптопных приложений для своих сотрудников, то сейчас все чаще идет отказ от десктопных решений в польза веб решений.
Соответственно меняется типичных набор навыкой, необъодимых для бекенд девелопера: к примеру, понимание разницы в производительности for и foreach становится более полезно, чем понимание разницы между модальными и немодальными диалогами.
Насчет WPF я не слишком оптимистичен. Ему хоть и не грозит скорая смерть, как WinForms, но и развиваться там особо некуда, т.к. очень часто, когда можно отказаться от WPF в пользу SinglePageApplication на чем-то типа WebAPI+AngularJS, так и делают.
Какие вакансии нужно искать?
Часто Back-end упонимают явно. Но, если судить по набору скилов, то часто там будут в приоритете WCF/WebAPI, ETL, SSIS, всякие платформы для обмена сообщениями, типа RabbitMQ, системы репортинга а-ля SSRS, CLR хранимки и т.д.. Часто будет требоваться хороший опыт с базами данных.

Спасибо за подробный комментарий!
Последний абзац меня заинтересовал, т.к. front-end как-то не очень нравится
А вот опыт работы с базами MS-SQL есть, CLR-ки писал, с SSIS пакетами тоже когда-то сталкивался.
Буду подтягивать WCF/WebAPI, спасибо

На счет веба есть сильная тенденция по использованию asp.net только в виде restful web api сервера. Не рекомендовал бы так уж сильно рассчитывать на полноценную веб разработку только в рамках ms стека. Лично я, например, с классическим asp.net mvc/razor сталкивался последний раз 5 лет назад (там еще админка была на silverlight — клинический случай). Чаще клиентская часть реализуется в виде spa на typescript или flow.
.net не веб и не десктоп существует. Например, мы год пилили а-ля msmq систему, которая гоняла данные туда сюда. В энтерпрайзе такого полно. Платят. Скука вселенская. Ушел во фронтенд окончательно ))) Нужен был какой-то челенж для поддержания мотивации.

Спасибо! TypeScript действительно интересный вариант

WPF вакансий как по мне вполне достаточно, и миграция не будет слишком трудной/длительной

Спасибо, как вариант, но опять таки — это десктоп
Если честно, думал, что вакансий сравнительно мало, но даже на ДОУ — их достаточно

ничего плохого в десктопе нет, 100500 софта который никогда в веб не переедет
плюс такие милые вещи как оптимизационные задачи (OpenCL, CUDA)
много всего есть за пределами веба, просто веб — суть очередной мегатренд
как когда-то была дельфа

Спасибо
И вместе с ним: HTML, CSS, JavaScript, jQuery, Bootstrap, AngularJS, AJAX ?

А что здесь страшного такого?
Кроме того, если не full stack то для этого будет специально обученный фронтэндщик.

Я не говорю, что страшно, скорей значимо звучит :) т.к. я человек далёкий от веба

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

не считая того, что в винформах/wpf есть разумные стандарты, котрые нет смысла менять
а жс кадый год рождается заново, причем новая генерация взрывает моск даже опытным укротителям:)

Сам по себе asp.net после винморды выглядит ужасно, лучше пилить себе тихо сервисы на wcf или чистый энгуляр, реакт без верстки.

В смысле «выглядит ужасно»? Тяжелый для изучения/перехода/понимания?
Спасибо

сам начинал в Джаве с GUI, на Swing X, потом немного на SWT. да и до этого, имел дело с GUI на С либах, потом на Turbo Vision. и на Compact .NET, когда еще не было Андроида писал. WinForms да, тоже неплох...

и вот уж 2 года вебствую, и все равно неуютно от постоянного:

— Запомнытэ дэти, в русском языкэ слова «булька» и «вилька» пишутся
бэз мягкаго знака, а слова «сол» и «мол» — с мягким знаком.
Запомнытэ это дэти раз и навсэгда, патаму что понять этого нэвозможно!

веб-стек в силу объективных причин эволюции (а не чьей-то глупости или злого умысла) — ну очень хаотичен, с инженерной точки зрения. Кто сразу с него начал, воспринимает этот хаос как нормальный и естественный. а кто пробовал что-то более аккуратное по созданию UI...

если б не тренды, я б с десктопной разработки и не уходил бы. но, работы с тем же Eclipse RCP — почти и нет. а уж по Netbeans RCP (который ИМХО более джавовский) — только штатным программистом в каком-то отделе где есть легаси система на нем. постепенно умирающая :)

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

Вот у меня как раз DevExpress на проекте

то веб ужасно долго и геморно
Грустно звучит :(

Радуйтесь, что не Телерик ;)

Переход в Веб с декстопа требует «ломки» подхода к хранению состояний. В десктопе состояние формы вы просто храните в памяти вместе с объектом формы, не надо ничего придумывать. А в вебе каждое пользовательское действие — это новый запрос (или полноценный, или AJAX). И нужны механизмы, чтобы сохранить где-то состояние веб страницы между этими запросами. Разные фреймворки решают этот вопрос по-разному. Лично для меня это было очень непривычно при переходе с десктоп и вызывало основные сложности (ну и раздражение, конечно :).

webapi + angular spa без вариантов сейчас

Правильно я понимаю?
SinglePageApplication
Back-end: WebApi (ASP.NET project?)
Front-end: AngularJS, ну и HTML, CSS

Пока люди не знают, что такое react+redux, они думают, что кроме ангулара ничего нет. Ангулар хорош для одиночки-фрилансера: сделал по-быстрому и забыл. Для больших проектов или больших команд реакт предлагает лучшие концепции, чем ангулар. Особенно учитывая перспективу, что на существующие ангулар 1 приложения клиенту все сложнее и сложнее найти желающих. Что им делать? Заплатить еще столько же за переписывание на ангулар 2? Спасибо, Гугл.

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