SlideShare a Scribd company logo
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
Практичне завдання

More Related Content

PPTX
G rpc lection1_theory_bkp2
PPTX
PPTX
Windows service
PPTX
11 web services
PPTX
PPTX
10 asp.net
PPTX
Version control
PPTX
Aspnet core
G rpc lection1_theory_bkp2
Windows service
11 web services
10 asp.net
Version control
Aspnet core

What's hot (20)

PPTX
.NET Platform. C# Basics
PPTX
07 Database Access
PPTX
Advanced c sharp part 3
PPTX
System programing module 1
PPTX
System programing module 2
PPTX
NoSQL basics
PPTX
System programing module 3
PPTX
Angular. presentation
PPTX
Wcf module 3.5
PPTX
Wcf module 3.3
PPTX
Wcf module 2
PPTX
Wcf module 3.1
PDF
iPhone Objective-C Development (ukr) (2009)
PPTX
Data Structures
PDF
"Request Lifecycle at Prom.ua", Vitaliy Kharytonskiy
PPTX
Advanced styles
PDF
12 - gradle. evoliutsiia system avtomatychnoi zbirky - sviatoslav babych - it...
PPTX
Wcf module 1
PPTX
ASP.Net basics
PPTX
Wcf module 3.2
.NET Platform. C# Basics
07 Database Access
Advanced c sharp part 3
System programing module 1
System programing module 2
NoSQL basics
System programing module 3
Angular. presentation
Wcf module 3.5
Wcf module 3.3
Wcf module 2
Wcf module 3.1
iPhone Objective-C Development (ukr) (2009)
Data Structures
"Request Lifecycle at Prom.ua", Vitaliy Kharytonskiy
Advanced styles
12 - gradle. evoliutsiia system avtomatychnoi zbirky - sviatoslav babych - it...
Wcf module 1
ASP.Net basics
Wcf module 3.2
Ad

Viewers also liked (20)

PPTX
Frontend basics
PPTX
SDLC. PM Role
PPTX
Improving rpc bkp
PPTX
SDLC. QA Role
PPTX
Continuous Delivery concept overview. Continuous Integration Systems. DevOps ...
PPTX
G rpc lection1
PPTX
SDLC. BA Role
PPTX
SDLC. UX Role
PPTX
Css animation, html5 api
PPTX
SQL: Indexes, Select operator
PPTX
SQL Grouping, Joins
PPTX
Sql 04n edited
PPTX
tsql
PPTX
Communication in android
PPTX
Lecture android best practices
PPTX
Hello android world
PPTX
sql introduction
PPTX
Android location and sensors API
PPTX
Lecture java basics
PPTX
Code Practices
Frontend basics
SDLC. PM Role
Improving rpc bkp
SDLC. QA Role
Continuous Delivery concept overview. Continuous Integration Systems. DevOps ...
G rpc lection1
SDLC. BA Role
SDLC. UX Role
Css animation, html5 api
SQL: Indexes, Select operator
SQL Grouping, Joins
Sql 04n edited
tsql
Communication in android
Lecture android best practices
Hello android world
sql introduction
Android location and sensors API
Lecture java basics
Code Practices
Ad

Similar to Web service lecture (20)

