SlideShare una empresa de Scribd logo
1 de 19
ASP.NET Web API
Фреймворк для работы с данными по HTTP
Андрей Кулешов
ASP.NET Web API – история
▪ Первый релиз – 2012 год
▪ Текущая версия
Web API 2.1 – 20 января 2014 года
▪ Перерождение WCF
Эволюция доступа к данным
▪ RPC (SOAP, WCF) -> REST
▪ От абстракции – возвращение к четко определенному протоколу HTTP
▪ RPC – Remote Procedure Call – удалѐнный вызов кода на серверной стороне
посредством магии
▪ Подход RPC позволяет использовать небольшое количество сетевых
ресурсов с большим количеством методов и сложным протоколом. При
подходе REST количество методов и сложность протокола строго
ограничены, из-за чего количество отдельных ресурсов может быть
большим.
Representational state transfer (REST)
▪ REST (сокр. англ. Representational State Transfer, «передача состояния
представления»[1] или «передача репрезентативного состояния») — стиль
построения архитектуры распределенного приложения. Был описан и
популяризован в 2000 году Роем Филдингом (Roy Fielding), одним из
создателей протокола HTTP. Самой известной системой, построенной в
значительной степени по архитектуре REST, является
современная Всемирная паутина.
▪ Данные в REST должны передаваться в виде небольшого количества
стандартных форматов (например HTML, XML, JSON). Сетевой протокол
(как и HTTP) должен поддерживать кэширование, не должен зависеть от
сетевого слоя, не должен сохранять информацию о состоянии между
парами «запрос-ответ». Утверждается, что такой подход обеспечивает
масштабируемость системы и позволяет ей эволюционировать с новыми
требованиями.
REST <-> HTTP
▪ Методы HTTP, используемые в REST, определяют тип совершаемой
операции
▪ GET – получение существующих сущностей
▪ POST – модификация существующих сущностей
▪ PUT – создание сущностей
▪ PUT DELETE – как слышится, так и пишется
REST
▪ Вызываемый метод определяется адресом URI и методом Verb
▪ Отсутствие состояния у системы (stateless система – в противоположность
statefull системе)
▪ Кэширование
Демо
▪ Совсем простое Web API
▪ Совсем простое клиентское приложение
Контроллеры и методы
▪ Рекомендованный путь – один контроллер на одну сущность данных
BookController
AuthorController
ReaderController
▪ Каждый контроллер содержит множество методов
▪ Имя метода (action) сопоставляется c методом (verb) запроса
EventController: ApiContoller{
public Event GetMyCoolEvent() {
return new Event();
}
}
Данный метод сопоставляется со всеми GET-запросами. Остаток имени
(MyCoolEvent) игнорируется
Если Get*-методов несколько – выбирается первый соответствующий по
параметрам
▪ Параметры могу приходить из URL, в HTTP-заголовках или из тела запроса (для
POST/PUT/DELETE запросов)
Роутинг
▪ При разработке устанавливаются правила соответствия пришедшего
запроса и наших классов *Controller и их методов
▪ В пришедшем запросе (по умолчанию) смотрят на:
o путь (URL)
o HTTP-метод (GET, POST, PUT, UPDATE)
▪ Классический подход, пришедший из ASP.NET MVC – заполнение набора
правил роутинга
▪ Новый подход – установка атрибутов на действия
OData
▪ Стандарт протокола запросов при обращении к данным
▪ Попытка Майкрософт и К стандартизовать язык запросов к REST-сервисам
▪ Задает стандартные операции над сущностями –
фильтрация, сортировка, разбиение на страницы и получение связанных
сущностей
Odata и Web API 2.1
▪ Поддерживаемые Web API v.2.1 операции:
$filter – фильтрация выборки
$orderby - сортировка
$top/$skip – первые N записей и пропуск первых N записей; разбиение на
страницы
$inlinecount – добавляет в ответ информацию о количестве
записей, удовлетворяющих условию
$select – выбор того, какие данные сущности будут возвращены
$expand – позволяет как результат запроса к сущностям одного типа
получить также связанные сущности другого типа (например, при запросе к
данным о книгах – получить в том же запросе ответ об авторах этих книг)
▪ По умолчанию выключены, включаются централизованно либо
для нужных методов через атрибуты
Демо
▪ Включение OData
▪ Фильтрация через параметры URL
Безопасность
▪ Авторизация пользователей
▪ Поддержка CORS (из коробки с версии 2.1 – добавлена как патч от члена
сообщества)
Справка по API
▪ Web API из коробки поддерживает возможность автоматического создания
справочных страниц на основе сгенерированного Web API
▪ Туда собираются данные об известных сущностях, поддерживаемых
операциях и URL-адресах
▪ Если необходима тонкая настройка – возможен непосредственный доступ к
данным через ApiExplorer
Создание справки
▪ Добавление справки в проект
Размещение Web API
▪ Классическое – как часть ASP.NET сайта на IIS
▪ Self-hosting – возможность встроить Web API куда угодно (в разного рода
демонстрациях – в консольное приложение, в реальной жизни – в Windows-
сервисы)
▪ OWIN – то же самое, что и предыдущий пункт, но по-новому
Open Web Interface for .NET
Новая реализация стэка работы с сетью по протоколу HTTP, не привязанная
к IIS вообще и к System.Web.dll в частности
Интересное чтение
▪ Официальный сайт. Документация, примеры и статьи
http://asp.net/web-api
▪ REST на Википедии
▪ ASP.NET MVC 4 and the Web API: Building a REST Service from Start to Finish
by Jamie Kurtz
▪ OData
http://www.odata.org
Интересное видео
▪ ASP.NET Web API – What’s New (версия 2.0)
Вопросы?
Внимательно слушаю! 
Андрей Кулешов
kaa-tula@ya.ru
akuleshov.tula
Специально для http://GetDev.NET

