64
eleks.com eleks.com Asp.NET. Web Services. ASP.NET Core. RESTfull Web Services

Web service lecture

Embed Size (px)

Citation preview

Page 1: Web service lecture

eleks.com eleks.com

Asp.NET. Web Services.ASP.NET Core. RESTfull Web Services

Page 2: Web service lecture

• Протокол передачі даних, що використовується

в компютерних мережах.

• Належить до протоколів моделі OSI 7-го прикладного рівня

• Основним призначенням протоколу HTTP є передача веб-сторінок

• Кожен запит/відповідь складається з трьох частин:• стартовий рядок;• заголовки;• тіло повідомлення, що містить дані запиту, запитаний ресурс або опис проблеми,

якщо запит не виконано.

HTTP (Hyper Text Transfer Protocol)

Page 3: Web service lecture

•  Сервер, що приймає HTTP-запити від клієнтів, зазвичай веб-браузерів,

видає їм HTTP-відповіді, зазвичай разом з HTML-сторінкою,

зображенням, файлом, медіа-потоком або іншими даними

• Клієнти дістаються веб-сервера за URL-адресою потрібної їм веб-

сторінки або іншого ресурсу

Веб-сервер

Page 4: Web service lecture

•  Набір серверів для декількох служб Інтернету від компанії Майкрософт.

IIS поширюється з операційними системами родини Windows NT.

• Основний компонент IIS — веб-сервер, який дозволяє розміщувати в

Інтернеті сайти.

• Підтримує протоколи HTTP, HTTPS, FTP, POP3, SMTP, NNTP

• IIS 7.0 має модульну архітектуру.

• Конфігураційна інформація зберігається виключно в конфігураційних

XML

IIS (Internet Information Services)

Page 5: Web service lecture

• Являє собою групування URL-адрес, які пересилається до одного або

декількох робочих процесів

• Оскільки пули додатків визначають набір веб-додатків, які

використовують один або кілька робочих процесів, вони забезпечують

зручний спосіб адміністрування набору веб-сайтів і додатків і

відповідних робочих процесів

• Пули додатків значно підвищити як надійність і керованість веб-

інфраструктури.

Application Pool

Page 6: Web service lecture

eleks.com

Демонстрація 1• IIS

Page 7: Web service lecture

IIS request processing pipeline

Page 8: Web service lecture

• Технологія створення веб-додатків та веб-сервісів

ASP.NET

Page 9: Web service lecture

• Коли ми інсталюємо .NET, у відповідних директоріях C:\WINDOWS\Microsoft.NET\

Framework\ поміщається також файл aspnet_isapi.dll.

• Це - ISAPI-розширення, і призначене воно для отримання запитів, адресованих ASP

.NET-додаткам (* .aspx * .asmx і т.д.), а також для створення робочих процесів

aspnet_wp.exe, які обробляють запити.

• Інтернет-сервер - IIS або вбудований в WebMatrix і в Visual Studio Cassini -

використовують це розширення, коли їм треба обробити звернення до сторінок з

розширенням ASPX.

Як працює ASP.NET

Page 10: Web service lecture

Як працює ASP.NET• IIS завантажує додаток в пам’ять• Для кожного запиту створюється новий потік

Page 11: Web service lecture

• Процес або код, який відповідає на HTTP запит• Прикладpublic class MyHttpHandler : IHttpHandler{ public void ProcessRequest(HttpContext context) { context.Response.Write("I am а HTTP handler."); }

public bool IsReusable { get { return false; } }}

• Реєстрація в web.config<configuration><system.webServer><handlers> <add verb="*" path="*.my" name=“My HTTP handler" type=“MyHttpHandler"/></handlers></system.webServer></configuration>

HTTP Handlers

Page 12: Web service lecture

• HTTP Модулі - це класи, що реалізують інтерфейс IHttpModule і обробні

події часу виконання (Runtime).

• HTTP-модулі - це механізм, який дозволяє виконувати різні дії на будь-

якому етапі життєвого циклу сторінки або додатку.

• У HTTP-модулі можна підписатися на будь-яку подію життєвого циклу і

