RoadMap професії ASP.NET Developer. Частина 2

RoadMap професії ASP.NET Developer. Частина 2

  • 11 травня, 2020
Сергій Артеменко
Сергій Артеменко Full Stack Developer у Ciklum, Викладач Комп'ютерної школи Hillel.

Пропонуємо спочатку прочитати першу частину статті в блозі.

ASP.NET Core

Тут послідовність буде такою:

Структура базового проекту, поняття Middleware

● MVC (Model-View-Controller) — архітектурний шаблон програмування, розділяє додаток на три компоненти: модель (Model), подання (View) і контролер (Controller). Ця модель допомагає досягти «поділу інтересів». У цьому шаблоні, призначені для користувача запити направляються в контролер. Контролер викликає модель для виконання дій користувача або отримання даних. Потім контролер передає цю модель в уявлення, і вона повертається користувачеві.

Модель в додатку MVC являє стан програми та будь-яку бізнес-логіку або операції, які повинні бути виконані їм. Модель також може містити логіку для збереження стану програми. Уявлення відповідають за подання контенту через призначений для користувача інтерфейс. В ідеалі подання має містити мінімальну логіку, і воно повинно бути пов'язане тільки з поданням контенту.

Контролери — це компоненти, які обробляють взаємодію з користувачем, працюють з моделлю і, в кінцевому рахунку, вибирають уявлення для візуалізації. У шаблоні MVC контролер є початковою точкою входу і відповідає за вибір типів моделей для роботи та подання для візуалізації. Іншими словами, контролер контролює, як додаток відповідає на цей запит. Таким чином перевага цього шаблону полягає в тому, що кожен з цих компонентів несе одну відповідальність, і їх простіше кодувати, налагоджувати і тестувати окремо.

Я рекомендую для початку прочитати книгу А. Фрімена "Pro ASP.NET Core MVC 2".

● Робота з даними.

● Razor Pages і часткові уявлення.

● Маршрутизація.

● Фільтри.

СУБД (система управління базами даних). Тут я виділю кілька — некомерційні, такі як PostgreSQL, MySql і комерційні такі як Oracle і MS SQL Server. Насправді інтерес представляють не стільки самі СУБД, як мова запитів SQL, яка в більшості своїй, однакова для всіх. Тобто я рекомендую спочатку розібратися з такими поняттями як:

● Поняття реляційної моделі.

● Поняття обмежень (первинні ключі, зовнішні ключі, check constraint). У чому переваги і недоліки. Де повинні, а де не повинні застосовуватися.

● Поняття індексування записів. Для чого необхідно. Які недоліки (уповільнення DML операції). Вибір «золотої середини».

● Нормальні форми. До 3 нормальної форми включно. OLTP і DWH (OLAP). Де застосування цих правил не бажано.

● Оператор вибору записів (SELECT).

● Скалярні підзапити в select.

● Вбудовані уявлення.

● Угруповання записів. Тонкий момент в групперовочной функції, на прикладі count (distinct column).

Тригери, функції, процедури. Розуміння переваги зберігання бізнес логіки в базі даних.

Для теорії можна прочитати А. Бьюлі «Вивчаємо SQL" 2007.

Для практики сайт sql-ex.ru. Ну а далі вивчати вже безпосередньо вашу СУБД.

Entity Framework — це бібліотека, яка дозволяє отримувати доступ до бази даних з наших програм. Він спроектований як об'єктно-реляційне відображення (ORM) і працює шляхом відображення реляційної бази даних в модель бази даних додатків. EF Core — це кроссплатформенна бібліотека, яка працює як в Windows, так і в Linux. Він був введений з платформою .NET Core, тому в назві присутнє "Core", щоб відрізняти його від версії .NET Framework. Вам треба знати як:

● створити базову конфігурацію;

● використовувати моделі і класи контексту;

● використовувати різні стилі конфігурації;

● мігрувати дані;

● створити відносини в EF Core, запитах до бази даних і змінювати вміст бази даних;

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

Ознайомитися можна в цьому джерелі — А. Фрімен "Pro Entity Framework Core 2 for ASP.NET Core MVC".

Рекомендуємо курс по темі

В даний час велика частина роботи виконується такими фреймворками, як Angular, React JS або Vue.js.

ASP.NET WEB API 2. REST API став стандартом де факто в галузі web-розробки через його здатності розщеплювати внутрішні і зовнішні частини програми і здатності одночасно обслуговувати тисячі клієнтів. Взагалі одним з переваг стека технологій на платформі .NET, є можливість створення сервісів. Так в ASP.NET ми могли створювати ASMX-веб-служби. Крім того, ми можемо використовувати більш функціональну в цьому плані технологію WCF, для створення веб-служб. Але з випуском MVC 4 і взагалі всієї платформи .NET 4.5 в нашому розпорядженні опинився ще один інструмент для створення веб-служб — Web API. Концепція Web API (яку до речі можна використовувати не тільки в MVC, а й в веб-формах) — новий підхід до реалізації веб-додатків. І на даний момент я рекомендую вам саме з цією технологією працювати!

Розпочати навчання варто з понять REST і RESTFul (легко гуглиться), а далі з сайту Microsoft.

ASP.NET Core Identity є вбудовану в ASP.NET систему аутентифікації і авторизації. Дана система дозволяє користувачам:

● створювати облікові записи;

● аутентіфіціроватися;

● керувати обліковими записами або використовувати для входу на сайт облікові записи зовнішніх провайдерів, таких як Facebook, Google, Microsoft, Twitter та інших.