Más contenido relacionado

La actualidad más candente

01 server definition
01 server definition01 server definition
01 server definitionmcroitor
 
кри 2014 elastic search рациональный подход к созданию собственной системы а...
кри 2014 elastic search  рациональный подход к созданию собственной системы а...кри 2014 elastic search  рациональный подход к созданию собственной системы а...
кри 2014 elastic search рациональный подход к созданию собственной системы а...Vyacheslav Nikulin
 
ITmozg, Даниил Павлючков
ITmozg, Даниил ПавлючковITmozg, Даниил Павлючков
ITmozg, Даниил ПавлючковEYevseyeva
 
Zabbix в сервисной компании  ОНЛАНТА - Zabbix Meetup Moscow
Zabbix в сервисной компании  ОНЛАНТА -  Zabbix Meetup Moscow Zabbix в сервисной компании  ОНЛАНТА -  Zabbix Meetup Moscow
Zabbix в сервисной компании  ОНЛАНТА - Zabbix Meetup Moscow Vadim Nesterov
 
ECP и API управления процессами. InterSystems Meetup Sankt-Peterburg 2014
ECP и API управления процессами. InterSystems Meetup Sankt-Peterburg 2014ECP и API управления процессами. InterSystems Meetup Sankt-Peterburg 2014
ECP и API управления процессами. InterSystems Meetup Sankt-Peterburg 2014InterSystems
 
Rit 2010 реляционные олег царев субд и их нереляционные реализации
Rit 2010   реляционные олег царев субд и их нереляционные реализацииRit 2010   реляционные олег царев субд и их нереляционные реализации
Rit 2010 реляционные олег царев субд и их нереляционные реализацииrit2010
 
Технологии тестирования Rich Web client, Андрей Плешков, Форум Технологий Mai...
Технологии тестирования Rich Web client, Андрей Плешков, Форум Технологий Mai...Технологии тестирования Rich Web client, Андрей Плешков, Форум Технологий Mai...
Технологии тестирования Rich Web client, Андрей Плешков, Форум Технологий Mai...tfmailru
 
Доклад Ильи Аблеева на DevOps Meetup "Мониторинг высоконагруженного проекта".
Доклад Ильи Аблеева на DevOps Meetup "Мониторинг высоконагруженного проекта".Доклад Ильи Аблеева на DevOps Meetup "Мониторинг высоконагруженного проекта".
Доклад Ильи Аблеева на DevOps Meetup "Мониторинг высоконагруженного проекта".Badoo Development
 
Как не утонуть в мегабайтах JS-кода
Как не утонуть в мегабайтах JS-кодаКак не утонуть в мегабайтах JS-кода
Как не утонуть в мегабайтах JS-кодаtfmailru
 
Web and mobile development for intersystems caché, Eduard Lebedyuk
Web and mobile development for intersystems caché, Eduard LebedyukWeb and mobile development for intersystems caché, Eduard Lebedyuk
Web and mobile development for intersystems caché, Eduard LebedyukInterSystems
 
«Путь от монолита на PHP к микросервисам на Scala» – Денис Иванов, 2ГИС
«Путь от монолита на PHP к микросервисам на Scala» – Денис Иванов, 2ГИС «Путь от монолита на PHP к микросервисам на Scala» – Денис Иванов, 2ГИС
«Путь от монолита на PHP к микросервисам на Scala» – Денис Иванов, 2ГИС 2ГИС Технологии
 
