visual studio 2008 - развитие технологий доступа к данным на...

53

Upload: rainer

Post on 13-Feb-2016

68 views

Category:

Documents


2 download

DESCRIPTION

Visual Studio 2008 - развитие технологий доступа к данным на платформе Microsoft.NET. Роман Здебский Эксперт по технологиям разработки ПО Департамент стратегических технологий Microsoft [email protected] http://blogs.msdn.com/roman. LINQ ADO.NET Entity Framework - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Visual Studio  2008 - развитие технологий доступа к данным на платформе  Microsoft.NET
Page 2: Visual Studio  2008 - развитие технологий доступа к данным на платформе  Microsoft.NET

Visual Studio 2008 - развитие технологий доступа к данным на платформе Microsoft.NETРоман ЗдебскийЭксперт по технологиям разработки ПОДепартамент стратегических технологий[email protected]://blogs.msdn.com/roman

Page 3: Visual Studio  2008 - развитие технологий доступа к данным на платформе  Microsoft.NET

СодержаниеLINQADO.NET Entity FrameworkADO.NET Data Services Codename ‘Astoria’

Sync FrameworkОбщая картина подхода Microsoft к технологиям доступа к даннымДемонстрации, демонстрации и еще раз демонстрации

Доступ к данным

Page 4: Visual Studio  2008 - развитие технологий доступа к данным на платформе  Microsoft.NET

Краткая ретроспектива

ODBC (1.0 –1992) – низкоуровневый APIOLE DB – COM APIADO – объектная модель - Recordset ADO.NET – объектная модель .NET Dataset

MDAC (Windows DAC) -1996

Microsoft Jet Database EngineDB-LibraryData Access Objects (DAO)Remote Data Objects (RDO)

Page 5: Visual Studio  2008 - развитие технологий доступа к данным на платформе  Microsoft.NET

Доступ к данным

SqlConnection nwindConn = new SqlConnection("Data Source=localhost;Integrated Security=SSPI;Initial Catalog=northwind");

SqlCommand catCMD = nwindConn.CreateCommand();catCMD.CommandText = "SELECT CategoryID,

CategoryName FROM Categories WHERE CategoryName LIKE ‘B%’ ORDER BY 1“; nwindConn.Open(); SqlDataReader myReader = catCMD.ExecuteReader(); while (myReader.Read()) { Console.WriteLine("\t{0}\t{1}", myReader.GetInt32(0), myReader.GetString(1));

} myReader.Close(); nwindConn.Close();

DataSet DS=new DataSet();XQueryNavigatorCollection oXQ = new XQueryNavigatorCollection();string strXML = "";string fileName1="c:\\Test\\T1.xml";string alias1 = "MyDataTest.xml";oXQ.AddNavigator( fileName1, alias1 );string strQuery = "<NewDataSet> { " +" let $bb := document(\"MyDataTest.xml\")/*/* " +" let $cc := document(\"MyDatattt.xml\")/*/* " +" for $c in $cc " +" for $b in $bb " +" where $c/kod = $b/kod " +" return <Table> { $b/nazv,$b/dat,$c/naim } </Table> " +" }</NewDataSet> “ ;XQueryExpression xExpression = new XQueryExpression(strQuery);strXML = xExpression.Execute(oXQ).ToXml();StringReader strReader = new StringReader(strXML);XmlTextReader reader = new XmlTextReader(strReader);DS.ReadXml(reader);DataGrid1.DataSource = DS.Tables[0];DataGrid1.DataBind();

Dim xmldoc As New System.Xml.XPath.XPathDocument("c:\books.xml") Dim nav As System.Xml.XPath.XPathNavigator = xmldoc.CreateNavigator()Dim expr As System.Xml.XPath.XPathExpression = nav.Compile( "//Publisher[. = 'MSPress']/parent::node()/Title" )

Page 6: Visual Studio  2008 - развитие технологий доступа к данным на платформе  Microsoft.NET

Типовые уровни при работе с данными

КонцептуальныйБизнес сущности и логикаОбъекты и объектные коллекции

ЛогическийРеляционное представлениеТаблицы, отношенияjunction tables

Физическийфизическое хранение и манипулированиестраницы, экстенты, индексы ограничения (constraints) …

Page 7: Visual Studio  2008 - развитие технологий доступа к данным на платформе  Microsoft.NET

Сложности в работе с даннымиНетипизированные острова

