SlideShare uma empresa Scribd logo
1 de 52
Baixar para ler offline
RESTful API в вашем .NET приложении:
Как, зачем и почему?
Юлия Цисык, CUSTIS
MSK DOT NET MeetUp #2
Зачем...
• Нужно думать об API?
Почему…
• Именно REST и чем он хорош?
Как…
• Делать АПИ хорошо?
• Версионировать?
• “Открыть” данные с помощью OData?
• Проектировать доменную модель?
2
Что такое API?
Aplication Program Interface
• Набор правил и механизмов
3
Почему хороший API это важно?
• Легко использовать и поддерживать
• API - это UI для разработчиков
• Увеличивает популярность сервиса
4
Какие виды API бывают?
• Web service APIs
• XML-RPC and JSON-RPC
• SOAP
• REST
• WebSockets APIs
• Library-based APIs
• Java Script
• Class-based APIs
• C# API, Java
• OS function and routines
• Access to file system
• Access to user interface
• Object remoting APIs
• CORBA
• .Net remoting
• Hardware APIs
• Video acceleration
(OpenCL…)
• Hard disk drives
• PCI bus
• … 6
Какие виды API нас интересуют?
Web service APIs
XML-RPC and JSON-RPC
SOAP – Simple  Object Access Protocol
REST
7
Какие виды API нас интересуют?
Web service APIs
XML-RPC and JSON-RPC
SOAP – Simple  Object Access Protocol
REST
7
Что такое REST?
Representative State Transfer
НЕ протокол. НЕ стандарт. Это архитектурный стиль
8
Принципы REST?
• Клиент-серверная архитектура
• Любые данные являются ресурсом
• Любой ресурс имеет ID
• Ресурсы связаны между собой
• Используются стандартные методы HTTP
• Сервер не хранит состояние
9
Чем REST хорош?
•Он простой!
•Переиспользует существующие стандарты
•REST базируется на HTTP => доступны все плюшки
•Кеширование
•Масштабирование
•Минимум накладных расходов
•Стандартные коды ошибок
•Очень хорошая распространённость (даже IoT)
10
Best-practices
(независимые от технологий)
• SSL везде
• Методы POST, PUT должны возвращать данные
• Фильтрация, сортировка и постраничный вывод
• Поддержка MediaType
• Pretty print & gzip
• Стандартное кеширование ETag & Last-Modified
• Стандартные коды ошибок
• Документация и версионирование
11
Версионирование
• Если вы однажды опубликовали контракт, то
вы обязаны его соблюдать
• Breaking changes можно делать только при
изменении мажорной версии
12
Semantic Versioning
13
МАЖОРНАЯ МИНОРНАЯ ПАТЧ дополнительная
Подходы к версионированию
14
Type Sample Complexity
URL {host}/api/v2/… Minimum
Custom Header api-version:2 Average
Custom Accept Header Accept:application/vnd.trainmodel.v2+json Maximum
Библиотека Climax.Web.Http
[VersionedRoute("v2/values", Version = 2)]
config.ConfigureVersioning(
versioningHeaderName: "version", vesioningMediaTypes: null);
config.ConfigureVersioning(
versioningHeaderName: null,
vesioningMediaTypes: new [] { "application/vnd.model"});
15
Что такое RESTful API?
Это такой сервис, который
удовлетворяет принципам REST
16
Выбираем технологию
WCF Services
– webHttpBinding only
– Поддерживаются только HTTP
GET & POST
+ Разные форматы XML, JSON,
ATOM
Web Api
+ Очень простой
+ Open source
+ Все возможности HTTP
+ Все возможности MVC
+ Легкий
+ Тоже поддерживает кучу
форматов
17
Выбираем хостинг для WebApi
• ASP.NET MVC
• OWIN
•IIS
•Self-hosted
• Azure
18
OWIN
Open Web Interface for .Net
19
Идея OWIN
• Это спецификация (не библиотека и не
платформа)
• Устраняет сильную связанность
веб-приложения с реализацией
сервера
20
Katana – реализация OWIN от Microsoft
21
[assembly: OwinStartup(typeof (Startup))]
namespace RestApiDemo
{
public class Startup
{
public void Configuration(IAppBuilder app)
{
var config = new HttpConfiguration();
config.MapHttpAttributeRoutes();
app.UseWebApi(config);
}
}
}
Проектируем интерфейс
• Все ресурсы в REST существительные (множественное число)
• Корневые сущности API
• GET /positions - Все вакансии
• GET /positions/1 - Информация по вакансии с ID = 1
• GET /competitors - Все соискатели
• Зависимые сущности
• GET /positions/7/interviews – собеседования, назначенные на вакансию с id = 7
22
Простейший контроллер
23
[RoutePrefix("positions")]
public class PositionsController : ApiController
{
[HttpGet]
[Route]
public IEnumerable<PositionModel> GetAll()
{
return testData;
}
PositionModel[] testData = /*initialization here*/
}
Простейший контроллер
24
Зависимый контроллер
25
[RoutePrefix(“positions/{positionId}/interviews")]
public class InterviewsForPositionController : InterviewsController
{
[HttpGet]
[Route]
[EnableQuery]
public IQueryable<InterviewModel> GetAll(int vacancyId)
{
return GetAllInterviews().Where(x => x.VacancyId == vacancyId);
}
}
Базовый CRUD
• POST – создать новую сущность
• POST /positions – JSON описание сущности целиком. Действие добавляет новую
сущность в коллекцию
• Возвращает созданную сущность
• PUT – изменить сущность
• PUT /positions/12 – Изменить сущность с ID = 12.
• Возвращает измененную сущность
• DELETE
• DELETE /positions/12 – Удалить сущность с ID = 12.
26
OData
27
28
[RoutePrefix("positions")]
public class PositionsController : ODataController
{
[HttpGet]
[Route]
[EnableQuery]
public IQueryable<PositionModel> Get()
{
return testData.AsQueryable();
}
PositionModel[] testData = /*initialization here*/
}
OData
29
OData
30
Параметры запросов
31
Query Option Sample
$filter Positions?$filter=Name eq ‘Программист'
Positions?$filter=contains(Name, ‘инженер')
$select Positions?$select=Name, Id
$orderby Positions?$orderby=Name desc
$top Competitors?$top=10
$skip Interviews?$skip=15&$top=15
EnableQuery Аттрибут
• AllowedArithmeticOperators
• AllowedFunctions
• AllowedLogicalOperators
• AllowedOrderByProperties
• AllowedQueryOptions
• EnableConstantParameterization
• EnsureStableOrdering
• HandleNullPropagation
• MaxAnyAllExpressionDepth
• MaxExpansionDepth
• MaxNodeCount
• MaxOrderByNodeCount
• MaxSkip
• MaxTop
• PageSize
32
Операторы OData
33
Функции OData
34
Клиент
ORM
A server library built upon
ODataLib and WebApi
Open Data Protocol -
.NET/Silverlight/WP8.1
Libraries and Frameworks
UI
Odata .NET
OData Web API
35
Клиент
36
Метаданные
37
Т4 шаблон
38
Результат генерации
39
Результат генерации
40
DataContext.MdmDeliveryTypes.Where(x => x.IsShippingInRm).OrderBy(x => x.Name)
DataContext.TradingNetworkSettings.Where(o => o.Id == listDto.Key))
.Expand(o => o.TradingNetwork)
.Expand(o => o.Creator)
.Expand(o => o.Modifier);
DataContext.PlannedScheduleItems
.Where(x => (x.ReturnPlanItem.ReturnPlan.Id == filterData.ReturnPlanId) &&
(filterData.RegionId == null || x.ReturnPlanItemNormalizationKey.SourceShop.Region.Id == filterData.RegionId) &&
(filterData.SourceShopId == null || x.ReturnPlanItemNormalizationKey.SourceShop.Id == filterData.SourceShopId) &&
(filterData.RecipientWarehouseId == null
|| x.ReturnPlanItemNormalizationKey.RecieverStorage.Id == filterData.RecipientWarehouseId) &&
(filterData.NextWarehouseId == null || x.NextWarehouse.Id == filterData.NextWarehouseId) &&
(filterData.DeliveryTypeId == null || x.DeliveryType.Id == filterData.DeliveryTypeId) &&
(filterData.ShopClusterId == null || x.ShopCluster.Id == filterData.ShopClusterId) &&
(filterData.DateFrom == null || x.ReturnDate >= filterData.DateFrom.Value) &&
(filterData.DateTo == null || x.ReturnDate < filterData.DateTo.Value))
41
Клиент
GET /Service/ReturnPlanItemDtos?$filter=
(BeginDate lt ReturnPlan/BeginDate or EndDate gt ReturnPlan/EndDate)
and TradingNetwork/Id eq 19
and ReturnPlanItemNormalizationKey/SourceShop/Code eq 301
and Product/Subcategory/Id eq 66
and BeginDate ge 2015-11-02T00:00:00+03:00
and EndDate lt 2015-11-28T00:00:00+03:00
and EditStatus eq ReturnPlanItemEditStatus'Rms'
and (Status eq PlanItemStatus'New' or PlanItemStatus'IncludedInSchedule')
42
Клиент
<telerik:RadMenu RenderMode="Lightweight" runat="server" ID="RadMenu1">
<WebServiceSettings Path="http://services.odata.org/OData/OData.svc">
<ODataSettings ResponseType="JSONP">
<Entities>
<telerik:ODataEntityType Name="Category"
DataValueField="ID" DataTextField="Name" />
</Entities>
<EntityContainer>
<telerik:ODataEntitySet EntityType="Category" Name="Categories" />
</EntityContainer>
</ODataSettings>
</WebServiceSettings>
</telerik:RadMenu>
43
Клиент Telerik ASP.NET
Проектируем API
44
Проектируем API
REST ≠
CRUD via HTTP
45
Понятия DDD
•Bounded Context
•Aggregates
•Domain Entities
•Values Objects
46
Доменная модель
47
Городская транспортная сеть
Маршрут
Остановочный
пункт
Водитель
Автобус
Доменная модель
48
Городская транспортная сеть
МаршрутОстановка
Остановочный
пункт
ВодительНазначение
Автобус
Доменная модель
49
Городская транспортная сеть
МаршрутОстановка
Остановочный
пункт
ВодительНазначение
Автобус
Автобусный парк
Aggregate Root
Bounded Context
Городской
маршрут
Зачем...
…нужно думать об API?
Чтобы увеличить популярность сервиса
Почему…
…именно REST и чем он хорош?
Это современно и удобно
Как?
Проектируем по DDD
Основываясь на REST
Реализуем с OData
Хостим с помощью OWIN 50
Что читать?
https://github.com/OData
http://www.odata.org/
http://dontpanic.42.nl/2012/04/rest-and-ddd-incompatible.html
http://www.dataart.ru/blog/2016/02/podhody-k-proektirovaniyu-restful-api/
https://msdn.microsoft.com/en-us/magazine/dn451439.aspx
http://martinfowler.com/bliki/CQRS.html
http://www.telerik.com/odata
http://semver.org/
https://github.com/climax-media/climax-web-http
51
Юлия Цисык, CustIS
yulia@tsisyk.com

Mais conteúdo relacionado

Mais procurados

Sql server clr integration
Sql server clr integration Sql server clr integration
Sql server clr integration Alex Tumanoff
 
Реактивный двигатель вашего Android приложения
Реактивный двигатель вашего Android приложенияРеактивный двигатель вашего Android приложения
Реактивный двигатель вашего Android приложенияMatvey Malkov
 
Как сделать ваш JavaScript быстрее / Роман Дворнов (Авито)
Как сделать ваш JavaScript быстрее / Роман Дворнов (Авито)Как сделать ваш JavaScript быстрее / Роман Дворнов (Авито)
Как сделать ваш JavaScript быстрее / Роман Дворнов (Авито)Ontico
 
Автоматизация функционального тестирования REST API
Автоматизация функционального тестирования REST APIАвтоматизация функционального тестирования REST API
Автоматизация функционального тестирования REST APIPavel Asanov
 
Изоморфный JavaScript — будущее уже здесь
Изоморфный JavaScript — будущее уже здесьИзоморфный JavaScript — будущее уже здесь
Изоморфный JavaScript — будущее уже здесьCodeFest
 
Продвинутое использование Celery — Александр Кошелев
Продвинутое использование Celery — Александр КошелевПродвинутое использование Celery — Александр Кошелев
Продвинутое использование Celery — Александр КошелевYandex
 
Пользователь точно оценит! Повышение производительности мобильных приложений ...
Пользователь точно оценит! Повышение производительности мобильных приложений ...Пользователь точно оценит! Повышение производительности мобильных приложений ...
Пользователь точно оценит! Повышение производительности мобильных приложений ...Ontico
 
Быстрое построение backendов c помощью реактивных потоков
Быстрое построение backendов c помощью реактивных потоковБыстрое построение backendов c помощью реактивных потоков
Быстрое построение backendов c помощью реактивных потоковCodeFest
 
Service Discovery. More that it seems
Service Discovery. More that it seemsService Discovery. More that it seems
Service Discovery. More that it seemsAleksandr Tarasov
 
Java 9: what is there beyond modularization
Java 9: what is there beyond modularizationJava 9: what is there beyond modularization
Java 9: what is there beyond modularizationIvan Krylov
 
Silverlight 4, есть ли жизнь на десктопе
Silverlight 4, есть ли жизнь на десктопеSilverlight 4, есть ли жизнь на десктопе
Silverlight 4, есть ли жизнь на десктопеAlex Tumanoff
 
Как мы ускоряли WebGL / Мстислав Живодков (2GIS)
Как мы ускоряли WebGL / Мстислав Живодков (2GIS)Как мы ускоряли WebGL / Мстислав Живодков (2GIS)
Как мы ускоряли WebGL / Мстислав Живодков (2GIS)Ontico
 
How to build solid CI-CD pipeline / Илья Беда (beda.software)
How to build solid CI-CD pipeline / Илья Беда (beda.software)How to build solid CI-CD pipeline / Илья Беда (beda.software)
How to build solid CI-CD pipeline / Илья Беда (beda.software)Ontico
 
Автоматизация UI тестирования под Windows и Windows Phone
Автоматизация UI тестирования под Windows и Windows PhoneАвтоматизация UI тестирования под Windows и Windows Phone
Автоматизация UI тестирования под Windows и Windows PhoneCodeFest
 
"Производительность MySQL: что нового?"
"Производительность MySQL: что нового?""Производительность MySQL: что нового?"
"Производительность MySQL: что нового?"Badoo Development
 
What to expect from Java 9
What to expect from Java 9What to expect from Java 9
What to expect from Java 9JavaDayUA
 
Easy authcache 2 кеширование для pro родионов игорь
Easy authcache 2   кеширование для pro родионов игорьEasy authcache 2   кеширование для pro родионов игорь
Easy authcache 2 кеширование для pro родионов игорьdrupalconf
 
#11 "Отзывчивый UI без блокировки Event Loop" Денис Речкунов
#11 "Отзывчивый UI без блокировки Event Loop" Денис Речкунов#11 "Отзывчивый UI без блокировки Event Loop" Денис Речкунов
#11 "Отзывчивый UI без блокировки Event Loop" Денис РечкуновJSib
 
Чистая архитектура с VIPER / Сергей Крапивенский (Rambler&Co)
Чистая архитектура с VIPER / Сергей Крапивенский (Rambler&Co)Чистая архитектура с VIPER / Сергей Крапивенский (Rambler&Co)
Чистая архитектура с VIPER / Сергей Крапивенский (Rambler&Co)Ontico
 
"Посмотрим на Акку-Джаву" Дмитрий Мантула
"Посмотрим на Акку-Джаву" Дмитрий Мантула"Посмотрим на Акку-Джаву" Дмитрий Мантула
"Посмотрим на Акку-Джаву" Дмитрий МантулаFwdays
 

Mais procurados (20)

Sql server clr integration
Sql server clr integration Sql server clr integration
Sql server clr integration
 
Реактивный двигатель вашего Android приложения
Реактивный двигатель вашего Android приложенияРеактивный двигатель вашего Android приложения
Реактивный двигатель вашего Android приложения
 
Как сделать ваш JavaScript быстрее / Роман Дворнов (Авито)
Как сделать ваш JavaScript быстрее / Роман Дворнов (Авито)Как сделать ваш JavaScript быстрее / Роман Дворнов (Авито)
Как сделать ваш JavaScript быстрее / Роман Дворнов (Авито)
 
Автоматизация функционального тестирования REST API
Автоматизация функционального тестирования REST APIАвтоматизация функционального тестирования REST API
Автоматизация функционального тестирования REST API
 
Изоморфный JavaScript — будущее уже здесь
Изоморфный JavaScript — будущее уже здесьИзоморфный JavaScript — будущее уже здесь
Изоморфный JavaScript — будущее уже здесь
 
Продвинутое использование Celery — Александр Кошелев
Продвинутое использование Celery — Александр КошелевПродвинутое использование Celery — Александр Кошелев
Продвинутое использование Celery — Александр Кошелев
 
Пользователь точно оценит! Повышение производительности мобильных приложений ...
Пользователь точно оценит! Повышение производительности мобильных приложений ...Пользователь точно оценит! Повышение производительности мобильных приложений ...
Пользователь точно оценит! Повышение производительности мобильных приложений ...
 
Быстрое построение backendов c помощью реактивных потоков
Быстрое построение backendов c помощью реактивных потоковБыстрое построение backendов c помощью реактивных потоков
Быстрое построение backendов c помощью реактивных потоков
 
Service Discovery. More that it seems
Service Discovery. More that it seemsService Discovery. More that it seems
Service Discovery. More that it seems
 
Java 9: what is there beyond modularization
Java 9: what is there beyond modularizationJava 9: what is there beyond modularization
Java 9: what is there beyond modularization
 
Silverlight 4, есть ли жизнь на десктопе
Silverlight 4, есть ли жизнь на десктопеSilverlight 4, есть ли жизнь на десктопе
Silverlight 4, есть ли жизнь на десктопе
 
Как мы ускоряли WebGL / Мстислав Живодков (2GIS)
Как мы ускоряли WebGL / Мстислав Живодков (2GIS)Как мы ускоряли WebGL / Мстислав Живодков (2GIS)
Как мы ускоряли WebGL / Мстислав Живодков (2GIS)
 
How to build solid CI-CD pipeline / Илья Беда (beda.software)
How to build solid CI-CD pipeline / Илья Беда (beda.software)How to build solid CI-CD pipeline / Илья Беда (beda.software)
How to build solid CI-CD pipeline / Илья Беда (beda.software)
 
Автоматизация UI тестирования под Windows и Windows Phone
Автоматизация UI тестирования под Windows и Windows PhoneАвтоматизация UI тестирования под Windows и Windows Phone
Автоматизация UI тестирования под Windows и Windows Phone
 
"Производительность MySQL: что нового?"
"Производительность MySQL: что нового?""Производительность MySQL: что нового?"
"Производительность MySQL: что нового?"
 
What to expect from Java 9
What to expect from Java 9What to expect from Java 9
What to expect from Java 9
 
Easy authcache 2 кеширование для pro родионов игорь
Easy authcache 2   кеширование для pro родионов игорьEasy authcache 2   кеширование для pro родионов игорь
Easy authcache 2 кеширование для pro родионов игорь
 
#11 "Отзывчивый UI без блокировки Event Loop" Денис Речкунов
#11 "Отзывчивый UI без блокировки Event Loop" Денис Речкунов#11 "Отзывчивый UI без блокировки Event Loop" Денис Речкунов
#11 "Отзывчивый UI без блокировки Event Loop" Денис Речкунов
 
Чистая архитектура с VIPER / Сергей Крапивенский (Rambler&Co)
Чистая архитектура с VIPER / Сергей Крапивенский (Rambler&Co)Чистая архитектура с VIPER / Сергей Крапивенский (Rambler&Co)
Чистая архитектура с VIPER / Сергей Крапивенский (Rambler&Co)
 
"Посмотрим на Акку-Джаву" Дмитрий Мантула
"Посмотрим на Акку-Джаву" Дмитрий Мантула"Посмотрим на Акку-Джаву" Дмитрий Мантула
"Посмотрим на Акку-Джаву" Дмитрий Мантула
 

Destaque

Вячеслав Михайлов «Как сделать Single Sign-On в веб-приложении в 10 строк кода»
Вячеслав Михайлов «Как сделать Single Sign-On в веб-приложении в 10 строк кода»Вячеслав Михайлов «Как сделать Single Sign-On в веб-приложении в 10 строк кода»
Вячеслав Михайлов «Как сделать Single Sign-On в веб-приложении в 10 строк кода»Yulia Tsisyk
 
Илья Фофанов "Обработка ошибок в C#"
Илья Фофанов "Обработка ошибок в C#"Илья Фофанов "Обработка ошибок в C#"
Илья Фофанов "Обработка ошибок в C#"Yulia Tsisyk
 
Владимир Кошелев «Автоматический поиск ошибок»
Владимир Кошелев «Автоматический поиск ошибок»Владимир Кошелев «Автоматический поиск ошибок»
Владимир Кошелев «Автоматический поиск ошибок»Yulia Tsisyk
 
"API для людей: как создать API, которым по-настоящему пользуются" — Евгений ...
"API для людей: как создать API, которым по-настоящему пользуются" — Евгений ..."API для людей: как создать API, которым по-настоящему пользуются" — Евгений ...
"API для людей: как создать API, которым по-настоящему пользуются" — Евгений ...Yandex
 
Рахманов Александр "Что полезного в разборе дампов для .NET-разработчиков?"
Рахманов Александр "Что полезного в разборе дампов для .NET-разработчиков?"Рахманов Александр "Что полезного в разборе дампов для .NET-разработчиков?"
Рахманов Александр "Что полезного в разборе дампов для .NET-разработчиков?"Yulia Tsisyk
 
Сенцов Сергей "Приемы оптимизаций Desktop приложений"
Сенцов Сергей "Приемы оптимизаций Desktop приложений"Сенцов Сергей "Приемы оптимизаций Desktop приложений"
Сенцов Сергей "Приемы оптимизаций Desktop приложений"Yulia Tsisyk
 
Яков Повар "Системы обмена сообщениями на примере MassTransit"
Яков Повар "Системы обмена сообщениями на примере MassTransit"Яков Повар "Системы обмена сообщениями на примере MassTransit"
Яков Повар "Системы обмена сообщениями на примере MassTransit"Yulia Tsisyk
 
Adam Sitnik "State of the .NET Performance"
Adam Sitnik "State of the .NET Performance"Adam Sitnik "State of the .NET Performance"
Adam Sitnik "State of the .NET Performance"Yulia Tsisyk
 
Кирилл Маурин «Проектирование и разработка модульных приложений»
Кирилл Маурин «Проектирование и разработка модульных приложений» Кирилл Маурин «Проектирование и разработка модульных приложений»
Кирилл Маурин «Проектирование и разработка модульных приложений» Yulia Tsisyk
 
"Безопасность микросервисных приложений"
"Безопасность микросервисных приложений""Безопасность микросервисных приложений"
"Безопасность микросервисных приложений"DataArt
 

Destaque (10)

Вячеслав Михайлов «Как сделать Single Sign-On в веб-приложении в 10 строк кода»
Вячеслав Михайлов «Как сделать Single Sign-On в веб-приложении в 10 строк кода»Вячеслав Михайлов «Как сделать Single Sign-On в веб-приложении в 10 строк кода»
Вячеслав Михайлов «Как сделать Single Sign-On в веб-приложении в 10 строк кода»
 
Илья Фофанов "Обработка ошибок в C#"
Илья Фофанов "Обработка ошибок в C#"Илья Фофанов "Обработка ошибок в C#"
Илья Фофанов "Обработка ошибок в C#"
 
Владимир Кошелев «Автоматический поиск ошибок»
Владимир Кошелев «Автоматический поиск ошибок»Владимир Кошелев «Автоматический поиск ошибок»
Владимир Кошелев «Автоматический поиск ошибок»
 
"API для людей: как создать API, которым по-настоящему пользуются" — Евгений ...
"API для людей: как создать API, которым по-настоящему пользуются" — Евгений ..."API для людей: как создать API, которым по-настоящему пользуются" — Евгений ...
"API для людей: как создать API, которым по-настоящему пользуются" — Евгений ...
 
Рахманов Александр "Что полезного в разборе дампов для .NET-разработчиков?"
Рахманов Александр "Что полезного в разборе дампов для .NET-разработчиков?"Рахманов Александр "Что полезного в разборе дампов для .NET-разработчиков?"
Рахманов Александр "Что полезного в разборе дампов для .NET-разработчиков?"
 
Сенцов Сергей "Приемы оптимизаций Desktop приложений"
Сенцов Сергей "Приемы оптимизаций Desktop приложений"Сенцов Сергей "Приемы оптимизаций Desktop приложений"
Сенцов Сергей "Приемы оптимизаций Desktop приложений"
 
Яков Повар "Системы обмена сообщениями на примере MassTransit"
Яков Повар "Системы обмена сообщениями на примере MassTransit"Яков Повар "Системы обмена сообщениями на примере MassTransit"
Яков Повар "Системы обмена сообщениями на примере MassTransit"
 
Adam Sitnik "State of the .NET Performance"
Adam Sitnik "State of the .NET Performance"Adam Sitnik "State of the .NET Performance"
Adam Sitnik "State of the .NET Performance"
 
Кирилл Маурин «Проектирование и разработка модульных приложений»
Кирилл Маурин «Проектирование и разработка модульных приложений» Кирилл Маурин «Проектирование и разработка модульных приложений»
Кирилл Маурин «Проектирование и разработка модульных приложений»
 
"Безопасность микросервисных приложений"
"Безопасность микросервисных приложений""Безопасность микросервисных приложений"
"Безопасность микросервисных приложений"
 

Semelhante a Юлия Цисык «RESTFul API в вашем.NET приложении: как, зачем и почему?»

Архитектура кода нового 2ГИС Web API или куда мы дели MVC
Архитектура кода нового 2ГИС Web API или куда мы дели MVCАрхитектура кода нового 2ГИС Web API или куда мы дели MVC
Архитектура кода нового 2ГИС Web API или куда мы дели MVCDevDay
 
Разработка мобильного и веб интерфейса для Caché
Разработка мобильного и веб интерфейса для CachéРазработка мобильного и веб интерфейса для Caché
Разработка мобильного и веб интерфейса для CachéInterSystems CEE
 
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
 
Анна Якубенко, Татьяна Лебедева - SAP ERP в качестве backend для HTML5 прилож...
Анна Якубенко, Татьяна Лебедева - SAP ERP в качестве backend для HTML5 прилож...Анна Якубенко, Татьяна Лебедева - SAP ERP в качестве backend для HTML5 прилож...
Анна Якубенко, Татьяна Лебедева - SAP ERP в качестве backend для HTML5 прилож...Ilya Kaznacheev
 
Дизайн REST API для высокопроизводительных систем / Александр Лебедев (Новые ...
Дизайн REST API для высокопроизводительных систем / Александр Лебедев (Новые ...Дизайн REST API для высокопроизводительных систем / Александр Лебедев (Новые ...
Дизайн REST API для высокопроизводительных систем / Александр Лебедев (Новые ...Ontico
 
Реализация тестового фреймворка на основе OPEN-SOURCE инструментов
Реализация тестового фреймворка на основе OPEN-SOURCE инструментовРеализация тестового фреймворка на основе OPEN-SOURCE инструментов
Реализация тестового фреймворка на основе OPEN-SOURCE инструментовSQALab
 
Open Source Testing Framework: real project example and best practices
Open Source Testing Framework: real project example and best practicesOpen Source Testing Framework: real project example and best practices
Open Source Testing Framework: real project example and best practicesAliaksandr Ikhelis
 
Корпоративное приложение на Rails
Корпоративное приложение на RailsКорпоративное приложение на Rails
Корпоративное приложение на RailsAndrei Kaleshka
 
Особенности разработки API / Всеволод Шмыров (Яндекс)
Особенности разработки API / Всеволод Шмыров (Яндекс)Особенности разработки API / Всеволод Шмыров (Яндекс)
Особенности разработки API / Всеволод Шмыров (Яндекс)Ontico
 
Программируемость корпоративной сети с Cisco APIC-EM
Программируемость корпоративной сети с Cisco APIC-EMПрограммируемость корпоративной сети с Cisco APIC-EM
Программируемость корпоративной сети с Cisco APIC-EMCisco Russia
 
Владимир Никонов "Вызовы при разработке enterprise продукта"
Владимир Никонов "Вызовы при разработке enterprise продукта"Владимир Никонов "Вызовы при разработке enterprise продукта"
Владимир Никонов "Вызовы при разработке enterprise продукта"Fwdays
 
Референсная архитектура приложения на ASP.NET MVC
Референсная архитектура приложения на ASP.NET MVCРеференсная архитектура приложения на ASP.NET MVC
Референсная архитектура приложения на ASP.NET MVCAndrew Mayorov
 
RAD на Java: как устроена CUBA Platform?
RAD на Java: как устроена  CUBA Platform?RAD на Java: как устроена  CUBA Platform?
RAD на Java: как устроена CUBA Platform?Aleksey Stukalov
 
Система обработки бизнес-логики server-side приложения на Groovy
Система обработки бизнес-логики server-side приложения на GroovyСистема обработки бизнес-логики server-side приложения на Groovy
Система обработки бизнес-логики server-side приложения на GroovyRegn
 
Превышаем скоростные лимиты с Angular 2 / Алексей Охрименко (IPONWEB)
Превышаем скоростные лимиты с Angular 2 / Алексей Охрименко (IPONWEB)Превышаем скоростные лимиты с Angular 2 / Алексей Охрименко (IPONWEB)
Превышаем скоростные лимиты с Angular 2 / Алексей Охрименко (IPONWEB)Ontico
 
Тестирование Web API
Тестирование Web APIТестирование Web API
Тестирование Web APIByndyusoft
 
Опыт разработки сложных клиент-серверных приложений на TypeScript и ASP.NET
Опыт разработки сложных клиент-серверных приложений на TypeScript и ASP.NETОпыт разработки сложных клиент-серверных приложений на TypeScript и ASP.NET
Опыт разработки сложных клиент-серверных приложений на TypeScript и ASP.NETGoSharp
 
ITmozg, Даниил Павлючков
ITmozg, Даниил ПавлючковITmozg, Даниил Павлючков
ITmozg, Даниил ПавлючковEYevseyeva
 
09 - Web-технологии. MVC фреймворки
09 - Web-технологии. MVC фреймворки09 - Web-технологии. MVC фреймворки
09 - Web-технологии. MVC фреймворкиRoman Brovko
 
Phalcon - самый быстрый PHP Framework
Phalcon - самый быстрый PHP FrameworkPhalcon - самый быстрый PHP Framework
Phalcon - самый быстрый PHP FrameworkOleksandr Torosh
 

Semelhante a Юлия Цисык «RESTFul API в вашем.NET приложении: как, зачем и почему?» (20)

Архитектура кода нового 2ГИС Web API или куда мы дели MVC
Архитектура кода нового 2ГИС Web API или куда мы дели MVCАрхитектура кода нового 2ГИС Web API или куда мы дели MVC
Архитектура кода нового 2ГИС Web API или куда мы дели MVC
 
Разработка мобильного и веб интерфейса для Caché
Разработка мобильного и веб интерфейса для CachéРазработка мобильного и веб интерфейса для Caché
Разработка мобильного и веб интерфейса для Caché
 
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
 
Анна Якубенко, Татьяна Лебедева - SAP ERP в качестве backend для HTML5 прилож...
Анна Якубенко, Татьяна Лебедева - SAP ERP в качестве backend для HTML5 прилож...Анна Якубенко, Татьяна Лебедева - SAP ERP в качестве backend для HTML5 прилож...
Анна Якубенко, Татьяна Лебедева - SAP ERP в качестве backend для HTML5 прилож...
 
Дизайн REST API для высокопроизводительных систем / Александр Лебедев (Новые ...
Дизайн REST API для высокопроизводительных систем / Александр Лебедев (Новые ...Дизайн REST API для высокопроизводительных систем / Александр Лебедев (Новые ...
Дизайн REST API для высокопроизводительных систем / Александр Лебедев (Новые ...
 
Реализация тестового фреймворка на основе OPEN-SOURCE инструментов
Реализация тестового фреймворка на основе OPEN-SOURCE инструментовРеализация тестового фреймворка на основе OPEN-SOURCE инструментов
Реализация тестового фреймворка на основе OPEN-SOURCE инструментов
 
Open Source Testing Framework: real project example and best practices
Open Source Testing Framework: real project example and best practicesOpen Source Testing Framework: real project example and best practices
Open Source Testing Framework: real project example and best practices
 
Корпоративное приложение на Rails
Корпоративное приложение на RailsКорпоративное приложение на Rails
Корпоративное приложение на Rails
 
Особенности разработки API / Всеволод Шмыров (Яндекс)
Особенности разработки API / Всеволод Шмыров (Яндекс)Особенности разработки API / Всеволод Шмыров (Яндекс)
Особенности разработки API / Всеволод Шмыров (Яндекс)
 
Программируемость корпоративной сети с Cisco APIC-EM
Программируемость корпоративной сети с Cisco APIC-EMПрограммируемость корпоративной сети с Cisco APIC-EM
Программируемость корпоративной сети с Cisco APIC-EM
 
Владимир Никонов "Вызовы при разработке enterprise продукта"
Владимир Никонов "Вызовы при разработке enterprise продукта"Владимир Никонов "Вызовы при разработке enterprise продукта"
Владимир Никонов "Вызовы при разработке enterprise продукта"
 
Референсная архитектура приложения на ASP.NET MVC
Референсная архитектура приложения на ASP.NET MVCРеференсная архитектура приложения на ASP.NET MVC
Референсная архитектура приложения на ASP.NET MVC
 
RAD на Java: как устроена CUBA Platform?
RAD на Java: как устроена  CUBA Platform?RAD на Java: как устроена  CUBA Platform?
RAD на Java: как устроена CUBA Platform?
 
Система обработки бизнес-логики server-side приложения на Groovy
Система обработки бизнес-логики server-side приложения на GroovyСистема обработки бизнес-логики server-side приложения на Groovy
Система обработки бизнес-логики server-side приложения на Groovy
 
Превышаем скоростные лимиты с Angular 2 / Алексей Охрименко (IPONWEB)
Превышаем скоростные лимиты с Angular 2 / Алексей Охрименко (IPONWEB)Превышаем скоростные лимиты с Angular 2 / Алексей Охрименко (IPONWEB)
Превышаем скоростные лимиты с Angular 2 / Алексей Охрименко (IPONWEB)
 
Тестирование Web API
Тестирование Web APIТестирование Web API
Тестирование Web API
 
Опыт разработки сложных клиент-серверных приложений на TypeScript и ASP.NET
Опыт разработки сложных клиент-серверных приложений на TypeScript и ASP.NETОпыт разработки сложных клиент-серверных приложений на TypeScript и ASP.NET
Опыт разработки сложных клиент-серверных приложений на TypeScript и ASP.NET
 
ITmozg, Даниил Павлючков
ITmozg, Даниил ПавлючковITmozg, Даниил Павлючков
ITmozg, Даниил Павлючков
 
09 - Web-технологии. MVC фреймворки
09 - Web-технологии. MVC фреймворки09 - Web-технологии. MVC фреймворки
09 - Web-технологии. MVC фреймворки
 
Phalcon - самый быстрый PHP Framework
Phalcon - самый быстрый PHP FrameworkPhalcon - самый быстрый PHP Framework
Phalcon - самый быстрый PHP Framework
 

Юлия Цисык «RESTFul API в вашем.NET приложении: как, зачем и почему?»