Cергей Коржнев, 2ГИС
Cергей Коржнев, 2ГИСCергей Коржнев, 2ГИС
Cергей Коржнев, 2ГИСOntico
 
Дмитрий Чирков, "Технологический стартап", занятие 3, 22.03.2012
Дмитрий Чирков, "Технологический стартап", занятие 3, 22.03.2012Дмитрий Чирков, "Технологический стартап", занятие 3, 22.03.2012
Дмитрий Чирков, "Технологический стартап", занятие 3, 22.03.2012ideaperm
 
Zabbix: Прошлое, настоящее и будущее (Zabbix: Past, present and the future)
Zabbix: Прошлое, настоящее и будущее (Zabbix: Past, present and the future)Zabbix: Прошлое, настоящее и будущее (Zabbix: Past, present and the future)
Zabbix: Прошлое, настоящее и будущее (Zabbix: Past, present and the future)Zabbix
 
Как мы данные готовили ORM и все-все-все в приложении Почта Mail.Ru / Кирилл ...
Как мы данные готовили ORM и все-все-все в приложении Почта Mail.Ru / Кирилл ...Как мы данные готовили ORM и все-все-все в приложении Почта Mail.Ru / Кирилл ...
Как мы данные готовили ORM и все-все-все в приложении Почта Mail.Ru / Кирилл ...Ontico
 
XML Native Database на примере SednaXML
XML Native Database на примере SednaXMLXML Native Database на примере SednaXML
XML Native Database на примере SednaXMLSlach
 

La actualidad más candente (20)

REST
RESTREST
REST
 
01 server definition
01 server definition01 server definition
01 server definition
 
кри 2014 elastic search рациональный подход к созданию собственной системы а...
кри 2014 elastic search  рациональный подход к созданию собственной системы а...кри 2014 elastic search  рациональный подход к созданию собственной системы а...
кри 2014 elastic search рациональный подход к созданию собственной системы а...
 
переезд мониторинга
переезд мониторингапереезд мониторинга
переезд мониторинга
 
ITmozg, Даниил Павлючков
ITmozg, Даниил ПавлючковITmozg, Даниил Павлючков
ITmozg, Даниил Павлючков
 
Zabbix в сервисной компании  ОНЛАНТА - Zabbix Meetup Moscow
Zabbix в сервисной компании  ОНЛАНТА -  Zabbix Meetup Moscow Zabbix в сервисной компании  ОНЛАНТА -  Zabbix Meetup Moscow
Zabbix в сервисной компании  ОНЛАНТА - Zabbix Meetup Moscow
 
ECP и API управления процессами. InterSystems Meetup Sankt-Peterburg 2014
ECP и API управления процессами. InterSystems Meetup Sankt-Peterburg 2014ECP и API управления процессами. InterSystems Meetup Sankt-Peterburg 2014
ECP и API управления процессами. InterSystems Meetup Sankt-Peterburg 2014
 
Class queries
Class queriesClass queries
Class queries
 
Rit 2010 реляционные олег царев субд и их нереляционные реализации
Rit 2010   реляционные олег царев субд и их нереляционные реализацииRit 2010   реляционные олег царев субд и их нереляционные реализации
Rit 2010 реляционные олег царев субд и их нереляционные реализации
 
Технологии тестирования Rich Web client, Андрей Плешков, Форум Технологий Mai...
Технологии тестирования Rich Web client, Андрей Плешков, Форум Технологий Mai...Технологии тестирования Rich Web client, Андрей Плешков, Форум Технологий Mai...
Технологии тестирования Rich Web client, Андрей Плешков, Форум Технологий Mai...
 
Доклад Ильи Аблеева на DevOps Meetup "Мониторинг высоконагруженного проекта".
Доклад Ильи Аблеева на DevOps Meetup "Мониторинг высоконагруженного проекта".Доклад Ильи Аблеева на DevOps Meetup "Мониторинг высоконагруженного проекта".
Доклад Ильи Аблеева на DevOps Meetup "Мониторинг высоконагруженного проекта".
 
Как не утонуть в мегабайтах JS-кода
Как не утонуть в мегабайтах JS-кодаКак не утонуть в мегабайтах JS-кода
Как не утонуть в мегабайтах JS-кода
 
Web and mobile development for intersystems caché, Eduard Lebedyuk
Web and mobile development for intersystems caché, Eduard LebedyukWeb and mobile development for intersystems caché, Eduard Lebedyuk
Web and mobile development for intersystems caché, Eduard Lebedyuk
 