разные для каждого источникаспецифические знания для каждого источникаотсутствие проверок на этапе компиляциисложность в поддержке …… и даже нет IntelliSence

Проблема:Data != Objects

Dataset – реляционное представление в объектном видеСкрытые знания о структуре хранения и объектно–реляционном маппинге (ORM) в виде строкData Access Layer - спасение?

Page 8: Visual Studio  2008 - развитие технологий доступа к данным на платформе  Microsoft.NET

Entity Framework

LINQ

Решение – основные идеиТипизированные запросы Типизированные результаты

Объектное представление схемы храненияОбщее решение для целого ряда продуктовИспользование преимуществ ADO.NET

Создание концептуальной объектной моделиЯвное декларативное представление схемы объектно–реляционного маппинга (ORM) между концептуальной моделью и моделью хранения

Page 9: Visual Studio  2008 - развитие технологий доступа к данным на платформе  Microsoft.NET

LINQ

Подробный вебкаст по основным возможностям LINQ в Visual Studio 2008 -Интегрированные в язык запросы (LINQ) в Microsoft Visual Studio 2008 http://platforma2008.ru/Materials.aspx?EventID=55 Достаточно просто зарегистрироваться на сайте, промокода не нужно.Секция – Средства разработки (DT).

http://www.platforma2008.ru

Page 10: Visual Studio  2008 - развитие технологий доступа к данным на платформе  Microsoft.NET

Language Integrated Query

Единообразные типизированные запросы к любому источнику данных

Методы расширения интерфейса IEnumerable (Select, OrderBy, GroupBy, Join, Where)Возвращаемый результат как объектная коллекция (IEnumerable<T>)

Intellisence, проверка на этапе компиляцииСпециальный синтаксис выражений запросов

Page 11: Visual Studio  2008 - развитие технологий доступа к данным на платформе  Microsoft.NET

C# 3.0

var contacts = from c in customers where c.State == "WA" select new { c.Name, c.Phone };

var contacts = customers .Where(c => c.State == "WA") .Select(c => new { c.Name, c.Phone });

Extension methods

Lambda expressions

Query expressions

Object initializersAnonymous

types

Local variable type inference

Page 12: Visual Studio  2008 - развитие технологий доступа к данным на платформе  Microsoft.NET

VB 9

Dim contacts = From c In customers _ Where c.State = "WA“ _ Select c.Name, c.Phone

Dim contacts = _ customers _ .Where(Function (c) c.State = "WA")_ .Select(Function(c) New With { c.Name, c.Phone })

Extension methods

Lambda expressions

Query expressions

Object initializers

Anonymous types

Local variable type inference

Page 13: Visual Studio  2008 - развитие технологий доступа к данным на платформе  Microsoft.NET

Проект LINQC# 3.0 VB 9.0 Другие

.NET Language Integrated Query

LINQ toDataSet

s

LINQ toEntities

LINQ toObjects

Объекты

LINQ toXML

<book> <title/>

<author/> <year/> <price/>

</book>

XML

Реляционные

источники

LINQ toSQL

Page 14: Visual Studio  2008 - развитие технологий доступа к данным на платформе  Microsoft.NET

LINQ

Краткий обзор

Демонстрация

Page 15: Visual Studio  2008 - развитие технологий доступа к данным на платформе  Microsoft.NET

LINQ текущий статус

Вышел (RTM) в ноябре 2007 года вместе с Visual Studio 2008 и .NET Framework 3.5Поддерживает модель провайдеров, существуют реализации:

LINQ to NHibernateLINQ to AmazonSharePoint, ….

Развивается в направлении параллелизма (manycore) –

PLINQ

Page 16: Visual Studio  2008 - развитие технологий доступа к данным на платформе  Microsoft.NET

Entity Framework

LINQ

Решение – основные идеиТипизированные запросы Типизированные результаты

Объектное представление схемы храненияОбщее решение для целого ряда продуктовИспользование преимуществ ADO.NET

Создание концептуальной объектной моделиЯвное декларативное представление схемы объектно–реляционного маппинга (ORM) между концептуальной моделью и моделью хранения

Page 17: Visual Studio  2008 - развитие технологий доступа к данным на платформе  Microsoft.NET

Entity Framework

Инфраструктура формирования концептуального объектного представления данных с помощью сущностей (Entities)Реализация классических задач ORMАбстрагирование от схемы храненияГибкий маппинг

