eleks.comeleks.com
Asp.NET. Web Services.
ASP.NET Core. RESTfull Web Services
• Протокол передачі даних, що використовується в компютерних мережах.
• Належить до протоколів моделі OSI 7-го прикладного рівня
• Основним призначенням протоколу HTTP є передача веб-сторінок
• Кожен запит/відповідь складається з трьох частин:
• стартовий рядок;
• заголовки;
• тіло повідомлення, що містить дані запиту, запитаний ресурс або опис проблеми, якщо запит не
виконано.
HTTP (Hyper Text Transfer Protocol)
• Сервер, що приймає HTTP-запити від клієнтів, зазвичай веб-браузерів, видає їм
HTTP-відповіді, зазвичай разом з HTML-сторінкою, зображенням, файлом, медіа-
потоком або іншими даними
• Клієнти дістаються веб-сервера за URL-адресою потрібної їм веб-сторінки або
іншого ресурсу
Веб-сервер
• Набір серверів для декількох служб Інтернету від компанії Майкрософт. IIS
поширюється з операційними системами родини Windows NT.
• Основний компонент IIS — веб-сервер, який дозволяє розміщувати в Інтернеті
сайти.
• Підтримує протоколи HTTP, HTTPS, FTP, POP3, SMTP, NNTP
• IIS 7.0 має модульну архітектуру.
• Конфігураційна інформація зберігається виключно в конфігураційних XML
IIS (Internet Information Services)
• Являє собою групування URL-адрес, які пересилається до одного або декількох
робочих процесів
• Оскільки пули додатків визначають набір веб-додатків, які використовують один
або кілька робочих процесів, вони забезпечують зручний спосіб адміністрування
набору веб-сайтів і додатків і відповідних робочих процесів
• Пули додатків значно підвищити як надійність і керованість веб-інфраструктури.
Application Pool
eleks.com
Демонстрація 1
• IIS
IIS request processing pipeline
• Технологія створення веб-додатків та веб-сервісів
ASP.NET
• Коли ми інсталюємо .NET, у відповідних директоріях C:WINDOWSMicrosoft.NETFramework
поміщається також файл aspnet_isapi.dll.
• Це - ISAPI-розширення, і призначене воно для отримання запитів, адресованих ASP .NET-
додаткам (* .aspx * .asmx і т.д.), а також для створення робочих процесів aspnet_wp.exe, які
обробляють запити.
• Інтернет-сервер - IIS або вбудований в WebMatrix і в Visual Studio Cassini - використовують це
розширення, коли їм треба обробити звернення до сторінок з розширенням ASPX.
Як працює ASP.NET
Як працює ASP.NET
• IIS завантажує додаток в пам’ять
• Для кожного запиту створюється новий потік
• Процес або код, який відповідає на 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
• HTTP Модулі - це класи, що реалізують інтерфейс IHttpModule і обробні події часу
виконання (Runtime).
• HTTP-модулі - це механізм, який дозволяє виконувати різні дії на будь-якому етапі
життєвого циклу сторінки або додатку.
• У HTTP-модулі можна підписатися на будь-яку подію життєвого циклу і обробляти
його, реалізуючи при цьому якусь свою логіку. Зазвичай, модулі використовують як
фільтри програми.
HTTP modules
• Кожен модуль запускається методом Init.
• У цьому методі кожен HTTP-модуль підписується на події життєвого циклу додатка
(BeginRequest, AuthenticateRequest ... - всього 26). Після цих дій всі завантажені
модулі HTTP залишаються в пам'яті і вивантажуються тільки тоді, коли
вивантажується домен додатка.
• При кожному циклі обробки запиту відпрацьовують ті чи інші події, на які підписані
різні HTTP-модулі. Саме в цей момент можна додати необхідну логіку.
HTTP modules
• Для того щоб створити власні HTTP-модулі необхідно створити клас, який реалізує
інтерфейс IHttpModule.
• В рамках цього інтерфейсу присутні два методу - Init () і Dispose ().
• Останній метод необхідний для того, щоб в потрібний момент очистити займані
ресурси. Зазвичай, цей метод залишається порожнім.
HTTP modules
• Метод Init () викликається в момент завантаження HTTP-модуля і має параметр типу
HttpApplication.
• Цей параметр дозволяє підписатися на події життєвого циклу обробки запиту
програми.
• Метод модуля Init () спрацьовує лише один раз - при створенні домена додатку..
HTTP modules
• Файл Global.asax (Global Class Application), або файл програми ASP.NET, є
додатковим файлом, що містить код для відгуку на події рівня додатка і рівня
сеансу, створюваний додатком ASP.NET або модулями HTTP.
• Файл Global.asax додається в кореневу папку програми ASP.NET.
• Під час виконання цей файл аналізується і компілюється в динамічно створюваний
клас .NET Framework, похідний від базового класу HttpApplication.
Global.asax
• Середовище ASP.NET налаштовується таким чином, що будь-який безпосередній
URL-запит до файлу Global.asax автоматично відхиляється, а зовнішні користувачі
не можуть завантажувати або переглядати код в ньому.
• Даний файл не є обов'язковим. Він створюється тільки в тому випадку, якщо
необхідна обробка подій додатка або сеансу.
Global.asax
• Application_Start - виникає коли створюється екземпляр класу HttpApplication.
• Session_start - виникає на початку кожного сеансу, тут можна форматувати змінні сеансу.
• Application_BeginRequest - ініціюється на початку кожного окремого запиту.
• Application_EndRequest - ініціюється в кінці запиту.
• Session_End - ініціюється в кінці кожного сеансу.
• Application_End - ініціюється перед видаленням екземпляра HttpApplication.
• Application_Error - ініціюється при будь-якому необробленому вийнятку в додатку.
Часто використовувані події
• Визначає параметри для ASP.NET веб-додатку, такі як DB connection strings, HTTP
handlers, modules, assembly bindings
• Може зберігати кастомні налаштування
• Зміни в файлі не вимагають рестарту
• Можна мати кілька конфіг файлів - один глобальний і кілька для різних папок
• Web.config наслідується з глобального Web.config і з machine.config
Web.config
• Web.debug.config
• Локальні налаштування для дебагу
• Напиклад локальна база даних для тестування
• Web.Release.config
• Налаштування для деплою на продакшн
Web.config
ASP.NET Core 1.0
• Попередня назва ASP.NET 5
• Кросс-платформний фреймворк з відкритим вихідним кодом.
• Оптимальний для хмарних веб-додатків
ASP.NET Core 1.0
• Новий легка та модульна магістраль HTTP запитів
• Можливість хоститингу на IIS або само-хостинг і вашому власному процесі
• Будується на .NET Core, яке підтримує справжню side-by-side версійність програм
• Повністю постачається як NuGet пакет
• Інтегрована підтримка для створення і використання NuGet пакетів
• Одно-вирівняний веб стек для Web UI та Web APIs
• Базова конфігурація середовища готова для хмарних рішень
• Вбудована підтримка інєкції залежностей
• Нові засоби що спрощують сучасну веб розробку
• Компіляція та виконання крос-платворменних ASP.NET додатків на Windows, Mac and Linux
• Відкритий вихідний код
eleks.com
Переривчик 5хв
• Мережева технологія, що забезпечує міжпрограмну взаємодію на основі веб-
стандартів
• Програмна система, розроблену для підтримки інтероперабельнї міжкомп’ютерної
взаємодії через мережу
Веб сервіс
• Протокол, доступу до обєктів, оснований на обміні структурованими
повідомленнями
• Може використовуватись з будь яким протоколом прикладного рівня ( SMTP, FTP,
HTTP)
• Використання SOAP для передавання повідомлень збільшує їхній обсяг і знижує
швидкість обробки.
SOAP (Simple Object Access Protocol)
• Ідентификатор повідомлення (локальне ім’я).
• Опціональний елемент Header (заголовок):
Нуль або більше посилань на використовувані простори імен;
Нуль або більше властивостей, досткупних в цьому просторі імен
• Обовязковий елемент Body (тіло повідомлення)
Нуль або більше посилань на використовувані простори імен
Дочірні елементи тіла повідомлення
Структура протоколу SOAP
Приклад
Запит:
Відповідь:
• Мова опису зовнішніх інтерфейсів і доступу до них, основана на XML
WSDL (Web Services Description Language)
• Щоб згенерувати WSDL файл для сервісу потрібно додати до урла сервісу
“?WSDL”: http://localhost/HelloService.asmx?WSDL
• Для використання сервісу в Visual Studio, його слід додати через Add Service
References…
• Якщо є тільки WSDL файл, використовуйте тулзу WSDL.exe
WSDL
• Інструмент для розміщення описів веб сервісів (WSDL) для пошуку їх іншими
організаціями і інтеграції в свої системи
• Кросплатформне пз основане на XML
• Призначений для запитів SOAP повідомленнями і забезпечення доступу до WSDL
документів, які описують привязки протоколів і форматів повідомлень, потрібних
для взаємодії з веб-послугами, які є в їхньому каталозі
UDDI (Universal Description Discovery &
Integration)
eleks.com
Демонстрація 1
• IIS
• Набір клієнтських бібліотек, що дозволяють застосункам на базі відкритої
платформи .NET Core взаємодіяти з сервісами WCF, відправляючи повідомлення
між сервісами в асинхронному режимі.
• WCF надає єдину інфраструктуру розробки, що підвищує продуктивність і знижує
витрати на створення веб-служб. Закладені в неї принципи інтероперабельності
дозволяють легко добиватися взаємодії з іншими платформами
WCF (Windows Communication Foundation)
• В основі три базових складники:
• Address - визначає куди слід відправляти повідомлення;
• Binding - визначає як необхідно відправляти повідомлення;
• Contract - визначає що має містити повідомлення.
• Web.config
WCF
• Клас служби WCF не може існувати самостійно. Кожна служба WCF повинна
перебувати під управлінням деякого процесу Windows, званого хостової процесом.
Існують кілька варіантів хостингу:
• Автохостинг (хост-процесом являється консольний або графічний Windows
додаток)
• Хостинг в одній з служб Windows
• Хостинг з використанням IIS або WAS
Хостинг WCF
• Клас служби WCF не може існувати самостійно. Кожна служба WCF повинна
перебувати під управлінням деякого процесу Windows, званого хостової процесом.
Існують кілька варіантів хостингу:
• Автохостинг (хост-процесом являється консольний або графічний Windows
додаток)
• Хостинг в одній з служб Windows
• Хостинг з використанням IIS або WAS
Хостинг WCF
• REpresentational State Transfer (назва не відповідає суті)
• Архітектурний паттерн, а не стандарт
• Стано-незалежний (Stateless), клієнт-серверний, кешований протокол звязку
• Використання HTTP запитів для відправки, читання і видалення даних
• Полегшений
• Іменники як URI, дієслова як HTTP метод
REST
• Ресурси
• Все, що досить важливо щоб мати власне посилання.
• Може бути фізичний об’єкт або абстрактний концепт.
• Кожен ресурс має принаймні одне ім’я
• Ресурси можуть бути контейнерами інших ресурсів
• Контейнери завжди є ресурсами
• Паттерн Композит (Composite design pattern)
Ресурси і контейнери
• Дозволяє створити структуру дерева і задати кожному елементу в структурі
дерева, виконати завдання.
Composite design pattern
• Репрезентація ресурсів
• Будь яка корисна інформація про стан ресурсу
• Визначається за допомогою певного URL або узгодження контенту через заголовки канонічного URI ресурсів.
• Канонічний URI ресурсів
• Незалежно від формату або локальної мови
• Може бути визначено в Content-Location заголовку репрезентативної відповіді
Репрезентація ресурсів
• GET
http://www.example.com/v1/hr/employees/19328389
• POST
http://www.example.com/v1/hr/employees
• DELETE
http://www.example.com/v1/hr/employees/14283949
• PUT
http://www.example.com/v1/hr/employees/14283949
Приклади URI
• Адресація
• Ресурси ідентифікуються по URI
• Відсутність станів
• Відсутність станів звязку, що утримуються між REST викликами
• Звязність
• Ресурси повинні бути повязані разом в їхньому представленні
• Однаковий інтерфейс
• HTTP GET, PUT, POST, DELETE, HEAD, OPTIONS
• HTTP method header
• HTTP status codes
Ресурсно-орієнтовна архітектура
• Ім’я і адреса ресурсу
• Оглядова інформація про ресурс
• Принципи адресації
• Повинна бути описова
• Унікальні URI незахищені для кожного ресурсу доступні з RESTful системи
• Кожен URI позначає рівно один ресурс
• URIs доступними для ваших клієнтів
Адресація через URI
• Відсутність станів, що зберігаються на сервері
• Кожен HTTP запит виконується на сервері в повній ізоляції
• Спрощене проектування і розвиток
• Полегшене масштабування
• Уникайте використання HTTP сесій і куків
• Відсутність побічних ефектів
Відсутність станів
• Стандартизовані
• GET
• POST
• PUT
• DELETE
• HEAD
• OPTIONS
• Репрезентують виклик дії
• Ресурси відображають однаковий інтерфейс
HTTP методи (дії)
GET
Client Browser
GET /v1/users/10548
HTTP Status: 200 (ОК)
Response headers
Requested representation
Web Server
HEAD
Client Browser
HEAD /v1/users/10548
HTTP Status: 200 (ОК)
Response headers
Web Server
PUT
Client Browser
PUT /v1/users/10548
HTTP Status: 200 (ОК)
Response headers
Web Server
DELETE
Client Browser
DELETE /v1/users/10548
HTTP Status: 200 (ОК)
Response headers
Web Server
POST
Client Browser
POST /v1/users/10548
Representation in entity body
HTTP Status: 201 (Created)
Response headers
Web Server
• Основні засоби звітів про результати REST операції
• Використовуйте тіло об'єкта, щоб додати допоміжні визначники до результату
• Не відправляйте назад репрезентацію ресурсів на жоден з методів окрім GET, задля
забезпечення відсутності негативного впливу на оптимізацію продуктивності
HTTP статус коди
• 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 статус кодів
• GET I HEAD запити не повинні викликати жодних катастрофічних ефектів на
серверній стороні
• Відсутність побічних ефектів
• Клієнт не повинен робити запитів тільки для погашення побічних ефектів
• Уникайте впливу небезпечних (unsafe) операцій через GET
Безпека
• Багаторазовий виклик результатів операцій дає той самий результат в тому ж
результуючому стані, як і результат одного виклику
• Ідемпотентні методи: GET, HEAD, PUT, DELETE , OPTIONS
• Не ідемпотентні: POST
Ідемпотентність
• Під час створення і оновлення ресурсів
• PUT, якщо, і тільки якщо, ви можете повністю вказати повний вміст ресурсу
• POST, якщо ви відправляєте команду, щоб створити або оновити один або кілька підлеглих зазначеного
ресурсу
• За допомогою POST, сервер буде визначати URI ресурсу
• Використовуйте заголовок Location в POST запиті, щоб вказати нові URI езурсів,
якщо доступно
PUT vs POST
• HTTPS i SSL сертифікату валідація
• 5 головних HTTP методів: GET, HEAD, POST, PUT, DELETE
• Кастомізація даних, що відправляються в тілі обєкту PUT або POST запиту
• Доступ до статус коду та заголовків відповіді
• Комунікація через HTTP проксі
Вимоги до HTTP клієнта
• Передача і обробка стиснених даних
• Запит: заголовок Accept Encoding
• Відповідь: заголовок Encoding
• Кешування відповідей на запит
• Запити GET з станом
• Загальна форма HTTP аутентифікації (Basic, Digest, WSSE)
• Прозоре слідування HTTP переадресації
Опціональна функціональність
HTTP клієнта
• Ієрархічна
• Кодуй дані в «змінні шляху» в 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
• Версія вашого сервісу
• Вбудова версії в URI
• GET /v1/users/234234
• Репрезентація також повинна підлягати версійності
• Втавляйте інформацію про версію в репрезентацію
Версійність REST API
• Більшість ресурсів не сильно змінюється
• Зберігає клієнтський і серверний час виконання і пропускну здатність мережі
• Реалізовано використовуючи HTTP заголовки
• Заголовки відповіді: Last-Modified i Etag
• Заголовки запиту: If-Modified-Since i If-None-Match
Conditional GET
Conditional GET
Client Browser
GET /v1/users/10548
If-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
• Ресурси можуть зберігатись в різних репрезентаціях (XML, JSON, HTML...)
• Методи узгодження контенту:
• Заголовки (Accept або Content-Type)
• Query parameter (GET /v1/users/10505?format=json)
• URI extension (GET /v1/users/10505.xml)
Узгодження контенту
• Використання REST як RPC-подібний механізм
• Надмірне використання POST
• Вставляння дій в URI
• Маскування сервісу як ресурсу
• Управління сесіями на сервері
Загальні помилки
eleks.com
Summary
eleks.com
Демонстрація 5
• Events
© Denys Prylutskyi, 2015
Практичне завдання