«Путь от монолита на PHP к микросервисам на Scala» – Денис Иванов, 2ГИС
«Путь от монолита на PHP к микросервисам на Scala» – Денис Иванов, 2ГИС «Путь от монолита на PHP к микросервисам на Scala» – Денис Иванов, 2ГИС
«Путь от монолита на PHP к микросервисам на Scala» – Денис Иванов, 2ГИС
 
Cергей Коржнев, 2ГИС
Cергей Коржнев, 2ГИСCергей Коржнев, 2ГИС
Cергей Коржнев, 2ГИС
 
Дмитрий Чирков, "Технологический стартап", занятие 3, 22.03.2012
Дмитрий Чирков, "Технологический стартап", занятие 3, 22.03.2012Дмитрий Чирков, "Технологический стартап", занятие 3, 22.03.2012
Дмитрий Чирков, "Технологический стартап", занятие 3, 22.03.2012
 
Zabbix: Прошлое, настоящее и будущее (Zabbix: Past, present and the future)
Zabbix: Прошлое, настоящее и будущее (Zabbix: Past, present and the future)Zabbix: Прошлое, настоящее и будущее (Zabbix: Past, present and the future)
Zabbix: Прошлое, настоящее и будущее (Zabbix: Past, present and the future)
 
os_components
os_componentsos_components
os_components
 
Как мы данные готовили ORM и все-все-все в приложении Почта Mail.Ru / Кирилл ...
Как мы данные готовили ORM и все-все-все в приложении Почта Mail.Ru / Кирилл ...Как мы данные готовили ORM и все-все-все в приложении Почта Mail.Ru / Кирилл ...
Как мы данные готовили ORM и все-все-все в приложении Почта Mail.Ru / Кирилл ...
 
XML Native Database на примере SednaXML
XML Native Database на примере SednaXMLXML Native Database на примере SednaXML
XML Native Database на примере SednaXML
 

Similar a ASP.NET Web API

Разработка мобильного и веб интерфейса для Caché
Разработка мобильного и веб интерфейса для CachéРазработка мобильного и веб интерфейса для Caché
Разработка мобильного и веб интерфейса для CachéInterSystems CEE
 
C# Web. Занятие 01.
C# Web. Занятие 01.C# Web. Занятие 01.
C# Web. Занятие 01.Igor Shkulipa
 
Lesson1
Lesson1Lesson1
Lesson1jinol
 
!2hl++2008 Restful Architechture
!2hl++2008 Restful Architechture!2hl++2008 Restful Architechture
!2hl++2008 Restful ArchitechtureOntico
 
RESTful Architechture (Highload++ 2008)
RESTful Architechture (Highload++ 2008)RESTful Architechture (Highload++ 2008)
RESTful Architechture (Highload++ 2008)Sergey Skvortsov
 
Impress Application Server for node.js (ru)
Impress Application Server for node.js (ru)Impress Application Server for node.js (ru)
Impress Application Server for node.js (ru)Timur Shemsedinov
 
ASP.NET, MVC, ASP.NET MVC
ASP.NET, MVC, ASP.NET MVCASP.NET, MVC, ASP.NET MVC
ASP.NET, MVC, ASP.NET MVCGetDev.NET
 
Мировые информационные ресурсы. Лекция 3
Мировые информационные ресурсы. Лекция 3Мировые информационные ресурсы. Лекция 3
Мировые информационные ресурсы. Лекция 3Dmitriy Krukov
 
C++ STL & Qt. Занятие 07.
C++ STL & Qt. Занятие 07.C++ STL & Qt. Занятие 07.
C++ STL & Qt. Занятие 07.Igor Shkulipa
 
Юлия Цисык «RESTFul API в вашем.NET приложении: как, зачем и почему?»
Юлия Цисык «RESTFul API в вашем.NET приложении: как, зачем и почему?»Юлия Цисык «RESTFul API в вашем.NET приложении: как, зачем и почему?»
Юлия Цисык «RESTFul API в вашем.NET приложении: как, зачем и почему?»Yulia Tsisyk
 
Лекция 1. Модель OSI.
Лекция 1. Модель OSI.Лекция 1. Модель OSI.
Лекция 1. Модель OSI.Alexey Furmanov
 
Техническая оптимизация сайтов
Техническая оптимизация сайтовТехническая оптимизация сайтов
Техническая оптимизация сайтовYury Vasyn
 
Протокол HTTP. Клиент-серверная модель взаимодействия. Servlet API
Протокол HTTP. Клиент-серверная модель взаимодействия. Servlet APIПротокол HTTP. Клиент-серверная модель взаимодействия. Servlet API
Протокол HTTP. Клиент-серверная модель взаимодействия. Servlet APIEkaterina Kuchinskaya
 