PPTX
ASP.Net part 2
PPTX
ASP.Net Core Services
PPTX
System programing module 1. Processes
PPT
Технологія Web 2.0
PDF
"Hancture Mediator Architecture: The Secret Ingredient of a Successful Applic...
PPTX
Lviv MDDay 2014. Дмитро Андреєв “знайомство з .Net micro framework”
PPTX
ASP.NET Core лекція 02.pptx
ODT
Андрій Корнілов Asterisk
PPT
Тема 1. Теорія нових інформаційних технологій
PPTX
PPTX
Інформаційні технології персональної так колективної комунікації
PPTX
PPTX
Compmereji
PPTX
Computer Networks
PPTX
Net framework і c# module 10
PPT
Web 2 0
PPT
Web 2 0
PPT
Web 2 0
PDF
Module_01.pdf (Модуль 1. Вступ до вебтехнологій. Структура HTML. Форматуванн...
PPT
Web2 3 demkova
ASP.Net part 2
ASP.Net Core Services
System programing module 1. Processes
Технологія Web 2.0
"Hancture Mediator Architecture: The Secret Ingredient of a Successful Applic...
Lviv MDDay 2014. Дмитро Андреєв “знайомство з .Net micro framework”
ASP.NET Core лекція 02.pptx
Андрій Корнілов Asterisk
Тема 1. Теорія нових інформаційних технологій
Інформаційні технології персональної так колективної комунікації
Compmereji
Computer Networks
Net framework і c# module 10
Web 2 0
Web 2 0
Web 2 0
Module_01.pdf (Модуль 1. Вступ до вебтехнологій. Структура HTML. Форматуванн...
Web2 3 demkova

Web service lecture

  • 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
  • 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 • Кросс-платформний фреймворк з відкритим вихідним кодом. • Оптимальний для хмарних веб-додатків
  • 23. • Новий легка та модульна магістраль HTTP запитів • Можливість хоститингу на IIS або само-хостинг і вашому власному процесі • Будується на .NET Core, яке підтримує справжню side-by-side версійність програм • Повністю постачається як NuGet пакет • Інтегрована підтримка для створення і використання NuGet пакетів • Одно-вирівняний веб стек для Web UI та Web APIs • Базова конфігурація середовища готова для хмарних рішень • Вбудована підтримка інєкції залежностей • Нові засоби що спрощують сучасну веб розробку • Компіляція та виконання крос-платворменних ASP.NET додатків на Windows, Mac and Linux • Відкритий вихідний код
  • 25. • Мережева технологія, що забезпечує міжпрограмну взаємодію на основі веб- стандартів • Програмна система, розроблену для підтримки інтероперабельнї міжкомп’ютерної взаємодії через мережу Веб сервіс
  • 26. • Протокол, доступу до обєктів, оснований на обміні структурованими повідомленнями • Може використовуватись з будь яким протоколом прикладного рівня ( SMTP, FTP, HTTP) • Використання SOAP для передавання повідомлень збільшує їхній обсяг і знижує швидкість обробки. SOAP (Simple Object Access Protocol)
  • 27. • Ідентификатор повідомлення (локальне ім’я). • Опціональний елемент Header (заголовок): Нуль або більше посилань на використовувані простори імен; Нуль або більше властивостей, досткупних в цьому просторі імен • Обовязковий елемент Body (тіло повідомлення) Нуль або більше посилань на використовувані простори імен Дочірні елементи тіла повідомлення Структура протоколу SOAP
  • 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)
  • 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 State Transfer (назва не відповідає суті) • Архітектурний паттерн, а не стандарт • Стано-незалежний (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 HTTP Status: 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 HTTP Status: 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 Representation in 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 I HEAD запити не повинні викликати жодних катастрофічних ефектів на серверній стороні • Відсутність побічних ефектів • Клієнт не повинен робити запитів тільки для погашення побічних ефектів • Уникайте впливу небезпечних (unsafe) операцій через GET Безпека
  • 52. • Багаторазовий виклик результатів операцій дає той самий результат в тому ж результуючому стані, як і результат одного виклику • Ідемпотентні методи: GET, HEAD, PUT, DELETE , OPTIONS • Не ідемпотентні: POST Ідемпотентність
  • 53. • Під час створення і оновлення ресурсів • PUT, якщо, і тільки якщо, ви можете повністю вказати повний вміст ресурсу • POST, якщо ви відправляєте команду, щоб створити або оновити один або кілька підлеглих зазначеного ресурсу • За допомогою POST, сервер буде визначати URI ресурсу • Використовуйте заголовок Location в POST запиті, щоб вказати нові URI езурсів, якщо доступно PUT vs POST
  • 54. • HTTPS i SSL сертифікату валідація • 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 • Маскування сервісу як ресурсу • Управління сесіями на сервері Загальні помилки
  • 64. © Denys Prylutskyi, 2015 Практичне завдання