Які перспективи у «немодною» платформи .NET — думки експертів



Платформа .NET з'явилася на початку 2000-х років. Вона об'єднувала під одним дахом кілька мов програмування, що було в новинку для того часу. Але розробники платформи стверджували, що це нововведення несе безсумнівну користь: програмісти почали створювати свої додатки на тих мовах, які знали найкраще, що краще підходили для вирішення своїх завдань.

Ще одним нововведенням платформи .NET була технологія активних серверних сторінок ASP.NET (Active Server Page). З її допомогою можна було відносно швидко розробити веб-додатків, взаємодіючих з базами даних. Важливою особливістю ASP.NET вважалася можливість використання всієї потужності об'єктно-орієнтованого програмування для веб-розробки. Програми, написані з використанням цієї технології, володіють кращою продуктивністю і захистом. Принаймні, в це вірили інженери Microsoft.

Складно переоцінити роль такого нововведення, як веб-сервіси. .NET надавав розробникам інструменти для їх використання. Програмісти отримали можливість реалізовувати взаємодію з веб-сервісами на будь-якій мові платформи .NET.

Однак занадто тісна інтеграція ASP.NET з Windows IIS зробила неможливим використання альтернативного веб-сервера хостингу додатків. Ці обставини з плином часу викликали все більше критики з боку співтовариства розробників і були несприятливим фактором для розвитку ASP.NET MVC.

Візуальне проектування інтерфейсу – Web Forms, Windows Forms, потім WPF – також є істотним досягненням розробників. Зараз це може комусь здатися смішним, але тоді якісний інструмент для створення GUI був в новинку.

Крім класичної реалізації платформи з'явилися також .NET Compact Framework (версія .NET Framework, призначена для запуску додатків на пристроях, що базуються на платформі Windows CE.) і .NET Micro Framework (реалізація платформи Microsoft .NET для вбудовуваного застосування в 32 — і 64-розрядних мікроконтролерах).

З часом платформа .NET змінювалася. Якщо спочатку вона випускалася як інструментарій для користувачів операційної системи Windows, то в подальшому розробники пішли назустріч шанувальникам інших ОС. Так, наприклад, у спільноті open source з'явився проект Mono, який був офіційно визнаний реалізацією .NET на Unix-подібних операційних системах.

А влітку цього року Microsoft випустила багатоплатформовий аналог .NET під назвою .NET Core.

Тим не менш, багато критичні зауваження залишаються актуальними, незважаючи на те, що Microsoft вже багато років намагається ліквідувати наслідки не зовсім вдалої реалізації та архітектури платформи .NET.

Головна претензія критиків – це нераціональне використання пам'яті системи. Нібито конкуруючі платформи використовують пам'ять куди економніше, і більш того, багато з них є безкоштовними.

Звичайно ж, до теперішнього часу платформа істотно змінилася і, скажімо так, розмножилася. Однак таке різноманіття змушує задаватися питаннями про те, які перспективи того чи іншого напрямку розвитку .NET, наскільки ця платформа сьогодні актуальна, як змінюються вимоги .NET-програмістам і так далі.


Про те, куди і навіщо йде платформа, ми поговорили з експертами галузі.

Аркадій Кочетков, Софтнео, провідний інженер-розробник:
Пройшла .NET свій пік? На якому етапі розвитку знаходиться технологія?

Не пройшло, продукти MS нікуди не поділися з ентерпрайза. Але зараз це безумовно не модно.

Наскільки актуальна .NET в умовах засилля мобільних технологій, великих даних, інтернету речей?

В умовах мобільних технологій і інтернету речей (Java популярнішим, ніж Xamarin, а Mono і всякі Netduino сильно на любителя, наприклад) я б дивився в бік інших рішень. Але якщо без .NET вам і життя не миле, то чому б і ні?

В яких напрямках розробки у .NET більше шансів?

Web.

Якщо б Microsoft не просував своє дітище, яка могла бути доля .NET?

Доля була б сумною. Хтось підхопить розробку відкритих сорсов, існуючі рішення будуть підтримуватися, але створювати нові на основі технології, яка втратила підтримку, побояться. Проектів буде ставати все менше, а з часом і не залишиться.

Або під «просуванням» розумівся PR? Тільки лінивий не чув про .NET.

Які переваги .NET перед конкуруючими технологіями?

Синтаксичний цукор c#, більша продуманість (у порівнянні з основним конкурентом), класні інструменти, простота у використанні з іншими продуктами MS.

З якими перспективними технологіями порадите комбінувати .NET початківцям розробникам?

Якщо ви початківець розробник, то почніть з самої мови, алгоритмів і структур, а якщо ви з якоїсь причини звернули свій погляд на .NET, вже вміючи, то і самі все чудово знаєте. Але якщо якось пропустили, то подивитеся на .NET Core.