RESTful API: Best practices, versioning, design documentation
RESTful API: Best practices, versioning, design documentationRESTful API: Best practices, versioning, design documentation
RESTful API: Best practices, versioning, design documentationMikhail Shcherbakov
 
Нагрузочное тестирование API. Как летать, а не ползать?
Нагрузочное тестирование API. Как летать, а не ползать?Нагрузочное тестирование API. Как летать, а не ползать?
Нагрузочное тестирование API. Как летать, а не ползать?IT61
 
Встреча №8. RESTful клиент — это просто. Тонкости использования RestKit, Миха...
Встреча №8. RESTful клиент — это просто. Тонкости использования RestKit, Миха...Встреча №8. RESTful клиент — это просто. Тонкости использования RestKit, Миха...
Встреча №8. RESTful клиент — это просто. Тонкости использования RestKit, Миха...CocoaHeads
 
ВІТАЛІЙ ГОНЧАРУК «За допомогою чого пишуться серйозні веб додатки на .NET» O...
ВІТАЛІЙ ГОНЧАРУК «За допомогою чого пишуться серйозні веб додатки на .NET»  O...ВІТАЛІЙ ГОНЧАРУК «За допомогою чого пишуться серйозні веб додатки на .NET»  O...
ВІТАЛІЙ ГОНЧАРУК «За допомогою чого пишуться серйозні веб додатки на .NET» O...WDDay
 
Phalcon - самый быстрый PHP Framework
Phalcon - самый быстрый PHP FrameworkPhalcon - самый быстрый PHP Framework
Phalcon - самый быстрый PHP FrameworkOleksandr Torosh
 
Catalyst – MVC framework на Perl (RIT 2008)
Catalyst – MVC framework на Perl  (RIT 2008)Catalyst – MVC framework на Perl  (RIT 2008)
Catalyst – MVC framework на Perl (RIT 2008)Sergey Skvortsov
 

Similar a ASP.NET Web API (20)

Разработка мобильного и веб интерфейса для Caché
Разработка мобильного и веб интерфейса для CachéРазработка мобильного и веб интерфейса для Caché
Разработка мобильного и веб интерфейса для Caché
 
C# Web. Занятие 01.
C# Web. Занятие 01.C# Web. Занятие 01.
C# Web. Занятие 01.
 
Lesson1
Lesson1Lesson1
Lesson1
 
!2hl++2008 Restful Architechture
!2hl++2008 Restful Architechture!2hl++2008 Restful Architechture
!2hl++2008 Restful Architechture
 
RESTful Architechture (Highload++ 2008)
RESTful Architechture (Highload++ 2008)RESTful Architechture (Highload++ 2008)
RESTful Architechture (Highload++ 2008)
 
Impress Application Server for node.js (ru)
Impress Application Server for node.js (ru)Impress Application Server for node.js (ru)
Impress Application Server for node.js (ru)
 
ASP.NET, MVC, ASP.NET MVC
ASP.NET, MVC, ASP.NET MVCASP.NET, MVC, ASP.NET MVC
ASP.NET, MVC, ASP.NET MVC
 
Мировые информационные ресурсы. Лекция 3
Мировые информационные ресурсы. Лекция 3Мировые информационные ресурсы. Лекция 3
Мировые информационные ресурсы. Лекция 3
 
C++ STL & Qt. Занятие 07.
C++ STL & Qt. Занятие 07.C++ STL & Qt. Занятие 07.
C++ STL & Qt. Занятие 07.
 
Юлия Цисык «RESTFul API в вашем.NET приложении: как, зачем и почему?»
Юлия Цисык «RESTFul API в вашем.NET приложении: как, зачем и почему?»Юлия Цисык «RESTFul API в вашем.NET приложении: как, зачем и почему?»
Юлия Цисык «RESTFul API в вашем.NET приложении: как, зачем и почему?»
 
REST API JL.elama
REST API JL.elamaREST API JL.elama
REST API JL.elama
 
Лекция 1. Модель OSI.
Лекция 1. Модель OSI.Лекция 1. Модель OSI.
Лекция 1. Модель OSI.
 
Техническая оптимизация сайтов
Техническая оптимизация сайтовТехническая оптимизация сайтов
Техническая оптимизация сайтов
 
Протокол HTTP. Клиент-серверная модель взаимодействия. Servlet API
Протокол HTTP. Клиент-серверная модель взаимодействия. Servlet APIПротокол HTTP. Клиент-серверная модель взаимодействия. Servlet API
Протокол HTTP. Клиент-серверная модель взаимодействия. Servlet API
 