обробляти його, реалізуючи при цьому якусь свою логіку. Зазвичай,

модулі використовують як фільтри програми.

HTTP modules

Page 13: Web service lecture

• Кожен модуль запускається методом Init.

• У цьому методі кожен HTTP-модуль підписується на події життєвого

циклу додатка (BeginRequest, AuthenticateRequest ... - всього 26).

Після цих дій всі завантажені модулі HTTP залишаються в пам'яті і

вивантажуються тільки тоді, коли вивантажується домен додатка.

• При кожному циклі обробки запиту відпрацьовують ті чи інші події, на

які підписані різні HTTP-модулі. Саме в цей момент можна додати

необхідну логіку.

HTTP modules

Page 14: Web service lecture

• Для того щоб створити власні HTTP-модулі необхідно створити клас,

який реалізує інтерфейс IHttpModule.

• В рамках цього інтерфейсу присутні два методу - Init () і Dispose ().

• Останній метод необхідний для того, щоб в потрібний момент очистити

займані ресурси. Зазвичай, цей метод залишається порожнім.

HTTP modules

Page 15: Web service lecture

• Метод Init () викликається в момент завантаження HTTP-модуля і має

параметр типу HttpApplication.

• Цей параметр дозволяє підписатися на події життєвого циклу обробки

запиту програми.

• Метод модуля Init () спрацьовує лише один раз - при створенні домена

додатку..

HTTP modules

Page 16: Web service lecture

• Файл Global.asax (Global Class Application), або файл програми ASP.NET,

є додатковим файлом, що містить код для відгуку на події рівня

додатка і рівня сеансу, створюваний додатком ASP.NET або модулями

HTTP.

• Файл Global.asax додається в кореневу папку програми ASP.NET.

• Під час виконання цей файл аналізується і компілюється в динамічно

створюваний клас .NET Framework, похідний від базового класу

HttpApplication.

Global.asax

Page 17: Web service lecture

• Середовище ASP.NET налаштовується таким чином, що будь-який

безпосередній URL-запит до файлу Global.asax автоматично

відхиляється, а зовнішні користувачі не можуть завантажувати або

переглядати код в ньому.

• Даний файл не є обов'язковим. Він створюється тільки в тому випадку,

якщо необхідна обробка подій додатка або сеансу.

Global.asax

Page 18: Web service lecture

• Application_Start - виникає коли створюється екземпляр класу HttpApplication.

• Session_start - виникає на початку кожного сеансу, тут можна форматувати

змінні сеансу.

• Application_BeginRequest - ініціюється на початку кожного окремого запиту.

• Application_EndRequest - ініціюється в кінці запиту.

• Session_End - ініціюється в кінці кожного сеансу.

• Application_End - ініціюється перед видаленням екземпляра HttpApplication.

• Application_Error - ініціюється при будь-якому необробленому вийнятку в

додатку.

Часто використовувані події

Page 19: Web service lecture

• Визначає параметри для ASP.NET веб-додатку, такі як DB connection

strings, HTTP handlers, modules, assembly bindings

• Може зберігати кастомні налаштування

• Зміни в файлі не вимагають рестарту

• Можна мати кілька конфіг файлів - один глобальний і кілька для різних

папок

• Web.config наслідується з глобального Web.config і з machine.config

Web.config

Page 20: Web service lecture

• Web.debug.config• Локальні налаштування для дебагу• Напиклад локальна база даних для тестування

• Web.Release.config• Налаштування для деплою на продакшн

Web.config

Page 21: Web service lecture

ASP.NET Core 1.0

• Попередня назва ASP.NET 5

• Кросс-платформний фреймворк з відкритим вихідним кодом.

• Оптимальний для хмарних веб-додатків

Page 22: Web service lecture

ASP.NET Core 1.0

Page 23: Web service lecture

• Новий легка та модульна магістраль HTTP запитів

• Можливість хоститингу на IIS або само-хостинг і вашому власному процесі

• Будується на .NET Core, яке підтримує справжню side-by-side версійність програм

• Повністю постачається як NuGet пакет

