ADO.NET Data Services (codename Astoria) Сергей Звездин sergey.zwezdin@gmail.com http://blogs.gotdotnet.ru/personal/sergun/ © 2007 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
Silverlight Applications Данные в Web HTML + Javascript DLL + XAML Mashup UI Data (XML, etc) Data (XML, etc) Data (XML, etc) Data Feeds AJAX Applications Silverlight Applications Mashups & Rich Clients Online Services
DataAcces: Проблемы? Выразительный, легкий в обслуживании контракт сервиса Эффективное использование сети, минимизация сетевых задержек, … Безопасность данных Конкурирующие операции «А что если мои данные…» Доступны только через хранимые процедуры Хранятся не в базе данных
SOAP/WS-* vs. REST Два подхода к построению веб-сервисов Represintational State Transfer (REST) Взаимодополняющие подходы SOAP/WS-* - ориентация на операции REST – ориентация на данные
Доступ через SOAP/WS-* Client SOAP Service POST /ServiceAccess/MyService1.svc Host: www.servicehost.com SOAPAction: GetBalance … <soap:Envelope xmlns:soap= … <soap:Body> <GetBalance xmlns= … <Account>2</Account> </GetBalance> </soap:Body> </soap:Envelope> Data
Доступ через REST Data REST Client REST Service GET www.servicehost.com/MyService1.svc Data
SOAP/WS-* vs. REST SOAP/WS-* REST Protocol for invoking operations HTTP Transport protocol HTTP, TCP, … Language for describing interfaces WSDL - Conveying security tokens WS-Security HTTP, SSL Acquiring security tokens WS-Trust Establishing a security context WS-SecureConversation SSL
ADO.NET Data Services – платформа для построения сервисов в стиле REST
RESTful интерфейс HTTP Унифицированный синтаксис URL Данные представляются как HTTP-ресурсы; HTTP-методы управляют данными Кэширование, прокси, аутентификация, … Унифицированный синтаксис URL Каждая часть информации адресуется Предсказуемый и гибкий синтаксис URL Различные представления Content-Type Atom*, JSON, Plain XML
Семантика HTTP-операций HTTP verbs GET – получить ресурс POST – создать ресурс PUT – изменить ресурс DELETE – удалить ресурс
Адресация Адресация наборов данных и одиночных сущностей Опции представления Entity-set /Bookmarks Single entity /Bookmarks(123) Member access /Bookmarks(123)/Name Link traversal /Bookmarks(123)/Tags Deep access /Bookmarks(123)/Tags('abc')/Name Raw value access /Bookmarks(123)/Names/$value Sorting /Bookmarks?$orderby=Name Filtering /Bookmarks?$filter=Created gt '2007-05-07' Paging /Bookmarks?$top=10&$skip=30 Inline expansion /Bookmarks?$expand=Tags
Источники данных LINQ to SQL ADO.NET Entity Framework Custom provider IQueryable IUpdatable Данные HTTP ADO.NET Data Service LINQ to SQL ADO.NET Entity Framework Custom provider Источники данных: DB, Web Service, feed, file, ...
ADO.NET Data Services overview Демонстрация ADO.NET Data Services overview
RESTful интерфейс Сервисные операции Пользовательские точки входа: http://..../MyService1.svc?Name=‘Patrick’ Отложенная загрузка связанных сущностей Конструкция $expand помещает в граф данных необходимый ресурс в рамках одного запроса Метод LoadProperty позволяет загрузить необходимую сущность после получения результатов запроса Фильтрация и разбиение на страницы Передача только необходимых данных (обработка данных на стороне сервера) Batching Передача операций create/update/delete на сервис в пакетном режиме и поддержка семантики «все или ничего»
Контроль доступа Видимость Аутентификация Перехватчики (interceptors) Управление видимостью на уровне контейнера объектов Опции Read, Query, Write Аутентификация Интеграция с hosting-средой ASP.NET, WCF, Live ID или пользовательские схемы аутентификации Перехватчики (interceptors) Выполняются перед GET/PUT/POST/DELETE Включают валидацию и пользовательские политики безопасности на уровне строк данных
Демонстрация Data security
Конкурентный доступ Optimistic concurrency GET /Customers(1) Optimistic concurrency Интеграция с существующей HTTP инфраструктурой 200, ETag:xx PUT/Customers(1) If-Match: xx 201, ETag:xx 412, ETag:xx OR
Что дальше… Клиенты не всегда подключены к серверу… Задача построения инфраструктуры offline-клиента Сохранение данных сервиса локально (SQL Server Compact) Синхронизация данных с сервисом при подключении к сервису Прозрачность с точки зрения построения клиента «Astoria Offline»
Ресурсы http://astoria.mslivelabs.com/ http://blogs.msdn.com/astoriateam http://forums.microsoft.com/MSDN/ShowForum.aspx?ForumID=1430&SiteID=1
9/18/2018 6:24 AM © 2007 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION. © 2007 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.