RESTful API: Best practices, versioning, design documentation
RESTful API: Best practices, versioning, design documentationRESTful API: Best practices, versioning, design documentation
RESTful API: Best practices, versioning, design documentation
 
Нагрузочное тестирование API. Как летать, а не ползать?
Нагрузочное тестирование API. Как летать, а не ползать?Нагрузочное тестирование API. Как летать, а не ползать?
Нагрузочное тестирование API. Как летать, а не ползать?
 
Встреча №8. RESTful клиент — это просто. Тонкости использования RestKit, Миха...
Встреча №8. RESTful клиент — это просто. Тонкости использования RestKit, Миха...Встреча №8. RESTful клиент — это просто. Тонкости использования RestKit, Миха...
Встреча №8. RESTful клиент — это просто. Тонкости использования RestKit, Миха...
 
ВІТАЛІЙ ГОНЧАРУК «За допомогою чого пишуться серйозні веб додатки на .NET» O...
ВІТАЛІЙ ГОНЧАРУК «За допомогою чого пишуться серйозні веб додатки на .NET»  O...ВІТАЛІЙ ГОНЧАРУК «За допомогою чого пишуться серйозні веб додатки на .NET»  O...
ВІТАЛІЙ ГОНЧАРУК «За допомогою чого пишуться серйозні веб додатки на .NET» O...
 
Phalcon - самый быстрый PHP Framework
Phalcon - самый быстрый PHP FrameworkPhalcon - самый быстрый PHP Framework
Phalcon - самый быстрый PHP Framework
 
Catalyst – MVC framework на Perl (RIT 2008)
Catalyst – MVC framework на Perl  (RIT 2008)Catalyst – MVC framework на Perl  (RIT 2008)
Catalyst – MVC framework на Perl (RIT 2008)
 

Más de GetDev.NET

Leap Motion - игрушка с заделом на будущее
Leap Motion - игрушка с заделом на будущееLeap Motion - игрушка с заделом на будущее
Leap Motion - игрушка с заделом на будущееGetDev.NET
 
Гирлянда для программистов
Гирлянда для программистовГирлянда для программистов
Гирлянда для программистовGetDev.NET
 
Mind Mapping, или как заставить свой мозг работать лучше
Mind Mapping, или как заставить свой мозг работать лучшеMind Mapping, или как заставить свой мозг работать лучше
Mind Mapping, или как заставить свой мозг работать лучшеGetDev.NET
 
Что нового в Visual Studio 2015
Что нового в Visual Studio 2015Что нового в Visual Studio 2015
Что нового в Visual Studio 2015GetDev.NET
 
Docker контейнерная революция
Docker контейнерная революцияDocker контейнерная революция
Docker контейнерная революцияGetDev.NET
 
Windows 10 для пользователей и разработчиков
Windows 10 для пользователей и разработчиковWindows 10 для пользователей и разработчиков
Windows 10 для пользователей и разработчиковGetDev.NET
 
PhoneGap для мобильного разработчика - глубокое погружение без ОЗК
PhoneGap для мобильного разработчика - глубокое погружение без ОЗКPhoneGap для мобильного разработчика - глубокое погружение без ОЗК
PhoneGap для мобильного разработчика - глубокое погружение без ОЗКGetDev.NET
 
Что нового в Visual Studio 2013
Что нового в Visual Studio 2013Что нового в Visual Studio 2013
Что нового в Visual Studio 2013GetDev.NET
 
Создание повторно используемых бизнес моделей с помощью технологии Domain Com...
Создание повторно используемых бизнес моделей с помощью технологии Domain Com...Создание повторно используемых бизнес моделей с помощью технологии Domain Com...
Создание повторно используемых бизнес моделей с помощью технологии Domain Com...GetDev.NET
 
Lego Mindstorms
Lego MindstormsLego Mindstorms
Lego MindstormsGetDev.NET
 
Особенности мобильной платформы Windows Phone 8
Особенности мобильной платформы Windows Phone 8Особенности мобильной платформы Windows Phone 8
Особенности мобильной платформы Windows Phone 8GetDev.NET
 
Async Javascript
Async JavascriptAsync Javascript
Async JavascriptGetDev.NET
 
XAML - язык разметки приложений
XAML - язык разметки приложенийXAML - язык разметки приложений
XAML - язык разметки приложенийGetDev.NET
 
Dynamic Language Runtime
Dynamic Language RuntimeDynamic Language Runtime
Dynamic Language RuntimeGetDev.NET
 