Page 18: Visual Studio  2008 - развитие технологий доступа к данным на платформе  Microsoft.NET

Архитектура Entity Framework

Page 19: Visual Studio  2008 - развитие технологий доступа к данным на платформе  Microsoft.NET

Гибкий маппингТаблица на иерархию

Page 20: Visual Studio  2008 - развитие технологий доступа к данным на платформе  Microsoft.NET

Гибкий маппингТаблица на тип

Page 21: Visual Studio  2008 - развитие технологий доступа к данным на платформе  Microsoft.NET

Гибкий маппингТаблица на класс

Page 22: Visual Studio  2008 - развитие технологий доступа к данным на платформе  Microsoft.NET

Гибкий маппингРазделение сущности

Page 23: Visual Studio  2008 - развитие технологий доступа к данным на платформе  Microsoft.NET

Гибкий маппингХранимые процедуры

Page 24: Visual Studio  2008 - развитие технологий доступа к данным на платформе  Microsoft.NET

Гибкий маппингХранимые процедуры

Page 25: Visual Studio  2008 - развитие технологий доступа к данным на платформе  Microsoft.NET

Гибкий маппингСоздание представлений (QueryView)

Page 26: Visual Studio  2008 - развитие технологий доступа к данным на платформе  Microsoft.NET

Гибкий маппингСоздание представлений (Defining Query)

Page 27: Visual Studio  2008 - развитие технологий доступа к данным на платформе  Microsoft.NET

ADO.NET Entity Framework

Основные возможности

Демонстрация

Page 28: Visual Studio  2008 - развитие технологий доступа к данным на платформе  Microsoft.NET

Entity Framework – текущий статус

Доступен в Beta 3Релиз (RTM) ожидается во второй половине 2008

Провайдеры третьих производителей для различных баз данных

В течение 3 месяцев после выхода (RTM)

Oracle, IBM DB2, MySQL, PostgreSQL, Informix, Ingres, Sybase, SQLite, SQL Anywhere, Progress …

В течение 2008 годаFirebird

Page 29: Visual Studio  2008 - развитие технологий доступа к данным на платформе  Microsoft.NET

Роль Entity FrameworkЕдиный движок концептуального представления и ORM для ряда ключевых продуктов Microsoft

Page 30: Visual Studio  2008 - развитие технологий доступа к данным на платформе  Microsoft.NET

Сравнивая LINQ и Entity FrameworkLINQЕдинообразные запросы

Единообразные типизированные запросы к любому источникуТипизированные результаты

LINQ to SQL -Типизированное представление логической схемы данных 1:1 ORM LINQ to SQL – возможности переименований объектов данных и поддержка TPH

Entity FrameworkГибкий маппинг

Создание концептуального объектного уровня, абстрагированного от логики хранения

Типизированное представление концептуальной схемы с гибким маппингом – полноценный ORM

Основное назначение

Возможности маппинга

Page 31: Visual Studio  2008 - развитие технологий доступа к данным на платформе  Microsoft.NET

LINQ + Entity FrameworkC# 3.0 VB 9.0 Другие

.NET Language Integrated Query

LINQ toDataSets

LINQ toEntities

LINQ toObjects

Объекты

LINQ toXML

<book> <title/>

<author/> <year/> <price/>

</book>

XML

LINQ toSQL

Реляционные источники

Entity FrameworkКонцептуальна

я схема (CSDL)

Microsoft SQL Server, Oracle, DB2, MySQL…

Маппинг (MSL)

Схема хранения (CSDL)

ADO.NET

Page 32: Visual Studio  2008 - развитие технологий доступа к данным на платформе  Microsoft.NET

ADO.NET Data Services Framework"Project Astoria"

Page 33: Visual Studio  2008 - развитие технологий доступа к данным на платформе  Microsoft.NET

Доступ к данным для интернет приложений

HTML + Javascript

Данные(XML, и т.п.)

DLL + XAML

Данные(XML, и т.п.)

Данные(XML, и т.п.)

Mashup UI

Потоки данны

х

AJAX приложения

Silverlight приложения

Онлайн сервисы

Мэшапы(Mashups)

Page 34: Visual Studio  2008 - развитие технологий доступа к данным на платформе  Microsoft.NET

REST и WS-* сервисы

