article-spots
article-carousel-spots
programs
Технології

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

12 лип 2023

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

Що таке .NET?

.NET – це платформа від Microsoft, яка дозволяє створювати програмні додатки. Перший випуск .NET Framework відбувся в 2002 році. Вважається, що .NET Framework було створено в якості альтернативи платформі Java від компанії Sun Microsystems. Головна відмінність полягає в тому, що .NET Framework офіційно розрахована на роботу саме з операційними системами родини Microsoft Windows. З того часу платформа пройшла довгий шлях від версії 1.0, і на сьогодні, не дивлячись на появу платформи нового покоління (.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, скористайтеся мапою, створеною інженерами EPAM, щоб визначити пріоритет тем і технологій, що необхідні новачкові.

Чим займаються .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, Google Cloud).

Client Applications

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

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

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

Game Development

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

Для створення гри достатньо знати мову C# і використовувати бібліотеки платформ Mono та Unity. Це набагато простіше й швидше, оскільки не доведеться вивчати C++, а всю роботу з перетворення C# коду візьмуть на себе Mono та Unity.

Internet of Things (IoT)

Інтернет речей – напрямок розробки технологій для девайсів, які можуть взаємодіяти між собою, із зовнішнім середовищем та інтернетом. Тут також можна застосовувати .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 або, скажімо, Anaconda. У цих платформ різні функції та можливості для роботи з нейронними мережами. Вибір залежатиме від того, які саме функції та можливості потрібні для вирішення конкретної задачі. Якщо ви віддасте перевагу .NET, то у вашому розпорядженні буде ML.NET фреймворк і мова С#. Якщо ж вибір буде на користь Anaconda, тоді ви працюватимете з Keras і мовою Python.

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

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

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

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

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

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