JavaScript: хороший тон клиентской разработки
JavaScript: хороший тон клиентской разработкиJavaScript: хороший тон клиентской разработки
JavaScript: хороший тон клиентской разработкиGetDev.NET
 
Roslyn - компилятор как сервис
Roslyn - компилятор как сервисRoslyn - компилятор как сервис
Roslyn - компилятор как сервисGetDev.NET
 

Más de GetDev.NET (20)

Go
GoGo
Go
 
Leap Motion - игрушка с заделом на будущее
Leap Motion - игрушка с заделом на будущееLeap Motion - игрушка с заделом на будущее
Leap Motion - игрушка с заделом на будущее
 
Гирлянда для программистов
Гирлянда для программистовГирлянда для программистов
Гирлянда для программистов
 
Mind Mapping, или как заставить свой мозг работать лучше
Mind Mapping, или как заставить свой мозг работать лучшеMind Mapping, или как заставить свой мозг работать лучше
Mind Mapping, или как заставить свой мозг работать лучше
 
Что нового в Visual Studio 2015
Что нового в Visual Studio 2015Что нового в Visual Studio 2015
Что нового в Visual Studio 2015
 
Docker контейнерная революция
Docker контейнерная революцияDocker контейнерная революция
Docker контейнерная революция
 
Windows 10 для пользователей и разработчиков
Windows 10 для пользователей и разработчиковWindows 10 для пользователей и разработчиков
Windows 10 для пользователей и разработчиков
 
PhoneGap для мобильного разработчика - глубокое погружение без ОЗК
PhoneGap для мобильного разработчика - глубокое погружение без ОЗКPhoneGap для мобильного разработчика - глубокое погружение без ОЗК
PhoneGap для мобильного разработчика - глубокое погружение без ОЗК
 
Что нового в Visual Studio 2013
Что нового в Visual Studio 2013Что нового в Visual Studio 2013
Что нового в Visual Studio 2013
 
AngularJS
AngularJSAngularJS
AngularJS
 
TypeScript
TypeScriptTypeScript
TypeScript
 
Создание повторно используемых бизнес моделей с помощью технологии Domain Com...
Создание повторно используемых бизнес моделей с помощью технологии Domain Com...Создание повторно используемых бизнес моделей с помощью технологии Domain Com...
Создание повторно используемых бизнес моделей с помощью технологии Domain Com...
 
Lego Mindstorms
Lego MindstormsLego Mindstorms
Lego Mindstorms
 
Особенности мобильной платформы Windows Phone 8
Особенности мобильной платформы Windows Phone 8Особенности мобильной платформы Windows Phone 8
Особенности мобильной платформы Windows Phone 8
 
Async Javascript
Async JavascriptAsync Javascript
Async Javascript
 
XAML - язык разметки приложений
XAML - язык разметки приложенийXAML - язык разметки приложений
XAML - язык разметки приложений
 
Dynamic Language Runtime
Dynamic Language RuntimeDynamic Language Runtime
Dynamic Language Runtime
 
JavaScript: хороший тон клиентской разработки
JavaScript: хороший тон клиентской разработкиJavaScript: хороший тон клиентской разработки
JavaScript: хороший тон клиентской разработки
 
Roslyn - компилятор как сервис
Roslyn - компилятор как сервисRoslyn - компилятор как сервис
Roslyn - компилятор как сервис
 
ASP.NET MVC 4
ASP.NET MVC 4ASP.NET MVC 4
ASP.NET MVC 4
 