Очень интересный вебкаст Дэвида Чеппелла с переводом на русский -SOAP/WS-* и REST – удобная организация коммуникаций https://platforma2008.ru/Materials.aspx?EventID=72 Достаточно просто зарегистрироваться на сайте, промокода не нужно.Секция – Сервис-ориентированная архитектура и бизнес-процессы (SA)

http://www.platforma2008.ru

Page 35: Visual Studio  2008 - развитие технологий доступа к данным на платформе  Microsoft.NET

REST-Интерфейс для данных • Основа модели данных

• Сущности и ассоциации ресурсы и ссылки

Entity Data Model

• Каждый ресурс адресуется через URI• Гибкая схема URI для получения

данныхURI

• Данные как ресурсы, HTTP команды - манипулирование

• Использование кэширования, прокси, аутентификации, …

HTTP

• AtomPub, JSONФорматы

• Entity Framework• Источники данных на базе IQueryableИсточники

Page 36: Visual Studio  2008 - развитие технологий доступа к данным на платформе  Microsoft.NET

ADO.NET Data Services

Основные возможности

Демонстрация

Page 37: Visual Studio  2008 - развитие технологий доступа к данным на платформе  Microsoft.NET

ADO.NET Data ServicesC# 3.0 VB 9.0 Другие

.NET Language Integrated Query

LINQ toDataSets

LINQ toEntities

LINQ toObjects

Объекты

LINQ toXML

<book> <title/>

<author/> <year/> <price/>

</book>

XML

LINQ toSQL

Microsoft SQL Server, Oracle, DB2, MySQL…

Entity Framework

ADO.NET

REST API

Client LINQ Rest

Provider

HTTP

Сервер

Клиент

Page 38: Visual Studio  2008 - развитие технологий доступа к данным на платформе  Microsoft.NET

Sync Framework

Page 39: Visual Studio  2008 - развитие технологий доступа к данным на платформе  Microsoft.NET

Ключевые сценарии для синхронизации

Offline• Outlook Cached Mode

• Мобильные сотрудники

• Богатый интерфейс к веб-сервисам

Совместная работа• Мои контакты и

календарь доступны везде

• Документы групп Groove доступны

везде• Моя музыка доступна везде

Microsoft Sync Framework

Page 40: Visual Studio  2008 - развитие технологий доступа к данным на платформе  Microsoft.NET

Типовая структура приложения Sync Framework

Sync Provider

Приложение

Sync Provider

Sync Agent

DataStore

Data Store

изменения

изменения изменения

Microsoft Sync Framework

Page 41: Visual Studio  2008 - развитие технологий доступа к данным на платформе  Microsoft.NET

Возможности синхронизации БД

• Фокус на администратора баз данных, специфично для SQL Server

• Богатый набор возможностей, мало программного контроля

Merge Replicatio

n• Фокус на разработчиков - Sync Runtime

• Синхронизация данных, а не замена записей БД• Компонентная, SOA ориентированная

инфраструктура• Поддержка любого ADO.NET Provider

• Дополнительные возможности с SQL Server 2008• ADO.NET Provider for the Microsoft Sync Framework

Sync Services for

ADO.NET

• Доступно только с SQL Server Compact• Фокус на разработчиков, простота, ограниченные

сценарии (download w/incremental upload)• Sync Services for ADO.NET позволяет работать с

такой же простотой, но с большей масштабируемостью

Remote Data Access

(RDA)

Page 42: Visual Studio  2008 - развитие технологий доступа к данным на платформе  Microsoft.NET

Server

DB

Доступ к данным в ADO.NET• Запрос к серверу• DataAdapter.SelectCommand вызывается, возвращая DataSet• Изменения делаются в RAM над DataSet и возвращаются назад• DataAdapter преобразует изменения в Insert, Update and Delete команды

Forms

DataAdapter

SelectCommand

InsertCommand

UpdateCommand

DeleteCommand

Connection

• Работа через сервисы• Операции приводят к запросу к серверу

• Частичное использование клиента – операции в RAM• Неустойчиво к проблемам в сети

Page 43: Visual Studio  2008 - развитие технологий доступа к данным на платформе  Microsoft.NET

Sync Services for ADO.NET• Построены на DataAdapter• Добавляют Commands инкрементальных обновлений• Добавляют Commands обработки конфликтов• Принимают и возвращают DataSets

FormsSyncAdapter

Select Incremental Deletes

InsertCommand

UpdateCommand

DeleteCommand

Connection

Select Incremental Updates

Select Incremental Inserts