Микита kekekeks Цуканов, Гуру велосипедостроения:
Пройшла .NET свій пік? На якому етапі розвитку знаходиться технологія?

Не бачу кривої з одним екстремумом у розвитку .NET. Зрілості технологія в моєму баченні досягла ще в дрімучому 2005-му році в момент виходу .NET 2.0, з тих пір безперервно йде динамічний розвиток еволюційного характеру, що поєднує в собі як якісні, так і кількісні зміни. Крім створення своєї мови та інструментарій постійно переймають щось з інших мов і середовищ. Я не бачу ніяких передумов до заходу в найближчому майбутньому.

Наскільки актуальна .NET в умовах засилля мобільних технологій, великих даних, інтернету речей?

Одним з важливих переваг .NET є той факт, що писати можна що завгодно і під що завгодно. Хочете мобільний додаток — беріть Xamarin. Хочете щось рахувати на сервері? Будь ласка!

.NET довгий час загострювався під серверне використання. Інтернет речей? Дивлячись що розуміти під пристроєм з IoT. Якщо це щось з 64Кб оперативної пам'яті то, звичайно, краще все ж скористатися З (хоча при наявності бажання і фанатизму можна взяти .NET Micro). Якщо у вас є можливість туди впихнути хоч якусь ОС, то ви можете продовжувати писати на C#. З приходом CoreRT, який забезпечить можливість складання в нативний код під яку платформу (у тому числі засобами LLVM або трансляції в ANSI C) це стане ще простіше і зручніше.

В яких напрямках розробки у .NET більше шансів?

Традиційно C#.NET використовувалися для серверних додатків і десктопних додатків з UI. І в цих традиційних для себе областях вони почувають себе найкраще. Зараз з появою Xamarin для мобільних пристроїв став доступний стек для розробки UI з використанням нормальної системи біндінгів, шаблонизированных контролів і XAML, так що попереднє висловлювання можна поширити і на мобільні пристрої. Якщо мене запитати практично про будь-який проект, на чому його нам краще робити, то я з високою ймовірністю відповім, що на .NET.

Є, правда, у покритті технології один великий пробіл: багатоплатформовий UI, який поки толком не закритий, хоча і є рішення.

Якщо б Microsoft не просував своє дітище, яка могла бути доля .NET?

Ви можете зробити скільки завгодно чудовий продукт, але якщо про нього ніхто не знає, то їм ніхто не буде користуватися.

Які переваги .NET перед конкуруючими технологіями?

По суті, ми зараз отримуємо по переносимості аналог, але з усіма перевагами середовища з керованим кодом.

Як мені здається, найбільший ефект можна отримати від синергії, коли у вас на сервері, десктопі і всіх мобільних пристроях використовується одна мова, одна технологія. У такому сценарії перемикатися між ділянками кодової бази може практично будь-розробник з команди, ви так само можете розділяти один і той же код між елементами системи, якщо буде потрібно.

Також можна почати чергову дискусію на тему переваг компилируемых мов зі строгою статичної типізацією, але тут дуже багато людей з різними думками.

Як ви оцінюєте рівень розробників: з'явилося більше низькокваліфікованих .NET-програмістів або їх число зменшилося, а рівень виріс? Або розподіл виглядає по-іншому?

Я не помітив зростання числа низькокваліфікованої робочої сили «працює за їжу», як це свого часу сталося з PHP, але і сильного кадрового голоду теж не спостерігаю.

З якими перспективними технологіями порадите комбінувати .NET початківцям розробникам?

Це залежить від того, що ви хочете робити, вивчіть навколишній плановану сферу діяльності стек технологій. Якщо хочеться писати логіку на сервері, розберіться, як працює SQL (бажано подивитися на кілька діалектів і зрозуміти, що все одно будете використовувати ORM), як працюють nosql рішення (mongodb, redis, так і на речі типу elasticsearch подивитися не заважає), на системи передачі повідомлень (RabbitMQ, MSMQ, ActiveMQ, подивіться на бібліотеки типу MassTransit, EasyNetQ).

Якщо хочеться бути трохи ближче до веб-фронтэнду, то потрібно знати стандартний набір HTML/JS/CSS і як мінімум навчитися користуватися інструментарієм node.js тим більше, що він зараз інтегрований в toolchain складання нового ASP.NET.

Якщо ви хочете писати встановлювані додатки, що працюють з користувачем, то для початку варто освоїти десктопний WPF і супутні йому бібліотеки (помацати MVVM-фреймворки типу Caliburn.Micro, Prism, MvvmCross, розібратися з нутрощами XAML), а потім вже відкривати для себе розробку під мобільні пристрої, де доведеться ще і вивчати їх.

Максим Аршинов, CEO, HighTech:
Пройшла .NET свій пік? На якому етапі розвитку знаходиться технологія?