Додаткові речі, які варто вивчити:

● JWT Authentication — варіант авторизації і аутентифікації з використанням популярного на сьогоднішній момент JWT-tokens.

● Тестування Web-додатків. При написанні тестів ми можемо виявити потенційні помилки на етапі розробки, що набагато краще, ніж виявлення їх в production. В результаті, як тільки наш додаток буде опубліковано, ми менше будемо витрачати часу на виправлення помилок, а більше витрачатимемо на розробку нового функціоналу, що набагато краще, чи не так?

● SOLID принципи — набір принципів, які при правильній реалізації, повинні значно поліпшити наш код. Але, як і у випадку з будь-яким принципом, кожен принцип SOLID може бути використаний не за призначенням і надмірно використаний, до такої міри, що буде контрпродуктивним. Замість того, щоб отримати зрозумілий, підтримуваний і гнучкий код, ми можемо отримати код, який знаходиться в поганому стані. Ретельний розгляд і реалізація цих принципів лише там, де це необхідно, є ключем до чистоти коду.

● Паттерни проектування з каталогу GoF, потрібні для поліпшення нашого коду, з точки зору читабельності як нами, так і іншими розробниками. Я рекомендую далеко не всі, а найбільш важливі з моєї точки зору: Builder і Fluent Builder, Fluent Builder Interface c Recursive Generics, Faceted Builder, Factory Method, Singleton, Adapter, Composite, Decorator, Command, Strategy.

● Swagger — дозволяє нам документувати наш API. Документація API — це процес надання інструкцій про те, як ефективно використовувати і інтегрувати наше API. Його можна розглядати як короткий довідковий посібник, що містить всю інформацію, необхідну для роботи з докладними відомостями про функції, класах, типах повертаються даних, аргументах і багато іншого, підтримуваних навчальними посібниками та прикладами. Наявність належної документації для нашого API дозволяє споживачам максимально швидко інтегрувати наші API і рухатися вперед в процесі розробки. Це допомагає їм зрозуміти цінність використання нашого API, підвищити шанси на прийняття нашого API і спростити підтримку.

● Впровадження залежностей (Dependency Injection). Давно стало стандартом в світі програмування.

● AutoMapper. Це проста бібліотека, яка допомагає нам перетворювати один тип об'єкта в інший.

Все вищеописане є далеко не повною дорожньою картою з вивчення. З багатьма речами ви зіткнетеся в процесі вже вашу професійну діяльність. Важливо розуміти, що існує таке поняття як предметна область і вам як розробникам необхідно буде в неї вникати, щоб розуміти як застосовувати вищеописані знання. Далі я опишу дорожню карту з боку Front End. Дане розуміння вам точно необхідно, щоб краще розуміти, як влаштована розробка в цілому.

Front-end stack

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

● JavaScript. Так само, як чотири стовпи об'єктно-орієнтованого програмування, я маю на увазі абстракцію, інкапсуляцію, поліморфізм і успадкування. Є три основних стовпи веб-розробки, а саме — HTML, CSS і JavaScript. Перші два забезпечують структуру і стиль, як було описано вище, ну а JavaScript, «оживляє» сайти, додаючи інтерактивність. Плюс це спосіб взаємодії з серверної частиною. Для сучасного ASP.Net Core розробника, надзвичайно важливо вивчити JavaScript.

● JQuery.

● Ajax.

● TypeScript. Як і у випадку з C і C ++, TypeScript можна розглядати як JavaScript ++, хоча він не такий популярний, як C ++. Доброю частиною TypeScript є те, що він додає безпеку типів (строга типізація) в код JavaScript, що означає, що ви можете виявити помилки, пов'язані з типами JavaScript, на етапі розробки. Це також полегшує розробку об'єктно-орієнтованого коду для JavaScript.

Тепер пройдемося по Frameworks. Пройшли ті часи, коли люди будували веб-сайти, використовуючи простий HTML, CSS і JavaScript. В даний час велика частина роботи виконується такими фреймворками, як Angular, React JS або Vue.js. Звичайно, є ще величезна кількість різних фреймворків, так чи інакше спрощують життя, але я б почав саме з цих, тому що вони є найбільш затребуваними.

Вони не тільки забезпечують структуру вашого коду, але і дозволяють швидко розробити веб-додаток. Який вибрати? Все залежить від того, на якому ви проекті, але хоча б познайомиться з кожним з них потрібно.

● Angular. Підтримується Google, тому вивчення Angular є хорошим вибором для будь-якого сучасного веб-розробника.

● React JS. Як і Angular, React також є популярною бібліотекою для розробки веб-додатків. Це дозволяє вам писати повторно використовувані компоненти, які потім можна використовувати для створення сучасних інтерактивних веб-сторінок. Як Angular підтримується Google, React підтримується Facebook і, отже, досить популярний.

● Vue.js. Набрав «швидкість» в минулому році, і все більше і більше людей рекомендують і використовують Vue.js. Я все ще новачок у Vue і, можливо, мені буде потрібно якийсь час, щоб вивчити його і перейти на додаток на основі Vue.

● Bootstrap. Тут все просто, повинен знати кожен. Будь-який веб-розробник і верстальник рано чи пізно замислюється про те, як йому спростити і прискорити процес верстки сайту. У зв'язку з цим, він вдається до допомоги css-фреймворків. Самий популярних з них — bootstrap.

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

Хай щастить в вашій подорожі по просторах розробки на ASP.Net Core!