Select Conflict Updated Rows…

Select Conflict Deleted Rows…

SelectCommand

DataAdapter

Server

DB

Page 44: Visual Studio  2008 - развитие технологий доступа к данным на платформе  Microsoft.NET

SQL Server Compact

3.5

Sync Services for ADO.NET• Локальная БД для фоновой синхронизацииoperations• Синхронизация перемещает данные между локальной БД и удаленным

сервисом• Приложение также работает с данными, но локально• Приложение теперь устойчиво к проблемам сети

Forms

Select Incremental Inserts

SyncAdapter

Select Incremental Deletes

InsertCommand

UpdateCommand

DeleteCommand

Connection

Select Incremental Updates

Select Conflict Updated Rows…

Select Conflict Deleted Rows…

Server

DB

Services & Transports

Page 45: Visual Studio  2008 - развитие технологий доступа к данным на платформе  Microsoft.NET

• Небольшая (~1MB) встроенная, in-proc БД• Подмножество ключевых типов SQL

Server и T-SQL• Нет: Stored Procs, Views, Xquery

Что это:

• Mobile & Embedded устройства• Windows Vista, Media Center PC, MSN Client,

ZUNE, Windows Media Player, …• Локальная клиентская БД в VS 2008 по

умолчанию

Где используется

• Локальный online / offline кэш• Локальная, независимая БД приложения

• Сохранение In-Memory данных в БД• Структурированный формат документов

для приложений

Сценарии

Page 46: Visual Studio  2008 - развитие технологий доступа к данным на платформе  Microsoft.NET

Сравнение с SQL Server ExpressSQL Server Compact SQL Server Express

Для чего Ключевой функционал БД в компактном исполнении

Идеален для малых серверов и desktop где нужен более богатый функционал - full text search и мощная поддержка XML в БД

Идеален для мобильных устройств, когда подключение происходит периодически

Легкая миграция на Workgroup, Standard и Enterprise редакции

Внедряется в приложение

Бесплатен Бесплатен

Не для Работы как сервиса Когда нужно минимальное использование памяти

Работы сервера для нескольких пользователей

in-process решений

Когда нужен более полный функционал SQL Server

Работы на мобильных устройствах

Page 47: Visual Studio  2008 - развитие технологий доступа к данным на платформе  Microsoft.NET

Sync Services for ADO.NET

Основные возможности

Демонстрация

Page 48: Visual Studio  2008 - развитие технологий доступа к данным на платформе  Microsoft.NET

Sync Services for ADO.NETC# 3.0 VB 9.0 Другие

.NET Language Integrated Query

LINQ toDataSets

LINQ toEntities

LINQ toObjects

Объекты

LINQ toXML

<book> <title/>

<author/> <year/> <price/>

</book>

XML

LINQ toSQL

Microsoft SQL Server Compact

Microsoft SQL Server

Entity Framework

ADO.NET

Сервер

Клиент

TDS, WCF

Page 49: Visual Studio  2008 - развитие технологий доступа к данным на платформе  Microsoft.NET

Полная картина

Microsoft SQL ServerOracle, DB2, MySQL…

Entity Framework

ADO.NET

REST API LINQ

ASP.NET App

Microsoft SQL Server Compact

HTTP

LINQ

EF

СерверКлиент

TDS, WCF

Data

Services

Sync Services

Page 50: Visual Studio  2008 - развитие технологий доступа к данным на платформе  Microsoft.NET

Microsoft Express EditionsПоказанные примеры используют бесплатные Express версии

Удобны для: прототипирования, изучения, начала разработки

Page 51: Visual Studio  2008 - развитие технологий доступа к данным на платформе  Microsoft.NET

Ссылки по темеLINQ http://msdn2.microsoft.com/en-us/netframework/aa904594.aspx

ADO.NET Entity Frameworkhttp://msdn.microsoft.com/datahttp://blogs.msdn.com/adonet/http://blogs.msdn.com/data/

ADO.NET Data Serviceshttp://astoria.mslivelabs.com/ http://blogs.msdn.com/astoriateam

Sync Services for ADO.NET http://msdn.microsoft.com/sync http://blogs.msdn.com/sync/

Page 52: Visual Studio  2008 - развитие технологий доступа к данным на платформе  Microsoft.NET

Спасибо за внимание!

Page 53: Visual Studio  2008 - развитие технологий доступа к данным на платформе  Microsoft.NET