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

Post on 13-Feb-2016

68 Views

Category:

Documents

2 Downloads

Preview:

Click to see full reader

DESCRIPTION

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

TRANSCRIPT

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

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

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

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

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

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)

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

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" )

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

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

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

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

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

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

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

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

Entity Framework

LINQ

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

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

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

LINQ

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

http://www.platforma2008.ru

Language Integrated Query

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

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

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

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

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

Проект 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

LINQ

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

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

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

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

LINQ to NHibernateLINQ to AmazonSharePoint, ….

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

PLINQ

Entity Framework

LINQ

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

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

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

Entity Framework

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

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

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

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

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

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

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

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

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

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

ADO.NET Entity Framework

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ADO.NET Data Services Framework"Project Astoria"

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

HTML + Javascript

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

DLL + XAML

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

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

Mashup UI

Потоки данны

х

AJAX приложения

Silverlight приложения

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

Мэшапы(Mashups)

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

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

http://www.platforma2008.ru

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

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

Entity Data Model

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

данныхURI

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

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

HTTP

• AtomPub, JSONФорматы

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

ADO.NET Data Services

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

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

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

Сервер

Клиент

Sync Framework

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

Offline• Outlook Cached Mode

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

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

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

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

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

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

Microsoft Sync Framework

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

Sync Provider

Приложение

Sync Provider

Sync Agent

DataStore

Data Store

изменения

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

Microsoft Sync Framework

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

• Фокус на администратора баз данных, специфично для 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)

Server

DB

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

Forms

DataAdapter

SelectCommand

InsertCommand

UpdateCommand

DeleteCommand

Connection

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

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

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

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

• Небольшая (~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 данных в БД• Структурированный формат документов

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

Сценарии

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

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

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

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

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

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

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

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

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

in-process решений

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

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

Sync Services for ADO.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

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

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

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

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

Ссылки по теме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/

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

top related