Що таке .NET і чим займаються .NET-розробники?

ТЕХНОЛОГІЇ
44089

В чому особливості .NET-платформи, чим займаються .NET-розробники та як розпочати розвиток в .NET? Про це ми запитали Дениса Чеснокова – Lead Software Engineer та викладача .NET Fundamentals в EPAM.

ЩО ТАКЕ .NET?

.NET – це платформа від Microsoft, яка дозволяє створювати програмні додатки. Перший випуск .NET Framework відбувся в 2002 році. Вважається, що .NET Framework було створено в якості альтернативи платформі Java від компанії Sun. Головна відмінність полягає в тому, що .NET Framework офіційно розрахована на роботу саме з операційними системами родини Microsoft Windows. З того часу вона пройшла довгий шлях від версії 1.0 до 4.8 (18 квітня 2019), і на сьогодні, не дивлячись на появу платформи нового покоління (.NET Core), все ще досить популярна: існує велика кількість програмних продуктів, бібліотек та фреймворків, які написані та розвиваються під .NET Framework.

В 2016 році додатково до .NET Framework було випущено модульну платформу .NET Core, сумісну з різноманітними операційними системами. Іншими словами, вона є кросплатформною. Кросплатформність .NET Core відкрила безліч нових сценаріїв і можливостей її застосування. Це зіграло суттєву роль в просуванні .NET серед розробників і представників бізнесу. 

Денис Чесноков:

Ідея кросплатформності в тому, що програмний продукт пишеться на конкретній мові, а потім перекладається на проміжну мову, і вже вона звертається до машинного коду. Таким чином з'являється можливість, наприклад, писати .NET-додаток з використанням мови C# для пристроїв Linux: домашніх роутерів, smart-телевізорів та інших «розумних» пристроїв, навіть для пральних машин, обладнаних контролером Raspberry PI.

Багато хто вважає, що мова С# і платформа .NET – одне і те саме. Звичайно, це не так. Вони, без сумніву, розвиваються озираючись одне на одного, але не мають суворої взаємозалежності. Наприклад, окрім офіційно підтримуваних реалізацій .NET, існують й альтернативні варіанти, як-от Mono, .NET Compact Framework, .NET Micro Framework та інші. На усіх цих платформах ми можемо використовувати мову C#, але до певної міри. З іншого боку, з .NET сумісна не лише C#, але й інші мови: F#, VB.NET і навіть C++.

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

ЧИМ ЗАЙМАЮТЬСЯ .NET-РОЗРОБНИКИ?

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

Web Development

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

Web-додатки можуть бути різної складності. Накидати невеличкий сайт на одну сторінку з картинками та посиланнями – річ нехитра. А ось для створення комплексного web-додатку потрібно багато зусиль. Яскравим прикладом додатку, простого з точки зору зовнішнього вигляду і складного з точки зору навантаження на серверну частину, є сайт Stack Overflow, відомий кожному розробнику. 

Щоб написати web-додаток під .NET, необхідно знати C# і володіти фреймворком ASP.NET MVC. Також потрібно розуміти, що таке клієнт/сервер, як влаштований протокол HTTP, REST, JavaScript, розрізняти Frontend і Backend. І якщо мова йде про сучасну розробку, то важливо мати уявлення про домени, хостинги, плани, а ще – про хмарні технології (MS Azure, Amazon, Yandex Cloud).

Client Applications

Під .NET створюють не тільки web, але й клієнтські додатки – продукти, які запускаються на персональних комп'ютерах і мобільних пристроях кінцевих користувачів. 

Із застосуванням .NET розроблено деякі компоненти операційної системи Windows, серед них – блокнот і калькулятор. Крім того, існує велика кількість додатків під .NET, зроблених індивідуальними розробниками: на цьому ресурсі можна ознайомитися з деякими з них. Розробляються й складніші продукти. Наприклад, для трейдерів – NinjaTrader, Tradesignal. Є ще цікавий додаток для бізнес-аналітиків – Microsoft Power BI, який візуалізує інформацію з будь-якого джерела, спрощує та пришвидшує роботу з великими даними. Для Desktop Client Applications переважно застосовуються технології WPF або Windows Forms – знаючи їх, ви можете створювати складні додатки для стаціонарних комп'ютерів користувачів.

Також існують клієнтські додатки для смартфонів. З допомогою .NET Core і Xamarin.Forms ви можете написати додаток, опублікувати його в Apple або Android Store, і він стане доступним кожному власнику смартфону чи планшету. 

Game Development

Використовуючи .NET можна писати ігри під Unity. Це платформа, яка базується на реалізації .NET – Mono. Під Unity написані такі відомі ігри, як Inside, Kerbal Space Program, Endless Legend та навіть Pokemon Go.

Для створення гри достатньо знати мову C# і використовувати бібліотеки платформ Mono та Unity. Це набагато простіше й швидше, оскільки не доведеться вивчати C++, а всю роботу з перетворення C# коду візьмуть на себе Mono та Unity. Вивчення цього напрямку можна розпочати зі статті «Unity : Developing Your First Game with Unity and C#».

Internet of Things (IoT)

Internet of Things (укр. «Інтернет речей») – напрямок розробки технологій для «речей», які можуть взаємодіяти між собою, із зовнішнім середовищем та інтернетом. Тут також можна застосовувати .NET – приміром, якщо ви використовуєте Raspberry PI з Windows 10 IoT Core і хочете керувати розумними чайниками, системами домашнього освітлення, безпілотними автомобілями, системами розпізнавання мовлення й автоматизованих діалогів на базі готових фреймворків. Якщо ви плануєте розвиватися в цьому напрямку, то для початку почитайте про Azure IoT, Azure IoT Hub і про те, яким чином забезпечується двостороння комунікація між сервером (хабом) і вашими розумними пристроями.

