SlideShare a Scribd company logo
1 of 58
eleks.comeleks.com
ASP.NET Core. Web API. HTTPS
ASP.NET Core 1.0
• Попередня назва ASP.NET 5
• Кросс-платформний фреймворк з відкритим вихідним кодом.
• Оптимальний для хмарних веб-додатків
• Новий легка та модульна магістраль HTTP запитів
• Можливість хоститингу на IIS або само-хостинг і вашому власному процесі
• Будується на .NET Core, яке підтримує справжню side-by-side версійність програм
• Повністю постачається як NuGet пакет
• Інтегрована підтримка для створення і використання NuGet пакетів
• Одно-вирівняний веб стек для Web UI та Web APIs
• Базова конфігурація середовища готова для хмарних рішень
• Вбудована підтримка інєкції залежностей
• Нові засоби що спрощують сучасну веб розробку
• Компіляція та виконання крос-платворменних ASP.NET додатків на Windows, Mac and Linux
• Відкритий вихідний код
ASP.NET Core 1.0
• ASP.NET 5 додатки білдяться й виконуються за допомогою нового .NET Execution
Environment (DNX).
• Кожен ASP.NET 5 проект є проектом DNX.
• ASP.NET 5 інтегрується з DNX через ASP.NET Application Hosting пакет
NET Execution Environment (DNX).
• .NET Execution Environment (DNX) являє собою комплект розробки програмного забезпечення
(SDK) і рантайм середовище, яке має все необхідне для створення і запуску додатків .NET на
Windows, Mac і Linux.
• Забезпечує хост-процес, CLR хостинг логіку і знаходження керованих точок входу.
• DNX був побудований для запуску крос-платформних веб-додатків ASP.NET, але він може
запускати інші типи додатків .NET теж, такі як крос-платформні консольні додатки.
NET Execution Environment (DNX).
• DNX проект є папкою з файлом project.json.
• Назва проекту є ім'ям папки.
• Ви можете використовувати проекти DnX для побудови пакетів NuGet.
• Файл project.json визначає метадані пакета, залежності вашого проекту і який фреймворк ви
хочете білдити
• Всі файли в папці за замовчуванням є частиною проекту, якщо явно не виключені в
project.json.
• Ви вказуєте для яких фреймворків ви хочете білдити, під властивістю “frameworks”.
DNX
project.json
• Залежності в DNX складаються з імені та номера версії.
• Номери версій повинні слідувати Semantic Versioning.
• Як правило залежності відносяться до встановленого пакета NuGet або до іншого проекту
DNX.
• Посилання проекту резолвляться за допомогою тимчасових папок для поточного проекту або
шляху проекту визначених за допомогою global.json файлу на рівні рішення
Dependencies
• Файл global.json також визначає мінімальну версію DNX (“SDK" версії), необхідних для
створення проекту.
• Залежноcті транзитивні в тому, що вам потрібно вказати тільки залежності верхнього рівня.
• DNX буде обробляти резолвлення всіх залежностей графа для Вас, використовуючи
встановлені пакети NuGet.
• Проект резолвиться під час виконання шляхом білдження проекту в памяті. Це означає, що у
вас є повна гнучкість для розгортання програми DNX як пакет бінарних файлів або в якості
вихідного коду.
Dependencies
• Для вирішення залежностей пекеджа, вони повинні бути встановлені.
• Ви можете використовувати DNU, щоб встановити новий пакет в існуючий проект або
відновити всі залежності пакетів для існуючого проекту. Наступна команда і завантажує і
встановлює всі пакети, які перераховані у файлі project.json:
dnu restore
Packages and feeds
• Команда є іменованим виконанням точки входу .NET з конкретними аргументами.
• Ви можете визначити команди у файлі project.json:
• Потім ви можете використовувати DNX для виконання команд, визначених вашим проектом
dnx web
• Команди можуть бути побудовані і поширюватися у вигляді пакетів NuGet.
dnu commands install MyCommand
Commands
• Хост додатоків DNX, як правило, є першою керованою точкою входу викликаною DNX і
відповідає за обробку залежності, парсингу project.json, надання додаткових сервісів і виклику
точки входу додатка.
• В якості альтернативи, ви можете мати прямі виклики DNX ваших точок. Це вимагає, щоб ваш
додаток буде повністю побудований і всі залежності, розташовані в одному каталозі.
Використання DNX без використання DNX Application Host не є поширеним явищем.
• Хост додатоків DNX надає набір послуг з додатками через ін'єкції залежностей (наприклад,
IServiceProvider, IApplicationEnvironment і ILoggerFactory).
Application Host
• Модулі компіляції є точкою розширюваності, які дозволяють брати участь в процесі компіляції
DNX.
• Ви реалізовуєте модуль компіляції шляхом реалізації інтерфейсу ICompileModule і ставлення
його в компілятор / препроцессор або компілятор / постпроцессор в вашому проекті.
Compile Modules
• ASP.NET 5 додатки визначаються використовуючи публічний клас Startup :
• Метод ConfigureServices визначає сервіси, які використовуються вашим додатком
• Метод Configure використовується щоб визначити яке пз проміжного шару (middleware)
складає вашу магістраль запитів
Startup.cs
• Сервіс є компонентом, який призначений для загального використання в додатку.
• Сервіси доступні через ін'єкції залежностей.
• ASP.NET 5 включає в себе простий вбудований контейнер інверсії управління (IoC), який
підтримує впровадження конструктора за замовчуванням, але може бути легко замінений на
IoC контейнер вибору.
• Сервіси в ASP.NET 5 бувають трьох видів: сінглтон, з областю дії і перехідні (singleton, scoped
and transient).
Сервіси
• Перехідні сервіси створюються кожен раз, коли на них є запит з контейнера. Сервіси доступні
через ін'єкції залежностей.
• Сервіси із заданою областю створюється, тільки якщо вони ще не існують в поточній області.
• Для веб-додатків, область застосування контейнера створюється для кожного запиту, так що
ви можете думати про Scoped сервіси як створювані на кожен запит.
• Singleton сервіси створюються тільки один раз.
Сервіси
• У ASP.NET 5 ви будуєте власну магістраль запитів з використанням проміжного програмного
забезпечення.
• ASP.NET 5 проміжне програмне забезпечення виконує асинхронну логіку на HttpContext, а
потім при необхідності викликає наступне проміжне програмне забезпечення в послідовності
або безпосередньо припиняє запит.
• Як правило, ви «використовуєте" проміжне програмне забезпечення шляхом виклику
відповідного методу розширення на IApplicationBuilder в вашому Configure методі.
Middleware
• ASP.NET 5 поставляється з багатим набором попередньо вбудованому проміжного
програмного забезпечення:
• Робота з статичними файлами
• Маршрутизація
• Діагностика
• Автентифікація
• Ви можете використовувати будь-який OWIN-based (Open Web Interface for .NET) middleware з
ASP.NET 5.
Middleware
• ASP.NET Application Hosting модель не слухає безпосередньо запити але замість цього
спирається на реалізацію HTTP-сервера на поверхневий запит до додатка, як набору майбутніх
інтерфейсів, які можуть складатися в HttpContext.
• ASP.NET 5 включає в себе підтримку сервера для запуску на IIS або самостійно в своєму
власному процесі.
• В операційній системі Windows ви можете розмістити свій додаток за межами IIS за допомогою
сервера WebListener, який заснований на HTTP.sys. Ви також можете хостити додаток на не –
Windows середовищі з використанням крос-платформного веб-сервера Kestrel.
Servers
• Web root вашого додатку є кореневий каталог у вашому проекті, з якого HTTP-
запити обробляються (напр., Обробка статичних файлових запитів).
• Web root на ASP.NET 5 додатку конфигурується за допомогою властивості
"Webroot" у вашому файлі project.json.
Web root
• ASP.NET 5 використовує нову модель конфігурації для обробки простих пар ім'я-значення, яке
не грунтується на System.Configuration або web.config. Ця нова модель конфігурації тягне дані з
упорядкованого множини постачальників конфігурації. Вбудовані постачальники конфігурації
підтримують різні формати файлів (XML, JSON, INI), а також змінні оточення, щоб включити
середовище-орієнтовну конфігурації середовища. Ви також можете написати свої власні
користувацькі конфігурації постачальників. Середовища, такі як Development і Production, є
першим класом поняття в ASP.NET 5, а також можна налаштувати за допомогою змінних
оточення:
Configuration
Configuration
• ASP.NET 5 призначений для повної інтеграції з різними клієнтської сторонніми фреймворками,
в тому числі AngularJS, KnockoutJS і Bootstrap.
Client-side development
1. Встановіть Visual Studio 2015 з Microsoft Web Developer Tools.
2. Встановіть оновлення ASP.NET 5
3. Відкрийте командний рядок і виконайте: dnvm upgrade
4. У випадку нерозпізнавання даної команди встановіть Powershell 4.0
5. Виконайте команду @powershell -NoProfile -ExecutionPolicy unrestricted -Command
"&{$Branch='dev';$wc=New-Object
System.Net.WebClient;$wc.Proxy=[System.Net.WebRequest]::DefaultWebProxy;$wc.Proxy.Credential
s=[System.Net.CredentialCache]::DefaultNetworkCredentials;Invoke-Expression
($wc.DownloadString('https://raw.githubusercontent.com/aspnet/Home/dev/dnvminstall.ps1'))}"
• Виконайте команду dnvm list і на етапі підтвердження виберіть Y (Yes)
Інсталяція ASP.NET 5
dnvm upgrade -r coreclr
eleks.com
Демонстрація 1
• Проект ASP.NET Core 1.0
• Нова структура рішення включає в себе рішення елементи папки з файлом global.json, а сам
веб-проект знаходиться в корені папки src.
• Нова структура також включає в себе спеціальну папку Wwwroot і розділ Dependencies на
додаток до секції References , яка була присутня в попередніх версіях
• У кореневому каталозі проекту, є також кілька нових файлів, таких як bower.json,
appsettings.json, gulpfile.js, package.json, project.json і Startup.cs.
• Ви можете помітити, що файли global.asax, packages.config і web.config зникли.
Структура проекту ASP.NET 5
dnvm upgrade -r coreclr
• ASP.NET 5 може орієнтуватись на кілька сфреймворків, що дозволяє додатку бути
розгорнутим в різних хостинг середовищах.
• Ви можете побачити, які фреймворки задані в властивостях веб-додатку, клацнувши правою
кнопкою миші на веб-проекту в Solution Explorer і вибравши пункт Properties :
Framework Target
• Використовується для визначення на стороні сервера залежностей, а також іншу інформацію
щодо конкретних проектів.
• Властивість UserSecretsId містить значення, яке виступає в якості унікального ідентифікатора
вашого веб-додатка
• Властивість version визначає поточну версію проекту. Можна також вказати інші метадані про
проект, такі як автори і опис.
• Ви можете використовувати параметр compilationOptions, щоб встановити налаштування
програми, такі як languageVersion і useOssSigning.
project.json
• Зазвичай значення, які знаходиться в розділі залежностей відносяться до встановленого
пакета NuGet або до іншого проекту.
• Секція commands дозволяє налаштувати команди, які можуть бути запущені з командного
рядка (наприклад, запустити веб-сайт або запустити тести).
• Розділ frameworks позначає, які цільові фреймворки будуть білдитись, і які залежності повинні
бути включені.
project.json
• Розділ exclude використовується для ідентифікації файлів і папок, які повинні бути виключені
з збірки. Точно так як і publishExclude використовується для ідентифікації частин контенту
проекту, які повинні бути виключені при публікації сайту
• Розділ scripts використовується для вказівки, коли скрипти автоматизації збірки повинні
виконуватись. Visual Studio тепер вбудовану підтримку для виконання таких сценаріїв до і
після зазначених подій.
• ASP.NET шаблон проекту за замовчуванням має сценарії в місці для запуску під час
postrestore і prepare, що встановлють залежноств на стороні клієнта.
project.json
• Файл global.json використовується для настройки рішення в цілому. За замовчуванням він
включає в себе тільки дві секції, projects і JDK.
• Властивість projects визначає, які папки містять вихідний код для рішення.
• Властивість sdk визначає версії DNX (.NET Execution Environment), що Visual Studio буде
використовувати при відкритті рішення.
global.json
• Папка Wwwroot представляє фактичний корінь (root) веб-додатка при запуску на веб-сервері.
Статичні файли, такі як appsettings.json, які не перебувають в Wwwroot ніколи не будуть
доступні, і немає необхідності створювати спеціальні правила для блокування доступу до
конфіденційних файлів. Замість чорних списків доступу до конфіденційних файлів, більш
безпечний підхід – білий список, при цьому тільки ті файли що в папці Wwwroot доступні через
веб-запити. Крім того, в той час як папка є веб рутом по замовчуванню, конкретну кореневу
папку можна налаштувати в project.json.
Папка wwwroot
• Папка Dependencies містить дві папки: Bower і NPM. Ці папки відповідають двом менеджерам
пакетів з відповідними іменами і вони використовуються, щоб підтягувати залежності та
інструменти на стороні клієнта. Розширення папки показує, які залежності наразі
управляються кожним інструментом, і яка їх поточна версія використовується в проекті.
• Bower dependencies контролюються bower.json файлами, розташованими в кожній з підпапок
Wwwroot / Lib. Кожна залежність потім додатково налаштовується у відповідній секції,
використовуючи свій власний файл bower.json, вказавши, як він повинен бути розгорнутий в
папку Wwwroot.
Client Side Dependency Management
• ASP.NET 5 додатки визначаються використовуючи публічний клас Startup :
• Метод ConfigureServices визначає сервіси, які використовуються вашим додатком
• Метод Configure використовується щоб визначити яке пз проміжного шару (middleware)
складає вашу магістраль запитів
Startup.cs
• Встановіть HTTP Platform Handler версії 1.2 або вище
• В Solution Explorer в контекстному меню проекту виберіть Publish.
• В діалозі Publish Web на вкладці Profile виберіть File System.
• Введіть імя профілю. У вкладці Connection ви можете змінити шлях публікації У вкладці
Settings ви можете задати налаштування публікації
• Перейдіть до папки куди паблішили проект
• Скопіюйте каталоги approot і Wwwroot на цільовий сервері IIS.
• У диспетчері IIS створіть новий веб-сайт і встановіть фізичний шлях до Wwwroot.
Publishing to IIS
eleks.com
Переривчик 5хв
• Web API являє собою інтерфейс прикладного програмування (API) для будь-якого
веб-сервера або веб-браузер. Це концепція веб-розробки, як правило,
обмежується до клієнт-серверної взаємодії і, зазвичай, не включає веб сервер або
деталей імплементації браузера, таких як SAPIs або АРІ браузера, крім тих що
публічно доступні по віддалених веб-додатків.
Web API
• На стороні сервера Web API представляє собою програмний інтерфейс, що
складається з одного або більше відкритих кінцевих точок (endpoints) для певної
системи передачі повідомлень типу запиту-відповідь, як правило, виражене в JSON
або XML, який піддається впливу через веб - найчастіше за допомогою основаного
на HTTP веб-сервера.
Web API server-side
• Mashups це веб-додатки, які поєднують в собі використання декількох клієн-серверних Web
API .
• Webhooks це Web API , на стороні сервера, які приймають в якості вхідних даних універсальний
ідентифікатор ресурсу Uniform Resource Identifier (URI), який призначений для використання як
віддалений іменований канал або тип зворотного виклику, таким чином що сервер діє як
клієнт щоб обробити надані URI і викликати подію на іншому сервері, який обробляє цю подію,
таким чином забезпечуючи тип з'єднання рівноправних вузлів peer-to-peer IPC.
Web API server-side
eleks.com
Демонстрація 5
• Створення простого проекту Web API
eleks.com
Демонстрація 5
• Проект Веб АРІ - структура
• Основний контроллер, який реалізує фукціонал Web API
• Обробка HTTP матодів
• REST
ValuesController
• Всі визначення маршрутів для Web API знаходяться в файлі WebApiConfig.cs (в
папці App_Start)
Маршрутизація в Web API
• В даному випадку визначено один маршрут, де в якості другого параметра
виступає контролер, а третій необов'язковий параметр представляє певний
ідентифікатор. Таким чином, на відміну від маршрутів звичайних контролерів у нас
тут немає дії, тільки контролер і додатковий необов'язковий параметр
• В результаті звернення api / values буде відповідати зверненню до контролера
ValuesCotroller, причому майже до всіх дій відразу (крім Get (int id) - так як в даному
випадку необхідний ще ідентифікатор, наприклад api / values / 2)
Маршрутизація в Web API
• Але, як вже зазначалося, в залежності від використаного методу HTTP фреймворк
буде розрізняти до якї саме дії відноситься поточний запит
Маршрутизація в Web API
• При створенні методів контролера Web API діють деякі умовності. Так, імена
методів за замовчуванням повинні починатися з імені призначеного для них
методу HTTP. У випадку з контролером за замовчуванням все просто: всі методи
дій носять назви методів HTTP.
• Однак ми можемо використовувати і будь-які інші імена без префіксів, але в цьому
випадку нам треба буде явно вказати метод HTTP у вигляді атрибуту, наприклад:
Умовності при найменуванні методів
• Схема URI, що синтаксично ідентична http: схемі, яка зазвичай використовується для доступу
до ресурсів Інтернет.
• Використання https: URL вказує, що протокол HTTP має використовуватися, але з іншим портом
за замовчуванням (443) і додатковим шаром шифрування/автентифікації між HTTP і TCP.
• HTTPS це не окремий протокол, а HTTP через SSL або TLS
• Щоб підготувати веб-сервер для прийняття https транзакцій адміністратор повинен створити сертифікат з
відкритим ключем для веб-сервера. Цей сертифікат повинен бути підписаний уповноваженим на видачу
сертифікатів (certificate authority), який засвідчує, що отримувач сертифікату — саме той, про кого йдеться у
сертифікаті. Браузери розповсюджуються з сертифікатами уповноважених на видачу сертифікатів верхнього
рівня організацій, таким чином браузери можуть перевірити сертифікати підписані ними.
HTTPS
• Криптографічний протокол, який забезпечує встановлення безпечного з'єднання між клієнтом
і сервером.
• Протокол SSL складається з двох підпротоколів: протокол SSL запису і рукостискання.
• Для роботи SSL потрібно, щоб на сервері був SSL- сертифікат.
• SSL надає канал, що має три основні властивості:
• Аутентифікація - Сервер завжди автентифікований, в той час як клієнт автентифікований в залежності від
алгоритму.
• Цілісність - Обмін повідомленнями включає в себе перевірку цілісності.
• Конфіденційність каналу - Шифрування використовується після встановлення з'єднання і використовується
для всіх наступних повідомлень.
SSL (Secure Sockets Layer)
• Криптографічний протокол, що надає можливості безпечної передачі даних в Інтернет для
навігації, отримання пошти, спілкування та передачі інших даних.
• Використовує асиметричне шифрування і сертифікати X.509.
• Існують незначні відмінності між TLS та SSL, але, в основі, протокол той самий.
• В даній поточній версії протоколу доступні такі алгоритми:
• Для обміну ключами і перевірки їх справжності використовують комбінації алгоритмів: RSA (асиметричний
шифр), Diffie-Hellman (безпечний обмін ключами), DSA (алгоритм цифрового підпису) і алгоритми технології
Fortezza.
• Для симетричного шифрування: RC2, RC4, IDEA, DES, Triple DES або AES;
• Для хеш-функцій: MD5 або SHA.
TLS (Transport Layer Security)
• Створення або отримати сертифікат. Для тестування ви можете створити самостійно
підписаний сертифікат.
• Додати HTTPS binding.
Enabling SSL on the Server
• Якщо у вас є одночасно HTTPS і HTTP прив'язки, клієнти як і раніше можуть використовувати HTTP для доступу
до сайту. Ви можете дозволити доступ до деяких ресурсів через HTTP, в той час як інші ресурси
вимагаютимуть SSL. В цьому випадку рекомендується використовувати фільтр дій і вимагати SSL для
захищених ресурсів.
Enforcing SSL in a Web API Controller
• Потім ви можете додати цей фільтр до будь яких Web API дій
Enforcing SSL in a Web API Controller
IIS. Отримати сертифікас
• Виберіть Bindings... на панелі дій і натисніть Add…
IIS. Створити біндінги
Перевірити біндінги
eleks.com
Summary
© Denys Prylutskyi, 2015
Практичне завдання
1. Дано структуру «Працівники компанії», яка містить обєкти:
Працівник (Ідентифікатор, Прізвище, Імя, адреса, телефон, посада, підрозділ,
керівник),
Підрозділ (Ідентифікатор, Опис)
Адреса(Країна, місто, вулиця, будинок)
За допомогою Web API реалізувати РЕСТ веб сервіс, який дозволить отримати список
працівників, отримати одного за ідентифікатором, змінити дані працівника за
ідентифікатором
Реалізувати клієнт, який буде взаємодіяти з сервісом
2. Встановити ASP.NET 5

