aspnet core

Post on 07-Jan-2017

2.295 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

eleks.com eleks.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.Credentials=[System.Net.CredentialCache]::DefaultNetworkCredentials;Invoke-Expression ($wc.DownloadString('https://raw.githubusercontent.com/aspnet/Home/dev/dnvminstall.ps1'))}"

• Виконайте команду dnvm list і на етапі підтвердження виберіть Y (Yes)

Інсталяція ASP.NET 5dnvm 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 5dnvm 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

top related