Enterprise

Enterprise – це сфера розробки продуктів для вирішення проблем бізнесу, а не кінцевих користувачів. До цих продуктів можна віднести CRM-системи для відстеження поведінки клієнтів, а також системи менеджменту інформації або документообігу. 

Enterprise-системи є комбінацією розробки web, desktop та mobile. Незважаючи на деяку ступінь універсальності, вони створюються для вирішення конкретного спектру задач. Наприклад, якщо клієнт зацікавлений в організації складного корпоративного документообігу, можливим рішенням для нього стане платформа MS SharePoint / SharePoint Online. Якщо ж мова йде про створення глобального торговельного інтернет-майданчика для великої retail-компанії, то непоганим варіантом може бути платформа Sitecore. 

Якщо ви прагнете розробляти під Enterprise, вам знадобиться знання не лише C#, .NET і JavaScript, але й інструментів, які є базою для enterprise-продукту, що проектується. Так, для продукту на основі SharePoint потрібно вивчити SharePoint-компоненти: workflows, web parts, timerjobs, custom fields, content types, features.

ЧОМУ ВАРТО РОЗВИВАТИСЯ В .NET?

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

Можна піти в Backend, стати професіоналом у WCF та ASP.NET Core і писати сервіси для додатків. А використання Razor/Blazor дозволяє створювати під .NET повноцінні web-додатки як з клієнтською, так і з серверною частинами. Якщо потрібен перехід до якого-небудь сучасного рушія (React/NG/Vue), то навчання для backend-розробника стане більш зрозумілим із застосуванням TypeScript – мови-обгортки над JavaScript, розробленої Microsoft спеціально для C#-програмістів. 

Існує ще один аргумент на користь вибору .NET – це її дружність до початкового етапу навчання. У більшості на домашньому комп'ютері встановлено ОС Windows. Набагато простіше починати кар'єру саме з .NET-платформи, тому що вона працюватиме без встановлення та конфігурування додаткового програмного забезпечення. Інші платформи потребують спеціального налаштування Windows. Скажімо, якщо ви збираєтесь опановувати Java, то спочатку на комп'ютер потрібно встановити віртуальну машину Java. А для iOS взагалі придбати MacBook і редактор XCode.

Додаткова перевага .NET для початківців – розвинене .NET-ком'юніті. На таких популярних ресурсах, як GitHub або Stack Overflow, можна знайти відповіді на питання, які неминуче виникають у спеціалістів-початківців, і навіть подивитися приклади коду. 

Денис Чесноков:

Я не рекомендую новачкам занадто захоплюватися запозиченням коду. Якщо постійно започизати код зі Stack Overflow, скоріше за все, це призведе до погіршення якості додатку, великій кількості зовнішніх залежностей і цілковитому нерозумінню, чому код написано саме так.

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

ПОРАДИ РОЗРОБНИКУ-ПОЧАТКІВЦЮ

Перш ніж обрати .NET або будь-яку іншу платформу, в першу чергу слід вивчити основи – теорію алгоритмів і теорію інформації.

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

Вибір платформи напряму залежить від того, які програмні продукти ви хочете створювати. Припустимо, для вирішення вашої задачі потрібні нейронні мережі. Тоді можливо використовувати .NET або, скажімо, Anaconda. У цих платформ різні функції та можливості для роботи з нейронними мережами. Вибір залежатиме від того, які саме функції та можливості потрібні для вирішення конкретної задачі. Якщо ви віддасте перевагу .NET, то у вашому розпорядженні буде ML.NET фреймворк і мова С#. Якщо ж вибір буде на користь Anaconda, тоді ви працюватимете з Keras і мовою Python.

Після вибору платформи і вивчення мови варто почитати про мікросервісну архітектуру: зараз багато програмних продуктів проектуються саме із застосуванням цього підходу для забезпечення взаємозамінності, простоти та зниження ступеню залежності між компонентами/технологіями/платформами. 

Крім того, важливо звернути увагу на бази даних і системи управління ними.

Денис Чесноков:

Часом у тих, хто приходить в лабораторію ЕРАМ тренінг-центру, повністю відсутні знання з баз даних. Проте найчастіше додатки обробляють певну інформацію. Тому потрібно знати хоча б одну СУБД (систему управління базами даних). Наприклад, Microsoft SQL Server і, відповідно, мову T-SQL. Також варто почитати про теорему CAP і NoSQL бази даних – на сьогодні вони широко застосовуються. 

Якщо ви обрали .NET в якості напрямку свого професійного розвитку, то основним джерелом інформації для вас стане MSDN (Microsoft Developer Network) – офіційний портал з довідковою інформацією з усіх продуктів Microsoft, а також TechNet – форум, де йдуть обговорення цих продуктів. 

Денис Чесноков:

Microsoft Developer Network слід вважати правильним джерелом інформації, незалежно від того, що пишуть у коментарях на Stack Overflow. Крім того, я не рекомендую користуватись ресурсами російською мовою. Це стосується не тільки MSDN, але також книг та статей. Часто можна зустріти автоматичний машинний переклад, який не завжди коректний. І проводити співбесіди з людьми, які оперують некоректними російськомовними термінами, дуже важко. 

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

44089