More Related Content

What's hot

10 asp.net
10 asp.net 10 asp.net
10 asp.net eleksdev
 
Windows service
Windows serviceWindows service
Windows serviceeleksdev
 
iPhone Objective-C Development (ukr) (2009)
iPhone Objective-C Development (ukr) (2009)iPhone Objective-C Development (ukr) (2009)
iPhone Objective-C Development (ukr) (2009)Anatoliy Okhotnikov
 
12 Architecture
12 Architecture12 Architecture
12 Architectureeleksdev
 
07 Database Access
07 Database Access07 Database Access
07 Database Accesseleksdev
 
11 web services
11 web services11 web services
11 web serviceseleksdev
 
12 - gradle. evoliutsiia system avtomatychnoi zbirky - sviatoslav babych - it...
12 - gradle. evoliutsiia system avtomatychnoi zbirky - sviatoslav babych - it...12 - gradle. evoliutsiia system avtomatychnoi zbirky - sviatoslav babych - it...
12 - gradle. evoliutsiia system avtomatychnoi zbirky - sviatoslav babych - it...Igor Bronovskyy
 
Lecture 06. iOS Programming. Основи Objective-C
Lecture 06. iOS Programming. Основи Objective-CLecture 06. iOS Programming. Основи Objective-C
Lecture 06. iOS Programming. Основи Objective-CMaksym Davydov
 