ASP.NET Web API

  • 1. ASP.NET Web API Фреймворк для работы с данными по HTTP Андрей Кулешов
  • 2. ASP.NET Web API – история ▪ Первый релиз – 2012 год ▪ Текущая версия Web API 2.1 – 20 января 2014 года ▪ Перерождение WCF
  • 3. Эволюция доступа к данным ▪ RPC (SOAP, WCF) -> REST ▪ От абстракции – возвращение к четко определенному протоколу HTTP ▪ RPC – Remote Procedure Call – удалѐнный вызов кода на серверной стороне посредством магии ▪ Подход RPC позволяет использовать небольшое количество сетевых ресурсов с большим количеством методов и сложным протоколом. При подходе REST количество методов и сложность протокола строго ограничены, из-за чего количество отдельных ресурсов может быть большим.
  • 4. Representational state transfer (REST) ▪ REST (сокр. англ. Representational State Transfer, «передача состояния представления»[1] или «передача репрезентативного состояния») — стиль построения архитектуры распределенного приложения. Был описан и популяризован в 2000 году Роем Филдингом (Roy Fielding), одним из создателей протокола HTTP. Самой известной системой, построенной в значительной степени по архитектуре REST, является современная Всемирная паутина. ▪ Данные в REST должны передаваться в виде небольшого количества стандартных форматов (например HTML, XML, JSON). Сетевой протокол (как и HTTP) должен поддерживать кэширование, не должен зависеть от сетевого слоя, не должен сохранять информацию о состоянии между парами «запрос-ответ». Утверждается, что такой подход обеспечивает масштабируемость системы и позволяет ей эволюционировать с новыми требованиями.
  • 5. REST <-> HTTP ▪ Методы HTTP, используемые в REST, определяют тип совершаемой операции ▪ GET – получение существующих сущностей ▪ POST – модификация существующих сущностей ▪ PUT – создание сущностей ▪ PUT DELETE – как слышится, так и пишется
  • 6. REST ▪ Вызываемый метод определяется адресом URI и методом Verb ▪ Отсутствие состояния у системы (stateless система – в противоположность statefull системе) ▪ Кэширование
  • 7. Демо ▪ Совсем простое Web API ▪ Совсем простое клиентское приложение
  • 8. Контроллеры и методы ▪ Рекомендованный путь – один контроллер на одну сущность данных BookController AuthorController ReaderController ▪ Каждый контроллер содержит множество методов ▪ Имя метода (action) сопоставляется c методом (verb) запроса EventController: ApiContoller{ public Event GetMyCoolEvent() { return new Event(); } } Данный метод сопоставляется со всеми GET-запросами. Остаток имени (MyCoolEvent) игнорируется Если Get*-методов несколько – выбирается первый соответствующий по параметрам ▪ Параметры могу приходить из URL, в HTTP-заголовках или из тела запроса (для POST/PUT/DELETE запросов)
  • 9. Роутинг ▪ При разработке устанавливаются правила соответствия пришедшего запроса и наших классов *Controller и их методов ▪ В пришедшем запросе (по умолчанию) смотрят на: o путь (URL) o HTTP-метод (GET, POST, PUT, UPDATE) ▪ Классический подход, пришедший из ASP.NET MVC – заполнение набора правил роутинга ▪ Новый подход – установка атрибутов на действия
  • 10. OData ▪ Стандарт протокола запросов при обращении к данным ▪ Попытка Майкрософт и К стандартизовать язык запросов к REST-сервисам ▪ Задает стандартные операции над сущностями – фильтрация, сортировка, разбиение на страницы и получение связанных сущностей
  • 11. Odata и Web API 2.1 ▪ Поддерживаемые Web API v.2.1 операции: $filter – фильтрация выборки $orderby - сортировка $top/$skip – первые N записей и пропуск первых N записей; разбиение на страницы $inlinecount – добавляет в ответ информацию о количестве записей, удовлетворяющих условию $select – выбор того, какие данные сущности будут возвращены $expand – позволяет как результат запроса к сущностям одного типа получить также связанные сущности другого типа (например, при запросе к данным о книгах – получить в том же запросе ответ об авторах этих книг) ▪ По умолчанию выключены, включаются централизованно либо для нужных методов через атрибуты
  • 12. Демо ▪ Включение OData ▪ Фильтрация через параметры URL
  • 13. Безопасность ▪ Авторизация пользователей ▪ Поддержка CORS (из коробки с версии 2.1 – добавлена как патч от члена сообщества)
  • 14. Справка по API ▪ Web API из коробки поддерживает возможность автоматического создания справочных страниц на основе сгенерированного Web API ▪ Туда собираются данные об известных сущностях, поддерживаемых операциях и URL-адресах ▪ Если необходима тонкая настройка – возможен непосредственный доступ к данным через ApiExplorer
  • 16. Размещение Web API ▪ Классическое – как часть ASP.NET сайта на IIS ▪ Self-hosting – возможность встроить Web API куда угодно (в разного рода демонстрациях – в консольное приложение, в реальной жизни – в Windows- сервисы) ▪ OWIN – то же самое, что и предыдущий пункт, но по-новому Open Web Interface for .NET Новая реализация стэка работы с сетью по протоколу HTTP, не привязанная к IIS вообще и к System.Web.dll в частности
  • 17. Интересное чтение ▪ Официальный сайт. Документация, примеры и статьи http://asp.net/web-api ▪ REST на Википедии ▪ ASP.NET MVC 4 and the Web API: Building a REST Service from Start to Finish by Jamie Kurtz ▪ OData http://www.odata.org
  • 18. Интересное видео ▪ ASP.NET Web API – What’s New (версия 2.0)
  • 19. Вопросы? Внимательно слушаю!  Андрей Кулешов kaa-tula@ya.ru akuleshov.tula Специально для http://GetDev.NET