• Інтегрована підтримка для створення і використання NuGet пакетів

• Одно-вирівняний веб стек для Web UI та Web APIs

• Базова конфігурація середовища готова для хмарних рішень

• Вбудована підтримка інєкції залежностей

• Нові засоби що спрощують сучасну веб розробку

• Компіляція та виконання крос-платворменних ASP.NET додатків на Windows, Mac

and Linux

• Відкритий вихідний код

Page 24: Web service lecture

eleks.com

Переривчик 5хв

Page 25: Web service lecture

• Мережева технологія, що забезпечує міжпрограмну взаємодію на основі

веб-стандартів

• Програмна система, розроблену для підтримки інтероперабельнї

міжкомп’ютерної взаємодії через мережу

Веб сервіс

Page 26: Web service lecture

• Протокол, доступу до обєктів, оснований на обміні структурованими

повідомленнями

• Може використовуватись з будь яким протоколом прикладного рівня

( SMTP, FTP, HTTP)

• Використання SOAP для передавання повідомлень збільшує їхній обсяг і

знижує швидкість обробки.

SOAP (Simple Object Access Protocol)

Page 27: Web service lecture

• Ідентификатор повідомлення (локальне ім’я).

• Опціональний елемент Header (заголовок):

Нуль або більше посилань на використовувані простори імен;

Нуль або більше властивостей, досткупних в цьому просторі імен

• Обовязковий елемент Body (тіло повідомлення)

Нуль або більше посилань на використовувані простори імен

Дочірні елементи тіла повідомлення

Структура протоколу SOAP

Page 28: Web service lecture

ПрикладЗапит:

Відповідь:

Page 29: Web service lecture

•  Мова опису зовнішніх інтерфейсів і доступу до них, основана на XML

WSDL (Web Services Description Language)

Page 30: Web service lecture

• Щоб згенерувати WSDL файл для сервісу потрібно додати до урла

сервісу “?WSDL”: http://localhost/HelloService.asmx?WSDL

• Для використання сервісу в Visual Studio, його слід додати через Add

Service References…

• Якщо є тільки WSDL файл, використовуйте тулзу WSDL.exe

WSDL

Page 31: Web service lecture

• Інструмент для розміщення описів веб сервісів (WSDL) для пошуку їх

іншими організаціями і інтеграції в свої системи

• Кросплатформне пз основане на XML

• Призначений для запитів SOAP повідомленнями і забезпечення доступу

до WSDL документів, які описують привязки протоколів і форматів

повідомлень, потрібних для взаємодії з веб-послугами, які є в їхньому

каталозі

UDDI (Universal Description Discovery & Integration)

Page 32: Web service lecture

eleks.com

Демонстрація 1• IIS

Page 33: Web service lecture

• Набір клієнтських бібліотек, що дозволяють застосункам на базі

відкритої платформи .NET Core взаємодіяти з сервісами WCF,

відправляючи повідомлення між сервісами в асинхронному режимі.

• WCF надає єдину інфраструктуру розробки, що підвищує

продуктивність і знижує витрати на створення веб-служб. Закладені в

неї принципи інтероперабельності дозволяють легко добиватися

взаємодії з іншими платформами

WCF (Windows Communication Foundation)

Page 34: Web service lecture

• В основі три базових складники:• Address - визначає куди слід відправляти повідомлення;• Binding - визначає як необхідно відправляти повідомлення;• Contract - визначає що має містити повідомлення.

• Web.config

WCF

Page 35: Web service lecture

• Клас служби WCF не може існувати самостійно. Кожна служба WCF

повинна перебувати під управлінням деякого процесу Windows, званого

хостової процесом. Існують кілька варіантів хостингу:• Автохостинг (хост-процесом являється консольний або графічний

Windows додаток)• Хостинг в одній з служб Windows• Хостинг з використанням IIS або WAS

Хостинг WCF

Page 36: Web service lecture

• Клас служби WCF не може існувати самостійно. Кожна служба WCF

повинна перебувати під управлінням деякого процесу Windows, званого