[Knowledge Sharing] - Unit Testing by Pavlo Serdyuk (UKR)
[Knowledge Sharing] - Unit Testing by Pavlo Serdyuk (UKR)[Knowledge Sharing] - Unit Testing by Pavlo Serdyuk (UKR)
[Knowledge Sharing] - Unit Testing by Pavlo Serdyuk (UKR)Exoft LLC
 
Lecture 09 Android Storage
Lecture 09 Android StorageLecture 09 Android Storage
Lecture 09 Android StorageMaksym Davydov
 
'GOLANG USAGE IN DEVELOPMENT OF NODE.JS APPLICATIONS (NODE.JS: IN GO WE TRUST...
'GOLANG USAGE IN DEVELOPMENT OF NODE.JS APPLICATIONS (NODE.JS: IN GO WE TRUST...'GOLANG USAGE IN DEVELOPMENT OF NODE.JS APPLICATIONS (NODE.JS: IN GO WE TRUST...
'GOLANG USAGE IN DEVELOPMENT OF NODE.JS APPLICATIONS (NODE.JS: IN GO WE TRUST...OdessaJS Conf
 
System programing module 1. Processes
System programing module 1. ProcessesSystem programing module 1. Processes
System programing module 1. ProcessesAndrii Hladkyi
 
System programing module 1
System programing module 1System programing module 1
System programing module 1Andrii Hladkyi
 
System programing module 2
System programing module 2System programing module 2
System programing module 2Andrii Hladkyi
 
System programing module 2. Threads
System programing module 2. ThreadsSystem programing module 2. Threads
System programing module 2. ThreadsAndrii Hladkyi
 
"Request Lifecycle at Prom.ua", Vitaliy Kharytonskiy
"Request Lifecycle at Prom.ua", Vitaliy Kharytonskiy"Request Lifecycle at Prom.ua", Vitaliy Kharytonskiy
"Request Lifecycle at Prom.ua", Vitaliy KharytonskiyFwdays
 

What's hot (20)

10 asp.net
10 asp.net 10 asp.net
10 asp.net
 
Windows service
Windows serviceWindows service
Windows service
 
iPhone Objective-C Development (ukr) (2009)
iPhone Objective-C Development (ukr) (2009)iPhone Objective-C Development (ukr) (2009)
iPhone Objective-C Development (ukr) (2009)
 
12 Architecture
12 Architecture12 Architecture
12 Architecture
 
Rpc
RpcRpc
Rpc
 
07 Database Access
07 Database Access07 Database Access
07 Database Access
 
11 web services
11 web services11 web services
11 web services
 
12 - gradle. evoliutsiia system avtomatychnoi zbirky - sviatoslav babych - it...
12 - gradle. evoliutsiia system avtomatychnoi zbirky - sviatoslav babych - it...12 - gradle. evoliutsiia system avtomatychnoi zbirky - sviatoslav babych - it...
12 - gradle. evoliutsiia system avtomatychnoi zbirky - sviatoslav babych - it...
 
Xdebug (ukr)
Xdebug (ukr)Xdebug (ukr)
Xdebug (ukr)
 
Lecture 06. iOS Programming. Основи Objective-C
Lecture 06. iOS Programming. Основи Objective-CLecture 06. iOS Programming. Основи Objective-C
Lecture 06. iOS Programming. Основи Objective-C
 
[Knowledge Sharing] - Unit Testing by Pavlo Serdyuk (UKR)
[Knowledge Sharing] - Unit Testing by Pavlo Serdyuk (UKR)[Knowledge Sharing] - Unit Testing by Pavlo Serdyuk (UKR)
[Knowledge Sharing] - Unit Testing by Pavlo Serdyuk (UKR)
 
Lecture 09 Android Storage
Lecture 09 Android StorageLecture 09 Android Storage
Lecture 09 Android Storage
 
Design patterns part 1
Design patterns part 1Design patterns part 1
Design patterns part 1
 
'GOLANG USAGE IN DEVELOPMENT OF NODE.JS APPLICATIONS (NODE.JS: IN GO WE TRUST...
'GOLANG USAGE IN DEVELOPMENT OF NODE.JS APPLICATIONS (NODE.JS: IN GO WE TRUST...'GOLANG USAGE IN DEVELOPMENT OF NODE.JS APPLICATIONS (NODE.JS: IN GO WE TRUST...
'GOLANG USAGE IN DEVELOPMENT OF NODE.JS APPLICATIONS (NODE.JS: IN GO WE TRUST...
 
System programing module 1. Processes
System programing module 1. ProcessesSystem programing module 1. Processes
System programing module 1. Processes
 
System programing module 1
System programing module 1System programing module 1
System programing module 1
 
Presentation
PresentationPresentation
Presentation
 
System programing module 2
System programing module 2System programing module 2
System programing module 2
 
System programing module 2. Threads
System programing module 2. ThreadsSystem programing module 2. Threads
System programing module 2. Threads
 
"Request Lifecycle at Prom.ua", Vitaliy Kharytonskiy
"Request Lifecycle at Prom.ua", Vitaliy Kharytonskiy"Request Lifecycle at Prom.ua", Vitaliy Kharytonskiy
"Request Lifecycle at Prom.ua", Vitaliy Kharytonskiy
 

Viewers also liked

Improving rpc bkp
Improving rpc bkpImproving rpc bkp
Improving rpc bkpeleksdev
 
Frontend basics
Frontend basicsFrontend basics
Frontend basicseleksdev
 
SDLC. QA Role
SDLC. QA RoleSDLC. QA Role
SDLC. QA Roleeleksdev
 
SDLC. PM Role
SDLC. PM RoleSDLC. PM Role
SDLC. PM Roleeleksdev
 
Advanced styles
Advanced stylesAdvanced styles
Advanced styleseleksdev
 
Continuous Delivery concept overview. Continuous Integration Systems. DevOps ...
Continuous Delivery concept overview. Continuous Integration Systems. DevOps ...Continuous Delivery concept overview. Continuous Integration Systems. DevOps ...
Continuous Delivery concept overview. Continuous Integration Systems. DevOps ...eleksdev
 
G rpc lection1
G rpc lection1G rpc lection1
G rpc lection1eleksdev
 
SDLC. BA Role
SDLC. BA RoleSDLC. BA Role
SDLC. BA Roleeleksdev
 
SDLC. UX Role
SDLC. UX RoleSDLC. UX Role
SDLC. UX Roleeleksdev
 
Css animation, html5 api
Css animation, html5 apiCss animation, html5 api
Css animation, html5 apieleksdev
 
Sql 04n edited
Sql 04n editedSql 04n edited
Sql 04n editedeleksdev
 
SQL Grouping, Joins
SQL Grouping, JoinsSQL Grouping, Joins
SQL Grouping, Joinseleksdev
 
SQL: Indexes, Select operator
SQL: Indexes, Select operatorSQL: Indexes, Select operator
SQL: Indexes, Select operatoreleksdev
 
Communication in android
Communication in androidCommunication in android
Communication in androideleksdev
 
NoSQL basics
NoSQL basicsNoSQL basics
NoSQL basicseleksdev
 
Lecture android best practices
Lecture   android best practicesLecture   android best practices
Lecture android best practiceseleksdev
 
Hello android world
Hello android worldHello android world
Hello android worldeleksdev
 
sql introduction
sql introductionsql introduction
sql introductioneleksdev
 
Android location and sensors API
Android location and sensors APIAndroid location and sensors API
Android location and sensors APIeleksdev
 

Viewers also liked (20)

Improving rpc bkp
Improving rpc bkpImproving rpc bkp
Improving rpc bkp
 
Frontend basics
Frontend basicsFrontend basics
Frontend basics
 
SDLC. QA Role
SDLC. QA RoleSDLC. QA Role
SDLC. QA Role
 
SDLC. PM Role
SDLC. PM RoleSDLC. PM Role
SDLC. PM Role
 
Advanced styles
Advanced stylesAdvanced styles
Advanced styles
 
Continuous Delivery concept overview. Continuous Integration Systems. DevOps ...
Continuous Delivery concept overview. Continuous Integration Systems. DevOps ...Continuous Delivery concept overview. Continuous Integration Systems. DevOps ...
Continuous Delivery concept overview. Continuous Integration Systems. DevOps ...
 
G rpc lection1
G rpc lection1G rpc lection1
G rpc lection1
 
SDLC. BA Role
SDLC. BA RoleSDLC. BA Role
SDLC. BA Role
 
SDLC. UX Role
SDLC. UX RoleSDLC. UX Role
SDLC. UX Role
 
Css animation, html5 api
Css animation, html5 apiCss animation, html5 api
Css animation, html5 api
 
Sql 04n edited
Sql 04n editedSql 04n edited
Sql 04n edited
 
tsql
tsqltsql
tsql
 
SQL Grouping, Joins
SQL Grouping, JoinsSQL Grouping, Joins
SQL Grouping, Joins
 
SQL: Indexes, Select operator
SQL: Indexes, Select operatorSQL: Indexes, Select operator
SQL: Indexes, Select operator
 
Communication in android
Communication in androidCommunication in android
Communication in android
 
NoSQL basics
NoSQL basicsNoSQL basics
NoSQL basics
 
Lecture android best practices
Lecture   android best practicesLecture   android best practices
Lecture android best practices
 
Hello android world
Hello android worldHello android world
Hello android world
 
sql introduction
sql introductionsql introduction
sql introduction
 
Android location and sensors API
Android location and sensors APIAndroid location and sensors API
Android location and sensors API
 

Similar to Aspnet core

Continious integration jet brains teamcity. Віталій Галушка
Continious integration jet brains teamcity. Віталій ГалушкаContinious integration jet brains teamcity. Віталій Галушка
Continious integration jet brains teamcity. Віталій ГалушкаHRdepartment
 
Alexey Borisenko - Network Programmability using Python
Alexey Borisenko - Network Programmability using PythonAlexey Borisenko - Network Programmability using Python
Alexey Borisenko - Network Programmability using PythonPyCon Odessa
 
Global logic tech talk switching to Angular.js
Global logic tech talk switching to Angular.jsGlobal logic tech talk switching to Angular.js
Global logic tech talk switching to Angular.jsPavlo Iuriichuk
 
Павло Юрійчук — Перехід на Angular.js. Howto
Павло Юрійчук — Перехід на Angular.js. HowtoПавло Юрійчук — Перехід на Angular.js. Howto
Павло Юрійчук — Перехід на Angular.js. HowtoGlobalLogic Ukraine
 
ASP.Net Core Services
ASP.Net Core ServicesASP.Net Core Services
ASP.Net Core ServicesVictor Haydin
 
основи програмування 1
основи програмування  1основи програмування  1
основи програмування 1CDN_IF
 
"Key considerations in implementing a distributed message-sending system usin...
"Key considerations in implementing a distributed message-sending system usin..."Key considerations in implementing a distributed message-sending system usin...
"Key considerations in implementing a distributed message-sending system usin...Fwdays
 
Рогач А.О. (MITDE - 2013)
Рогач А.О. (MITDE - 2013)Рогач А.О. (MITDE - 2013)
Рогач А.О. (MITDE - 2013)ITEA Conferences
 
Caliburn Micro Overview
Caliburn Micro OverviewCaliburn Micro Overview
Caliburn Micro OverviewKiev ALT.NET
 
QA Fest 2016. Яна Кокряшкіна. Паралельний запуск автоматизованих тестів за до...
QA Fest 2016. Яна Кокряшкіна. Паралельний запуск автоматизованих тестів за до...QA Fest 2016. Яна Кокряшкіна. Паралельний запуск автоматизованих тестів за до...
QA Fest 2016. Яна Кокряшкіна. Паралельний запуск автоматизованих тестів за до...QAFest
 
Корнілов Андрій
Корнілов АндрійКорнілов Андрій
Корнілов АндрійOleg Nazarevych
 
Казьмірчук Р.Р. (06.03.2012)
Казьмірчук Р.Р. (06.03.2012)Казьмірчук Р.Р. (06.03.2012)
Казьмірчук Р.Р. (06.03.2012)garasym
 
Android: Інструменти програміста
Android: Інструменти програмістаAndroid: Інструменти програміста
Android: Інструменти програмістаAnatoliy Odukha
 

Similar to Aspnet core (20)

Wcf module 2
Wcf module 2Wcf module 2
Wcf module 2
 
ASP.Net basics
ASP.Net basics ASP.Net basics
ASP.Net basics
 
ASP.Net MVC
ASP.Net MVCASP.Net MVC
ASP.Net MVC
 
NodeJS.pptx
NodeJS.pptxNodeJS.pptx
NodeJS.pptx
 
Continious integration jet brains teamcity. Віталій Галушка
Continious integration jet brains teamcity. Віталій ГалушкаContinious integration jet brains teamcity. Віталій Галушка
Continious integration jet brains teamcity. Віталій Галушка
 
Wcf module 1
Wcf module 1Wcf module 1
Wcf module 1
 
Alexey Borisenko - Network Programmability using Python
Alexey Borisenko - Network Programmability using PythonAlexey Borisenko - Network Programmability using Python
Alexey Borisenko - Network Programmability using Python
 
Global logic tech talk switching to Angular.js
Global logic tech talk switching to Angular.jsGlobal logic tech talk switching to Angular.js
Global logic tech talk switching to Angular.js
 
Павло Юрійчук — Перехід на Angular.js. Howto
Павло Юрійчук — Перехід на Angular.js. HowtoПавло Юрійчук — Перехід на Angular.js. Howto
Павло Юрійчук — Перехід на Angular.js. Howto
 
ASP.Net Core Services
ASP.Net Core ServicesASP.Net Core Services
ASP.Net Core Services
 
основи програмування 1
основи програмування  1основи програмування  1
основи програмування 1
 
"Key considerations in implementing a distributed message-sending system usin...
"Key considerations in implementing a distributed message-sending system usin..."Key considerations in implementing a distributed message-sending system usin...
"Key considerations in implementing a distributed message-sending system usin...
 
Рогач А.О. (MITDE - 2013)
Рогач А.О. (MITDE - 2013)Рогач А.О. (MITDE - 2013)
Рогач А.О. (MITDE - 2013)
 
вашенюк
вашенюквашенюк
вашенюк
 
Caliburn Micro Overview
Caliburn Micro OverviewCaliburn Micro Overview
Caliburn Micro Overview
 
QA Fest 2016. Яна Кокряшкіна. Паралельний запуск автоматизованих тестів за до...
QA Fest 2016. Яна Кокряшкіна. Паралельний запуск автоматизованих тестів за до...QA Fest 2016. Яна Кокряшкіна. Паралельний запуск автоматизованих тестів за до...
QA Fest 2016. Яна Кокряшкіна. Паралельний запуск автоматизованих тестів за до...
 
Корнілов Андрій
Корнілов АндрійКорнілов Андрій
Корнілов Андрій
 
Vue.js
Vue.jsVue.js
Vue.js
 
Казьмірчук Р.Р. (06.03.2012)
Казьмірчук Р.Р. (06.03.2012)Казьмірчук Р.Р. (06.03.2012)
Казьмірчук Р.Р. (06.03.2012)
 
Android: Інструменти програміста
Android: Інструменти програмістаAndroid: Інструменти програміста
Android: Інструменти програміста
 

Aspnet core

  • 2. ASP.NET Core 1.0 • Попередня назва ASP.NET 5 • Кросс-платформний фреймворк з відкритим вихідним кодом. • Оптимальний для хмарних веб-додатків
  • 3. • Новий легка та модульна магістраль HTTP запитів • Можливість хоститингу на IIS або само-хостинг і вашому власному процесі • Будується на .NET Core, яке підтримує справжню side-by-side версійність програм • Повністю постачається як NuGet пакет • Інтегрована підтримка для створення і використання NuGet пакетів • Одно-вирівняний веб стек для Web UI та Web APIs • Базова конфігурація середовища готова для хмарних рішень • Вбудована підтримка інєкції залежностей • Нові засоби що спрощують сучасну веб розробку • Компіляція та виконання крос-платворменних ASP.NET додатків на Windows, Mac and Linux • Відкритий вихідний код
  • 5. • ASP.NET 5 додатки білдяться й виконуються за допомогою нового .NET Execution Environment (DNX). • Кожен ASP.NET 5 проект є проектом DNX. • ASP.NET 5 інтегрується з DNX через ASP.NET Application Hosting пакет NET Execution Environment (DNX).
  • 6. • .NET Execution Environment (DNX) являє собою комплект розробки програмного забезпечення (SDK) і рантайм середовище, яке має все необхідне для створення і запуску додатків .NET на Windows, Mac і Linux. • Забезпечує хост-процес, CLR хостинг логіку і знаходження керованих точок входу. • DNX був побудований для запуску крос-платформних веб-додатків ASP.NET, але він може запускати інші типи додатків .NET теж, такі як крос-платформні консольні додатки. NET Execution Environment (DNX).
  • 7. • DNX проект є папкою з файлом project.json. • Назва проекту є ім'ям папки. • Ви можете використовувати проекти DnX для побудови пакетів NuGet. • Файл project.json визначає метадані пакета, залежності вашого проекту і який фреймворк ви хочете білдити • Всі файли в папці за замовчуванням є частиною проекту, якщо явно не виключені в project.json. • Ви вказуєте для яких фреймворків ви хочете білдити, під властивістю “frameworks”. DNX
  • 9. • Залежності в DNX складаються з імені та номера версії. • Номери версій повинні слідувати Semantic Versioning. • Як правило залежності відносяться до встановленого пакета NuGet або до іншого проекту DNX. • Посилання проекту резолвляться за допомогою тимчасових папок для поточного проекту або шляху проекту визначених за допомогою global.json файлу на рівні рішення Dependencies
  • 10. • Файл global.json також визначає мінімальну версію DNX (“SDK" версії), необхідних для створення проекту. • Залежноcті транзитивні в тому, що вам потрібно вказати тільки залежності верхнього рівня. • DNX буде обробляти резолвлення всіх залежностей графа для Вас, використовуючи встановлені пакети NuGet. • Проект резолвиться під час виконання шляхом білдження проекту в памяті. Це означає, що у вас є повна гнучкість для розгортання програми DNX як пакет бінарних файлів або в якості вихідного коду. Dependencies
  • 11. • Для вирішення залежностей пекеджа, вони повинні бути встановлені. • Ви можете використовувати DNU, щоб встановити новий пакет в існуючий проект або відновити всі залежності пакетів для існуючого проекту. Наступна команда і завантажує і встановлює всі пакети, які перераховані у файлі project.json: dnu restore Packages and feeds
  • 12. • Команда є іменованим виконанням точки входу .NET з конкретними аргументами. • Ви можете визначити команди у файлі project.json: • Потім ви можете використовувати DNX для виконання команд, визначених вашим проектом dnx web • Команди можуть бути побудовані і поширюватися у вигляді пакетів NuGet. dnu commands install MyCommand Commands
  • 13. • Хост додатоків DNX, як правило, є першою керованою точкою входу викликаною DNX і відповідає за обробку залежності, парсингу project.json, надання додаткових сервісів і виклику точки входу додатка. • В якості альтернативи, ви можете мати прямі виклики DNX ваших точок. Це вимагає, щоб ваш додаток буде повністю побудований і всі залежності, розташовані в одному каталозі. Використання DNX без використання DNX Application Host не є поширеним явищем. • Хост додатоків DNX надає набір послуг з додатками через ін'єкції залежностей (наприклад, IServiceProvider, IApplicationEnvironment і ILoggerFactory). Application Host
  • 14. • Модулі компіляції є точкою розширюваності, які дозволяють брати участь в процесі компіляції DNX. • Ви реалізовуєте модуль компіляції шляхом реалізації інтерфейсу ICompileModule і ставлення його в компілятор / препроцессор або компілятор / постпроцессор в вашому проекті. Compile Modules
  • 15. • ASP.NET 5 додатки визначаються використовуючи публічний клас Startup : • Метод ConfigureServices визначає сервіси, які використовуються вашим додатком • Метод Configure використовується щоб визначити яке пз проміжного шару (middleware) складає вашу магістраль запитів Startup.cs
  • 16. • Сервіс є компонентом, який призначений для загального використання в додатку. • Сервіси доступні через ін'єкції залежностей. • ASP.NET 5 включає в себе простий вбудований контейнер інверсії управління (IoC), який підтримує впровадження конструктора за замовчуванням, але може бути легко замінений на IoC контейнер вибору. • Сервіси в ASP.NET 5 бувають трьох видів: сінглтон, з областю дії і перехідні (singleton, scoped and transient). Сервіси
  • 17. • Перехідні сервіси створюються кожен раз, коли на них є запит з контейнера. Сервіси доступні через ін'єкції залежностей. • Сервіси із заданою областю створюється, тільки якщо вони ще не існують в поточній області. • Для веб-додатків, область застосування контейнера створюється для кожного запиту, так що ви можете думати про Scoped сервіси як створювані на кожен запит. • Singleton сервіси створюються тільки один раз. Сервіси
  • 18. • У ASP.NET 5 ви будуєте власну магістраль запитів з використанням проміжного програмного забезпечення. • ASP.NET 5 проміжне програмне забезпечення виконує асинхронну логіку на HttpContext, а потім при необхідності викликає наступне проміжне програмне забезпечення в послідовності або безпосередньо припиняє запит. • Як правило, ви «використовуєте" проміжне програмне забезпечення шляхом виклику відповідного методу розширення на IApplicationBuilder в вашому Configure методі. Middleware
  • 19. • ASP.NET 5 поставляється з багатим набором попередньо вбудованому проміжного програмного забезпечення: • Робота з статичними файлами • Маршрутизація • Діагностика • Автентифікація • Ви можете використовувати будь-який OWIN-based (Open Web Interface for .NET) middleware з ASP.NET 5. Middleware
  • 20. • ASP.NET Application Hosting модель не слухає безпосередньо запити але замість цього спирається на реалізацію HTTP-сервера на поверхневий запит до додатка, як набору майбутніх інтерфейсів, які можуть складатися в HttpContext. • ASP.NET 5 включає в себе підтримку сервера для запуску на IIS або самостійно в своєму власному процесі. • В операційній системі Windows ви можете розмістити свій додаток за межами IIS за допомогою сервера WebListener, який заснований на HTTP.sys. Ви також можете хостити додаток на не – Windows середовищі з використанням крос-платформного веб-сервера Kestrel. Servers
  • 21. • Web root вашого додатку є кореневий каталог у вашому проекті, з якого HTTP- запити обробляються (напр., Обробка статичних файлових запитів). • Web root на ASP.NET 5 додатку конфигурується за допомогою властивості "Webroot" у вашому файлі project.json. Web root
  • 22. • ASP.NET 5 використовує нову модель конфігурації для обробки простих пар ім'я-значення, яке не грунтується на System.Configuration або web.config. Ця нова модель конфігурації тягне дані з упорядкованого множини постачальників конфігурації. Вбудовані постачальники конфігурації підтримують різні формати файлів (XML, JSON, INI), а також змінні оточення, щоб включити середовище-орієнтовну конфігурації середовища. Ви також можете написати свої власні користувацькі конфігурації постачальників. Середовища, такі як Development і Production, є першим класом поняття в ASP.NET 5, а також можна налаштувати за допомогою змінних оточення: Configuration
  • 24. • ASP.NET 5 призначений для повної інтеграції з різними клієнтської сторонніми фреймворками, в тому числі AngularJS, KnockoutJS і Bootstrap. Client-side development
  • 25. 1. Встановіть Visual Studio 2015 з Microsoft Web Developer Tools. 2. Встановіть оновлення ASP.NET 5 3. Відкрийте командний рядок і виконайте: dnvm upgrade 4. У випадку нерозпізнавання даної команди встановіть Powershell 4.0 5. Виконайте команду @powershell -NoProfile -ExecutionPolicy unrestricted -Command "&{$Branch='dev';$wc=New-Object System.Net.WebClient;$wc.Proxy=[System.Net.WebRequest]::DefaultWebProxy;$wc.Proxy.Credential s=[System.Net.CredentialCache]::DefaultNetworkCredentials;Invoke-Expression ($wc.DownloadString('https://raw.githubusercontent.com/aspnet/Home/dev/dnvminstall.ps1'))}" • Виконайте команду dnvm list і на етапі підтвердження виберіть Y (Yes) Інсталяція ASP.NET 5 dnvm upgrade -r coreclr
  • 27. • Нова структура рішення включає в себе рішення елементи папки з файлом global.json, а сам веб-проект знаходиться в корені папки src. • Нова структура також включає в себе спеціальну папку Wwwroot і розділ Dependencies на додаток до секції References , яка була присутня в попередніх версіях • У кореневому каталозі проекту, є також кілька нових файлів, таких як bower.json, appsettings.json, gulpfile.js, package.json, project.json і Startup.cs. • Ви можете помітити, що файли global.asax, packages.config і web.config зникли. Структура проекту ASP.NET 5 dnvm upgrade -r coreclr
  • 28. • ASP.NET 5 може орієнтуватись на кілька сфреймворків, що дозволяє додатку бути розгорнутим в різних хостинг середовищах. • Ви можете побачити, які фреймворки задані в властивостях веб-додатку, клацнувши правою кнопкою миші на веб-проекту в Solution Explorer і вибравши пункт Properties : Framework Target
  • 29. • Використовується для визначення на стороні сервера залежностей, а також іншу інформацію щодо конкретних проектів. • Властивість UserSecretsId містить значення, яке виступає в якості унікального ідентифікатора вашого веб-додатка • Властивість version визначає поточну версію проекту. Можна також вказати інші метадані про проект, такі як автори і опис. • Ви можете використовувати параметр compilationOptions, щоб встановити налаштування програми, такі як languageVersion і useOssSigning. project.json
  • 30. • Зазвичай значення, які знаходиться в розділі залежностей відносяться до встановленого пакета NuGet або до іншого проекту. • Секція commands дозволяє налаштувати команди, які можуть бути запущені з командного рядка (наприклад, запустити веб-сайт або запустити тести). • Розділ frameworks позначає, які цільові фреймворки будуть білдитись, і які залежності повинні бути включені. project.json
  • 31. • Розділ exclude використовується для ідентифікації файлів і папок, які повинні бути виключені з збірки. Точно так як і publishExclude використовується для ідентифікації частин контенту проекту, які повинні бути виключені при публікації сайту • Розділ scripts використовується для вказівки, коли скрипти автоматизації збірки повинні виконуватись. Visual Studio тепер вбудовану підтримку для виконання таких сценаріїв до і після зазначених подій. • ASP.NET шаблон проекту за замовчуванням має сценарії в місці для запуску під час postrestore і prepare, що встановлють залежноств на стороні клієнта. project.json
  • 32. • Файл global.json використовується для настройки рішення в цілому. За замовчуванням він включає в себе тільки дві секції, projects і JDK. • Властивість projects визначає, які папки містять вихідний код для рішення. • Властивість sdk визначає версії DNX (.NET Execution Environment), що Visual Studio буде використовувати при відкритті рішення. global.json
  • 33. • Папка Wwwroot представляє фактичний корінь (root) веб-додатка при запуску на веб-сервері. Статичні файли, такі як appsettings.json, які не перебувають в Wwwroot ніколи не будуть доступні, і немає необхідності створювати спеціальні правила для блокування доступу до конфіденційних файлів. Замість чорних списків доступу до конфіденційних файлів, більш безпечний підхід – білий список, при цьому тільки ті файли що в папці Wwwroot доступні через веб-запити. Крім того, в той час як папка є веб рутом по замовчуванню, конкретну кореневу папку можна налаштувати в project.json. Папка wwwroot
  • 34. • Папка Dependencies містить дві папки: Bower і NPM. Ці папки відповідають двом менеджерам пакетів з відповідними іменами і вони використовуються, щоб підтягувати залежності та інструменти на стороні клієнта. Розширення папки показує, які залежності наразі управляються кожним інструментом, і яка їх поточна версія використовується в проекті. • Bower dependencies контролюються bower.json файлами, розташованими в кожній з підпапок Wwwroot / Lib. Кожна залежність потім додатково налаштовується у відповідній секції, використовуючи свій власний файл bower.json, вказавши, як він повинен бути розгорнутий в папку Wwwroot. Client Side Dependency Management
  • 35. • ASP.NET 5 додатки визначаються використовуючи публічний клас Startup : • Метод ConfigureServices визначає сервіси, які використовуються вашим додатком • Метод Configure використовується щоб визначити яке пз проміжного шару (middleware) складає вашу магістраль запитів Startup.cs
  • 36. • Встановіть HTTP Platform Handler версії 1.2 або вище • В Solution Explorer в контекстному меню проекту виберіть Publish. • В діалозі Publish Web на вкладці Profile виберіть File System. • Введіть імя профілю. У вкладці Connection ви можете змінити шлях публікації У вкладці Settings ви можете задати налаштування публікації • Перейдіть до папки куди паблішили проект • Скопіюйте каталоги approot і Wwwroot на цільовий сервері IIS. • У диспетчері IIS створіть новий веб-сайт і встановіть фізичний шлях до Wwwroot. Publishing to IIS
  • 38. • Web API являє собою інтерфейс прикладного програмування (API) для будь-якого веб-сервера або веб-браузер. Це концепція веб-розробки, як правило, обмежується до клієнт-серверної взаємодії і, зазвичай, не включає веб сервер або деталей імплементації браузера, таких як SAPIs або АРІ браузера, крім тих що публічно доступні по віддалених веб-додатків. Web API
  • 39. • На стороні сервера Web API представляє собою програмний інтерфейс, що складається з одного або більше відкритих кінцевих точок (endpoints) для певної системи передачі повідомлень типу запиту-відповідь, як правило, виражене в JSON або XML, який піддається впливу через веб - найчастіше за допомогою основаного на HTTP веб-сервера. Web API server-side
  • 40. • Mashups це веб-додатки, які поєднують в собі використання декількох клієн-серверних Web API . • Webhooks це Web API , на стороні сервера, які приймають в якості вхідних даних універсальний ідентифікатор ресурсу Uniform Resource Identifier (URI), який призначений для використання як віддалений іменований канал або тип зворотного виклику, таким чином що сервер діє як клієнт щоб обробити надані URI і викликати подію на іншому сервері, який обробляє цю подію, таким чином забезпечуючи тип з'єднання рівноправних вузлів peer-to-peer IPC. Web API server-side
  • 41. eleks.com Демонстрація 5 • Створення простого проекту Web API
  • 42. eleks.com Демонстрація 5 • Проект Веб АРІ - структура
  • 43. • Основний контроллер, який реалізує фукціонал Web API • Обробка HTTP матодів • REST ValuesController
  • 44. • Всі визначення маршрутів для Web API знаходяться в файлі WebApiConfig.cs (в папці App_Start) Маршрутизація в Web API
  • 45. • В даному випадку визначено один маршрут, де в якості другого параметра виступає контролер, а третій необов'язковий параметр представляє певний ідентифікатор. Таким чином, на відміну від маршрутів звичайних контролерів у нас тут немає дії, тільки контролер і додатковий необов'язковий параметр • В результаті звернення api / values буде відповідати зверненню до контролера ValuesCotroller, причому майже до всіх дій відразу (крім Get (int id) - так як в даному випадку необхідний ще ідентифікатор, наприклад api / values / 2) Маршрутизація в Web API
  • 46. • Але, як вже зазначалося, в залежності від використаного методу HTTP фреймворк буде розрізняти до якї саме дії відноситься поточний запит Маршрутизація в Web API
  • 47. • При створенні методів контролера Web API діють деякі умовності. Так, імена методів за замовчуванням повинні починатися з імені призначеного для них методу HTTP. У випадку з контролером за замовчуванням все просто: всі методи дій носять назви методів HTTP. • Однак ми можемо використовувати і будь-які інші імена без префіксів, але в цьому випадку нам треба буде явно вказати метод HTTP у вигляді атрибуту, наприклад: Умовності при найменуванні методів
  • 48. • Схема URI, що синтаксично ідентична http: схемі, яка зазвичай використовується для доступу до ресурсів Інтернет. • Використання https: URL вказує, що протокол HTTP має використовуватися, але з іншим портом за замовчуванням (443) і додатковим шаром шифрування/автентифікації між HTTP і TCP. • HTTPS це не окремий протокол, а HTTP через SSL або TLS • Щоб підготувати веб-сервер для прийняття https транзакцій адміністратор повинен створити сертифікат з відкритим ключем для веб-сервера. Цей сертифікат повинен бути підписаний уповноваженим на видачу сертифікатів (certificate authority), який засвідчує, що отримувач сертифікату — саме той, про кого йдеться у сертифікаті. Браузери розповсюджуються з сертифікатами уповноважених на видачу сертифікатів верхнього рівня організацій, таким чином браузери можуть перевірити сертифікати підписані ними. HTTPS
  • 49. • Криптографічний протокол, який забезпечує встановлення безпечного з'єднання між клієнтом і сервером. • Протокол SSL складається з двох підпротоколів: протокол SSL запису і рукостискання. • Для роботи SSL потрібно, щоб на сервері був SSL- сертифікат. • SSL надає канал, що має три основні властивості: • Аутентифікація - Сервер завжди автентифікований, в той час як клієнт автентифікований в залежності від алгоритму. • Цілісність - Обмін повідомленнями включає в себе перевірку цілісності. • Конфіденційність каналу - Шифрування використовується після встановлення з'єднання і використовується для всіх наступних повідомлень. SSL (Secure Sockets Layer)
  • 50. • Криптографічний протокол, що надає можливості безпечної передачі даних в Інтернет для навігації, отримання пошти, спілкування та передачі інших даних. • Використовує асиметричне шифрування і сертифікати X.509. • Існують незначні відмінності між TLS та SSL, але, в основі, протокол той самий. • В даній поточній версії протоколу доступні такі алгоритми: • Для обміну ключами і перевірки їх справжності використовують комбінації алгоритмів: RSA (асиметричний шифр), Diffie-Hellman (безпечний обмін ключами), DSA (алгоритм цифрового підпису) і алгоритми технології Fortezza. • Для симетричного шифрування: RC2, RC4, IDEA, DES, Triple DES або AES; • Для хеш-функцій: MD5 або SHA. TLS (Transport Layer Security)
  • 51. • Створення або отримати сертифікат. Для тестування ви можете створити самостійно підписаний сертифікат. • Додати HTTPS binding. Enabling SSL on the Server
  • 52. • Якщо у вас є одночасно HTTPS і HTTP прив'язки, клієнти як і раніше можуть використовувати HTTP для доступу до сайту. Ви можете дозволити доступ до деяких ресурсів через HTTP, в той час як інші ресурси вимагаютимуть SSL. В цьому випадку рекомендується використовувати фільтр дій і вимагати SSL для захищених ресурсів. Enforcing SSL in a Web API Controller
  • 53. • Потім ви можете додати цей фільтр до будь яких Web API дій Enforcing SSL in a Web API Controller
  • 55. • Виберіть Bindings... на панелі дій і натисніть Add… IIS. Створити біндінги
  • 58. © Denys Prylutskyi, 2015 Практичне завдання 1. Дано структуру «Працівники компанії», яка містить обєкти: Працівник (Ідентифікатор, Прізвище, Імя, адреса, телефон, посада, підрозділ, керівник), Підрозділ (Ідентифікатор, Опис) Адреса(Країна, місто, вулиця, будинок) За допомогою Web API реалізувати РЕСТ веб сервіс, який дозволить отримати список працівників, отримати одного за ідентифікатором, змінити дані працівника за ідентифікатором Реалізувати клієнт, який буде взаємодіяти з сервісом 2. Встановити ASP.NET 5