Я думаю, що не пройшла. .NET зараз активно розвивається відразу в декількох напрямках. Хочете продуктивний сервер з горизонтальним масштабом: беріть .NET Core. Хочете кроссплатформенную мобільний розробку — Xamarin. Бажаєте писати C#код на Mac — Rider IDE. Хочете Machine Learning і Data Science — F# вам в руки.

Звичайно, багато чого з перерахованого вище — абсолютний bleeding edge. Потрібно розуміти, що багато інструменти, до яких ми звикли, все ще недоступні. Багатьох розробників привели в шок події ASP.NET Core RC1 — RC2. Але не будемо забувати, що відбувається в екосистемі JavaScript. Порівняно з цим в світі .NET все спокійно.

Можна сказати, що у .NET зараз «період перебудови». З одного боку, ми накопичили значний обсяг коду корпоративних додатків, який ніхто ніколи не перепише, а значить, ми будемо підтримувати його ще десятки років. З іншого – Microsoft дуже швидко трансформується і трансформує .NET під потреби бізнесу. Сучасний .NET робить ставку на Azure, Linux і мобільні платформи.

Як будуть уживається кривавий ентерпрайз з «модними віяннями», покаже час.

Наскільки актуальна .NET в умовах засилля мобільних технологій, великих даних, інтернету речей?

Немає ніякого засилля великих даних, мобільних технологій і іншої нісенітниці. Це все marketing bullshit. Так, у США є кілька відомих всім компаній, які займаються подібними речами. Але це зовсім інші завдання і бюджетів.

Чомусь багато хто вважає, що якщо підключити до своєї БД hadoop / spark / «впишіть своє», то раптом раптово все стане чудово і прибутки зростуть у квадрильйон раз.

Сучасні СУБД успішно справляються зі зберіганням даних в 90% випадків. Найчастіше, проблеми в поганому проектуванні і неправильному використанні інструментів. Для мобільних технологій все-одно потрібен server-side і його потрібно написати. Чому б не зробити це .NET і не захостить в Azure, тим більше, що Microsoft активно займається підтримкою Docker?

В яких напрямках розробки у .NET більше шансів?

Я думаю, що на стороні сервера. Swift вже досить адекватний мову, Android є Java. Windows Phone досі не знайшов свою нішу. Повинно щось дуже серйозне статися, щоб керівники рівня CTO/CEO всерйоз розглядали Xamarin.

Якщо б Microsoft не просував своє дітище, яка могла бути доля .NET?

.NET б не було, бо ніхто б не виділив грошей на його розробку. Писали б на Java.

Які переваги .NET перед конкуруючими технологіями?

Мультипарадигмальность, сильна типізація, швидкий розвиток мови C#, підтримка Microsoft.

Як ви оцінюєте рівень розробників: з'явилося більше низькокваліфікованих .NET-програмістів або їх число зменшилося, а рівень виріс? Або розподіл виглядає по-іншому?

Складно сказати. З появою LINQ сильно спростилися завдання маніпуляцій з даними, тому, в цілому, з типовими завданнями розробники справляються порівняно непогано.

Проблеми починаються, коли потрібно зробити крок вліво або вправо. Я помітив, що багато .NET-розробники не розуміють як працює TPL, LINQ або async/await. Буває, що навіть кажуть, мовляв «var призводить до суворої типізації».

В підсумку є прірва між «джуниорами» і «сеньйорами». Або людина вміє набивати строчки коду за прикладом, не розуміючи, як це працює, або може розбиратися в платформі краще тебе. Я відчуваю гостру нестачу тім-лідів на ринку.

З якими перспективними технологіями порадите комбінувати .NET початківцям розробникам?

ES6 + React або Script Type / Angular, NodeJS; Java / Scala. Дуже рекомендую вивчити Erlang або Haskell.



В одному з інтерв'ю ІТ-спеціаліст і автор книг з .NET Джеффрі Ріхтер розмірковував про те, як би він спроектував і реалізував платформу, якби була можливість створити все «з нуля»:

Безумовно,.NET і C# сьогодні є речі, які і Microsoft, і особисто я хотіла б реалізувати інакше. Варто було б зробити .NET більш «чистим», мінімалістичним, щоб він не використовував так багато пам'яті, як це відбувається зараз, не був таким «важким».

Якщо сьогодні все це можна було б написати «з нуля», я думаю, варто було б виділити невелике ядро всієї платформи — систему CLR-типів і збирач сміття. Це повинна бути основа, а от все інше вже могло б підключатися до платформи чимось на зразок «плагінів».

Таким чином, одне і те ж ядро працювало б у всіх версіях платформи, що дало б більшу гнучкість. А вже команди розробників конкретної платформи могли б додавати інший функціонал, по моделі «plug-and-play».

Але .NET ніколи не проектувався таким чином. Він спочатку створювався, як цілісна, монолітна платформа.
Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.