хостової процесом. Існують кілька варіантів хостингу:• Автохостинг (хост-процесом являється консольний або графічний

Windows додаток)• Хостинг в одній з служб Windows• Хостинг з використанням IIS або WAS

Хостинг WCF

Page 37: Web service lecture

• REpresentational State Transfer (назва не відповідає суті)

• Архітектурний паттерн, а не стандарт

• Стано-незалежний (Stateless), клієнт-серверний, кешований протокол

звязку

• Використання HTTP запитів для відправки, читання і видалення даних

•  Полегшений

•  Іменники як URI, дієслова як HTTP метод

REST

Page 38: Web service lecture

• Ресурси• Все, що досить важливо щоб мати власне посилання.

• Може бути фізичний об’єкт або абстрактний концепт.

• Кожен ресурс має принаймні одне ім’я

• Ресурси можуть бути контейнерами інших ресурсів• Контейнери завжди є ресурсами

• Паттерн Композит (Composite design pattern)

Ресурси і контейнери

Page 39: Web service lecture

• Дозволяє створити структуру дерева і задати кожному елементу в

структурі дерева, виконати завдання.

Composite design pattern

Page 40: Web service lecture

• Репрезентація ресурсів• Будь яка корисна інформація про стан ресурсу

• Визначається за допомогою певного URL або узгодження контенту через заголовки канонічного

URI ресурсів.

• Канонічний URI ресурсів• Незалежно від формату або локальної мови

• Може бути визначено в Content-Location заголовку репрезентативної відповіді

Репрезентація ресурсів

Page 42: Web service lecture

• Адресація• Ресурси ідентифікуються по URI

• Відсутність станів• Відсутність станів звязку, що утримуються між REST викликами

• Звязність• Ресурси повинні бути повязані разом в їхньому представленні

• Однаковий інтерфейс• HTTP GET, PUT, POST, DELETE, HEAD, OPTIONS• HTTP method header• HTTP status codes

Ресурсно-орієнтовна архітектура

Page 43: Web service lecture

• Ім’я і адреса ресурсу• Оглядова інформація про ресурс• Принципи адресації

• Повинна бути описова

• Унікальні URI незахищені для кожного ресурсу доступні з RESTful

системи• Кожен URI позначає рівно один ресурс

• URIs доступними для ваших клієнтів

Адресація через URI

Page 44: Web service lecture

• Відсутність станів, що зберігаються на сервері

• Кожен HTTP запит виконується на сервері в повній ізоляції

• Спрощене проектування і розвиток

• Полегшене масштабування

• Уникайте використання HTTP сесій і куків

• Відсутність побічних ефектів

Відсутність станів

Page 45: Web service lecture

• Стандартизовані• GET• POST• PUT• DELETE• HEAD• OPTIONS

• Репрезентують виклик дії

• Ресурси відображають однаковий інтерфейс

HTTP методи (дії)

Page 46: Web service lecture

GETClient Browser

GET /v1/users/10548

HTTP Status: 200 (ОК)Response headersRequested representation

Web Server

HEADClient Browser

HEAD /v1/users/10548

HTTP Status: 200 (ОК)Response headers

Web Server

Page 47: Web service lecture

PUTClient Browser

PUT /v1/users/10548

HTTP Status: 200 (ОК)Response headers

Web Server

DELETEClient Browser

DELETE /v1/users/10548

HTTP Status: 200 (ОК)Response headers

Web Server

Page 48: Web service lecture

POST

Client Browser

POST /v1/users/10548Representation in entity body

HTTP Status: 201 (Created)Response headers

Web Server

Page 49: Web service lecture

• Основні засоби звітів про результати REST операції

• Використовуйте тіло об'єкта, щоб додати допоміжні визначники до результату

• Не відправляйте назад репрезентацію ресурсів на жоден з методів окрім GET,

задля забезпечення відсутності негативного впливу на оптимізацію

продуктивності

HTTP статус коди

Page 50: Web service lecture

• 100 Continue

• 200 OK

• 201 Created

• 204 No Content

• 304 Not Modified

• 400 Bad Request

• 401 Unauthorized

• 400 Bad Request

• 404 Not Found