Web service lecture

  • 1.
  • 2.
    • Протокол передачіданих, що використовується в компютерних мережах. • Належить до протоколів моделі OSI 7-го прикладного рівня • Основним призначенням протоколу HTTP є передача веб-сторінок • Кожен запит/відповідь складається з трьох частин: • стартовий рядок; • заголовки; • тіло повідомлення, що містить дані запиту, запитаний ресурс або опис проблеми, якщо запит не виконано. HTTP (Hyper Text Transfer Protocol)
  • 3.
    • Сервер, щоприймає HTTP-запити від клієнтів, зазвичай веб-браузерів, видає їм HTTP-відповіді, зазвичай разом з HTML-сторінкою, зображенням, файлом, медіа- потоком або іншими даними • Клієнти дістаються веб-сервера за URL-адресою потрібної їм веб-сторінки або іншого ресурсу Веб-сервер
  • 4.
    • Набір серверівдля декількох служб Інтернету від компанії Майкрософт. IIS поширюється з операційними системами родини Windows NT. • Основний компонент IIS — веб-сервер, який дозволяє розміщувати в Інтернеті сайти. • Підтримує протоколи HTTP, HTTPS, FTP, POP3, SMTP, NNTP • IIS 7.0 має модульну архітектуру. • Конфігураційна інформація зберігається виключно в конфігураційних XML IIS (Internet Information Services)
  • 5.
    • Являє собоюгрупування URL-адрес, які пересилається до одного або декількох робочих процесів • Оскільки пули додатків визначають набір веб-додатків, які використовують один або кілька робочих процесів, вони забезпечують зручний спосіб адміністрування набору веб-сайтів і додатків і відповідних робочих процесів • Пули додатків значно підвищити як надійність і керованість веб-інфраструктури. Application Pool
  • 6.
  • 7.
  • 8.
    • Технологія створеннявеб-додатків та веб-сервісів ASP.NET
  • 9.
    • Коли миінсталюємо .NET, у відповідних директоріях C:WINDOWSMicrosoft.NETFramework поміщається також файл aspnet_isapi.dll. • Це - ISAPI-розширення, і призначене воно для отримання запитів, адресованих ASP .NET- додаткам (* .aspx * .asmx і т.д.), а також для створення робочих процесів aspnet_wp.exe, які обробляють запити. • Інтернет-сервер - IIS або вбудований в WebMatrix і в Visual Studio Cassini - використовують це розширення, коли їм треба обробити звернення до сторінок з розширенням ASPX. Як працює ASP.NET
  • 10.
    Як працює ASP.NET •IIS завантажує додаток в пам’ять • Для кожного запиту створюється новий потік
  • 11.
    • Процес абокод, який відповідає на 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
  • 12.
    • HTTP Модулі- це класи, що реалізують інтерфейс IHttpModule і обробні події часу виконання (Runtime). • HTTP-модулі - це механізм, який дозволяє виконувати різні дії на будь-якому етапі життєвого циклу сторінки або додатку. • У HTTP-модулі можна підписатися на будь-яку подію життєвого циклу і обробляти його, реалізуючи при цьому якусь свою логіку. Зазвичай, модулі використовують як фільтри програми. HTTP modules
  • 13.
    • Кожен модульзапускається методом Init. • У цьому методі кожен HTTP-модуль підписується на події життєвого циклу додатка (BeginRequest, AuthenticateRequest ... - всього 26). Після цих дій всі завантажені модулі HTTP залишаються в пам'яті і вивантажуються тільки тоді, коли вивантажується домен додатка. • При кожному циклі обробки запиту відпрацьовують ті чи інші події, на які підписані різні HTTP-модулі. Саме в цей момент можна додати необхідну логіку. HTTP modules
  • 14.
    • Для тогощоб створити власні HTTP-модулі необхідно створити клас, який реалізує інтерфейс IHttpModule. • В рамках цього інтерфейсу присутні два методу - Init () і Dispose (). • Останній метод необхідний для того, щоб в потрібний момент очистити займані ресурси. Зазвичай, цей метод залишається порожнім. HTTP modules
  • 15.
    • Метод Init() викликається в момент завантаження HTTP-модуля і має параметр типу HttpApplication. • Цей параметр дозволяє підписатися на події життєвого циклу обробки запиту програми. • Метод модуля Init () спрацьовує лише один раз - при створенні домена додатку.. HTTP modules
  • 16.
    • Файл Global.asax(Global Class Application), або файл програми ASP.NET, є додатковим файлом, що містить код для відгуку на події рівня додатка і рівня сеансу, створюваний додатком ASP.NET або модулями HTTP. • Файл Global.asax додається в кореневу папку програми ASP.NET. • Під час виконання цей файл аналізується і компілюється в динамічно створюваний клас .NET Framework, похідний від базового класу HttpApplication. Global.asax
  • 17.
    • Середовище ASP.NETналаштовується таким чином, що будь-який безпосередній URL-запит до файлу Global.asax автоматично відхиляється, а зовнішні користувачі не можуть завантажувати або переглядати код в ньому. • Даний файл не є обов'язковим. Він створюється тільки в тому випадку, якщо необхідна обробка подій додатка або сеансу. Global.asax
  • 18.
    • Application_Start -виникає коли створюється екземпляр класу HttpApplication. • Session_start - виникає на початку кожного сеансу, тут можна форматувати змінні сеансу. • Application_BeginRequest - ініціюється на початку кожного окремого запиту. • Application_EndRequest - ініціюється в кінці запиту. • Session_End - ініціюється в кінці кожного сеансу. • Application_End - ініціюється перед видаленням екземпляра HttpApplication. • Application_Error - ініціюється при будь-якому необробленому вийнятку в додатку. Часто використовувані події
  • 19.
    • Визначає параметридля ASP.NET веб-додатку, такі як DB connection strings, HTTP handlers, modules, assembly bindings • Може зберігати кастомні налаштування • Зміни в файлі не вимагають рестарту • Можна мати кілька конфіг файлів - один глобальний і кілька для різних папок • Web.config наслідується з глобального Web.config і з machine.config Web.config
  • 20.
    • Web.debug.config • Локальніналаштування для дебагу • Напиклад локальна база даних для тестування • Web.Release.config • Налаштування для деплою на продакшн Web.config
  • 21.
    ASP.NET Core 1.0 •Попередня назва ASP.NET 5 • Кросс-платформний фреймворк з відкритим вихідним кодом. • Оптимальний для хмарних веб-додатків
  • 22.
  • 23.
    • Новий легката модульна магістраль HTTP запитів • Можливість хоститингу на IIS або само-хостинг і вашому власному процесі • Будується на .NET Core, яке підтримує справжню side-by-side версійність програм • Повністю постачається як NuGet пакет • Інтегрована підтримка для створення і використання NuGet пакетів • Одно-вирівняний веб стек для Web UI та Web APIs • Базова конфігурація середовища готова для хмарних рішень • Вбудована підтримка інєкції залежностей • Нові засоби що спрощують сучасну веб розробку • Компіляція та виконання крос-платворменних ASP.NET додатків на Windows, Mac and Linux • Відкритий вихідний код
  • 24.
  • 25.
    • Мережева технологія,що забезпечує міжпрограмну взаємодію на основі веб- стандартів • Програмна система, розроблену для підтримки інтероперабельнї міжкомп’ютерної взаємодії через мережу Веб сервіс
  • 26.
    • Протокол, доступудо обєктів, оснований на обміні структурованими повідомленнями • Може використовуватись з будь яким протоколом прикладного рівня ( SMTP, FTP, HTTP) • Використання SOAP для передавання повідомлень збільшує їхній обсяг і знижує швидкість обробки. SOAP (Simple Object Access Protocol)
  • 27.
    • Ідентификатор повідомлення(локальне ім’я). • Опціональний елемент Header (заголовок): Нуль або більше посилань на використовувані простори імен; Нуль або більше властивостей, досткупних в цьому просторі імен • Обовязковий елемент Body (тіло повідомлення) Нуль або більше посилань на використовувані простори імен Дочірні елементи тіла повідомлення Структура протоколу SOAP
  • 28.
  • 29.
    • Мова описузовнішніх інтерфейсів і доступу до них, основана на XML WSDL (Web Services Description Language)
  • 30.
    • Щоб згенеруватиWSDL файл для сервісу потрібно додати до урла сервісу “?WSDL”: http://localhost/HelloService.asmx?WSDL • Для використання сервісу в Visual Studio, його слід додати через Add Service References… • Якщо є тільки WSDL файл, використовуйте тулзу WSDL.exe WSDL
  • 31.
    • Інструмент длярозміщення описів веб сервісів (WSDL) для пошуку їх іншими організаціями і інтеграції в свої системи • Кросплатформне пз основане на XML • Призначений для запитів SOAP повідомленнями і забезпечення доступу до WSDL документів, які описують привязки протоколів і форматів повідомлень, потрібних для взаємодії з веб-послугами, які є в їхньому каталозі UDDI (Universal Description Discovery & Integration)
  • 32.
  • 33.
    • Набір клієнтськихбібліотек, що дозволяють застосункам на базі відкритої платформи .NET Core взаємодіяти з сервісами WCF, відправляючи повідомлення між сервісами в асинхронному режимі. • WCF надає єдину інфраструктуру розробки, що підвищує продуктивність і знижує витрати на створення веб-служб. Закладені в неї принципи інтероперабельності дозволяють легко добиватися взаємодії з іншими платформами WCF (Windows Communication Foundation)
  • 34.
    • В основітри базових складники: • Address - визначає куди слід відправляти повідомлення; • Binding - визначає як необхідно відправляти повідомлення; • Contract - визначає що має містити повідомлення. • Web.config WCF
  • 35.
    • Клас службиWCF не може існувати самостійно. Кожна служба WCF повинна перебувати під управлінням деякого процесу Windows, званого хостової процесом. Існують кілька варіантів хостингу: • Автохостинг (хост-процесом являється консольний або графічний Windows додаток) • Хостинг в одній з служб Windows • Хостинг з використанням IIS або WAS Хостинг WCF
  • 36.
    • Клас службиWCF не може існувати самостійно. Кожна служба WCF повинна перебувати під управлінням деякого процесу Windows, званого хостової процесом. Існують кілька варіантів хостингу: • Автохостинг (хост-процесом являється консольний або графічний Windows додаток) • Хостинг в одній з служб Windows • Хостинг з використанням IIS або WAS Хостинг WCF
  • 37.
    • REpresentational StateTransfer (назва не відповідає суті) • Архітектурний паттерн, а не стандарт • Стано-незалежний (Stateless), клієнт-серверний, кешований протокол звязку • Використання HTTP запитів для відправки, читання і видалення даних • Полегшений • Іменники як URI, дієслова як HTTP метод REST
  • 38.
    • Ресурси • Все,що досить важливо щоб мати власне посилання. • Може бути фізичний об’єкт або абстрактний концепт. • Кожен ресурс має принаймні одне ім’я • Ресурси можуть бути контейнерами інших ресурсів • Контейнери завжди є ресурсами • Паттерн Композит (Composite design pattern) Ресурси і контейнери
  • 39.
    • Дозволяє створитиструктуру дерева і задати кожному елементу в структурі дерева, виконати завдання. Composite design pattern
  • 40.
    • Репрезентація ресурсів •Будь яка корисна інформація про стан ресурсу • Визначається за допомогою певного URL або узгодження контенту через заголовки канонічного URI ресурсів. • Канонічний URI ресурсів • Незалежно від формату або локальної мови • Може бути визначено в Content-Location заголовку репрезентативної відповіді Репрезентація ресурсів
  • 41.
    • GET http://www.example.com/v1/hr/employees/19328389 • POST http://www.example.com/v1/hr/employees •DELETE http://www.example.com/v1/hr/employees/14283949 • PUT http://www.example.com/v1/hr/employees/14283949 Приклади URI
  • 42.
    • Адресація • Ресурсиідентифікуються по URI • Відсутність станів • Відсутність станів звязку, що утримуються між REST викликами • Звязність • Ресурси повинні бути повязані разом в їхньому представленні • Однаковий інтерфейс • HTTP GET, PUT, POST, DELETE, HEAD, OPTIONS • HTTP method header • HTTP status codes Ресурсно-орієнтовна архітектура
  • 43.
    • Ім’я іадреса ресурсу • Оглядова інформація про ресурс • Принципи адресації • Повинна бути описова • Унікальні URI незахищені для кожного ресурсу доступні з RESTful системи • Кожен URI позначає рівно один ресурс • URIs доступними для ваших клієнтів Адресація через URI
  • 44.
    • Відсутність станів,що зберігаються на сервері • Кожен HTTP запит виконується на сервері в повній ізоляції • Спрощене проектування і розвиток • Полегшене масштабування • Уникайте використання HTTP сесій і куків • Відсутність побічних ефектів Відсутність станів
  • 45.
    • Стандартизовані • GET •POST • PUT • DELETE • HEAD • OPTIONS • Репрезентують виклик дії • Ресурси відображають однаковий інтерфейс HTTP методи (дії)
  • 46.
    GET Client Browser GET /v1/users/10548 HTTPStatus: 200 (ОК) Response headers Requested representation Web Server HEAD Client Browser HEAD /v1/users/10548 HTTP Status: 200 (ОК) Response headers Web Server
  • 47.
    PUT Client Browser PUT /v1/users/10548 HTTPStatus: 200 (ОК) Response headers Web Server DELETE Client Browser DELETE /v1/users/10548 HTTP Status: 200 (ОК) Response headers Web Server
  • 48.
    POST Client Browser POST /v1/users/10548 Representationin entity body HTTP Status: 201 (Created) Response headers Web Server
  • 49.
    • Основні засобизвітів про результати REST операції • Використовуйте тіло об'єкта, щоб додати допоміжні визначники до результату • Не відправляйте назад репрезентацію ресурсів на жоден з методів окрім GET, задля забезпечення відсутності негативного впливу на оптимізацію продуктивності HTTP статус коди
  • 50.
    • 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 статус кодів
  • 51.
    • GET IHEAD запити не повинні викликати жодних катастрофічних ефектів на серверній стороні • Відсутність побічних ефектів • Клієнт не повинен робити запитів тільки для погашення побічних ефектів • Уникайте впливу небезпечних (unsafe) операцій через GET Безпека
  • 52.
    • Багаторазовий викликрезультатів операцій дає той самий результат в тому ж результуючому стані, як і результат одного виклику • Ідемпотентні методи: GET, HEAD, PUT, DELETE , OPTIONS • Не ідемпотентні: POST Ідемпотентність
  • 53.
    • Під часстворення і оновлення ресурсів • PUT, якщо, і тільки якщо, ви можете повністю вказати повний вміст ресурсу • POST, якщо ви відправляєте команду, щоб створити або оновити один або кілька підлеглих зазначеного ресурсу • За допомогою POST, сервер буде визначати URI ресурсу • Використовуйте заголовок Location в POST запиті, щоб вказати нові URI езурсів, якщо доступно PUT vs POST
  • 54.
    • HTTPS iSSL сертифікату валідація • 5 головних HTTP методів: GET, HEAD, POST, PUT, DELETE • Кастомізація даних, що відправляються в тілі обєкту PUT або POST запиту • Доступ до статус коду та заголовків відповіді • Комунікація через HTTP проксі Вимоги до HTTP клієнта
  • 55.
    • Передача іобробка стиснених даних • Запит: заголовок Accept Encoding • Відповідь: заголовок Encoding • Кешування відповідей на запит • Запити GET з станом • Загальна форма HTTP аутентифікації (Basic, Digest, WSSE) • Прозоре слідування HTTP переадресації Опціональна функціональність HTTP клієнта
  • 56.
    • Ієрархічна • Кодуйдані в «змінні шляху» в 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
  • 57.
    • Версія вашогосервісу • Вбудова версії в URI • GET /v1/users/234234 • Репрезентація також повинна підлягати версійності • Втавляйте інформацію про версію в репрезентацію Версійність REST API
  • 58.
    • Більшість ресурсівне сильно змінюється • Зберігає клієнтський і серверний час виконання і пропускну здатність мережі • Реалізовано використовуючи HTTP заголовки • Заголовки відповіді: Last-Modified i Etag • Заголовки запиту: If-Modified-Since i If-None-Match Conditional GET
  • 59.
    Conditional GET Client Browser GET/v1/users/10548 If-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
  • 60.
    • Ресурси можутьзберігатись в різних репрезентаціях (XML, JSON, HTML...) • Методи узгодження контенту: • Заголовки (Accept або Content-Type) • Query parameter (GET /v1/users/10505?format=json) • URI extension (GET /v1/users/10505.xml) Узгодження контенту
  • 61.
    • Використання RESTяк RPC-подібний механізм • Надмірне використання POST • Вставляння дій в URI • Маскування сервісу як ресурсу • Управління сесіями на сервері Загальні помилки
  • 62.
  • 63.
  • 64.
    © Denys Prylutskyi,2015 Практичне завдання