• 409 Conflict

• 500 Internal Server Error

Топ 10 HTTP статус кодів

Page 51: Web service lecture

• GET I HEAD запити не повинні викликати жодних катастрофічних

ефектів на серверній стороні

• Відсутність побічних ефектів• Клієнт не повинен робити запитів тільки для погашення побічних ефектів

• Уникайте впливу небезпечних (unsafe) операцій через GET

Безпека

Page 52: Web service lecture

• Багаторазовий виклик результатів операцій дає той самий результат в

тому ж результуючому стані, як і результат одного виклику

• Ідемпотентні методи: GET, HEAD, PUT, DELETE , OPTIONS

• Не ідемпотентні: POST

Ідемпотентність

Page 53: Web service lecture

• Під час створення і оновлення ресурсів• PUT, якщо, і тільки якщо, ви можете повністю вказати повний вміст ресурсу

• POST, якщо ви відправляєте команду, щоб створити або оновити один або кілька підлеглих

зазначеного ресурсу

• За допомогою POST, сервер буде визначати URI ресурсу

• Використовуйте заголовок Location в POST запиті, щоб вказати нові URI

езурсів, якщо доступно

PUT vs POST

Page 54: Web service lecture

• HTTPS i SSL сертифікату валідація

• 5 головних HTTP методів: GET, HEAD, POST, PUT, DELETE

• Кастомізація даних, що відправляються в тілі обєкту PUT або POST

запиту

• Доступ до статус коду та заголовків відповіді

• Комунікація через HTTP проксі

Вимоги до HTTP клієнта

Page 55: Web service lecture

• Передача і обробка стиснених даних• Запит: заголовок Accept Encoding • Відповідь: заголовок Encoding

• Кешування відповідей на запит• Запити GET з станом

• Загальна форма HTTP аутентифікації (Basic, Digest, WSSE)

• Прозоре слідування HTTP переадресації

Опціональна функціональність HTTP клієнта

Page 56: Web service lecture

• Ієрархічна• Кодуй дані в «змінні шляху» в URI• http: //maps.example.com/Earth/Europe/France/Paris

• Не ієрархічна• Комбінуються в одну змінну шляху, розділені комою або крапкою з комою• Використовуй кому, коли порядок важливий, крапку з комою в іншому випадку• http: //maps.example.com/Earth/24,158,89,515

• Алгоритмічні ресурси• Використання змінних запиту• http://www.google.com/search?q=rest

Побудова URI

Page 57: Web service lecture

• Версія вашого сервісу

• Вбудова версії в URI• GET /v1/users/234234

• Репрезентація також повинна підлягати версійності• Втавляйте інформацію про версію в репрезентацію

Версійність REST API

Page 58: Web service lecture

• Більшість ресурсів не сильно змінюється

• Зберігає клієнтський і серверний час виконання і пропускну здатність

мережі

• Реалізовано використовуючи HTTP заголовки• Заголовки відповіді: Last-Modified i Etag• Заголовки запиту: If-Modified-Since i If-None-Match

Conditional GET

Page 59: Web service lecture

Conditional GET

Client Browser

GET /v1/users/10548If-Modified-Since: <cached Last-Modified value>If-None-Match: <cached Etag value>

HTTP Status: 304 (Not Modified)Response headers

Web Server

Continue to used cached representation

1

23

Page 60: Web service lecture

• Ресурси можуть зберігатись в різних репрезентаціях (XML, JSON, HTML...)

• Методи узгодження контенту:• Заголовки (Accept або Content-Type)

• Query parameter (GET /v1/users/10505?format=json)

• URI extension (GET /v1/users/10505.xml)

Узгодження контенту

Page 61: Web service lecture

• Використання REST як RPC-подібний механізм

• Надмірне використання POST

• Вставляння дій в URI

• Маскування сервісу як ресурсу

• Управління сесіями на сервері

Загальні помилки

Page 62: Web service lecture

eleks.com

Summary

Page 63: Web service lecture

eleks.com

Демонстрація 5• Events

Page 64: Web service lecture

© Denys Prylutskyi, 2015

Практичне завдання