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

+5

No comments posted yet

Comments

Slide 1

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

Slide 2

Содержание LINQ ADO.NET Entity Framework ADO.NET Data Services Codename ‘Astoria’ Sync Framework Общая картина подхода Microsoft к технологиям доступа к данным Демонстрации, демонстрации и еще раз демонстрации Доступ к данным

Slide 3

Краткая ретроспектива ODBC (1.0 –1992) – низкоуровневый API OLE DB – COM API ADO – объектная модель - Recordset ADO.NET – объектная модель .NET Dataset MDAC (Windows DAC) -1996 Microsoft Jet Database Engine DB-Library Data Access Objects (DAO) Remote Data Objects (RDO)

Slide 4

Доступ к данным 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" )

Slide 5

Типовые уровни при работе с данными Концептуальный Бизнес сущности и логика Объекты и объектные коллекции Логический Реляционное представление Таблицы, отношения junction tables Физический физическое хранение и манипулирование страницы, экстенты, индексы ограничения (constraints) …

Slide 6

Сложности в работе с данными Нетипизированные острова разные для каждого источника специфические знания для каждого источника отсутствие проверок на этапе компиляции сложность в поддержке … … и даже нет IntelliSence  Проблема: Data != Objects Dataset – реляционное представление в объектном виде Скрытые знания о структуре хранения и объектно–реляционном маппинге (ORM) в виде строк Data Access Layer - спасение?

Slide 7

Entity Framework LINQ Решение – основные идеи Типизированные запросы Типизированные результаты Объектное представление схемы хранения Общее решение для целого ряда продуктов Использование преимуществ ADO.NET Создание концептуальной объектной модели Явное декларативное представление схемы объектно–реляционного маппинга (ORM) между концептуальной моделью и моделью хранения

Slide 8

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

Slide 9

Language Integrated Query Единообразные типизированные запросы к любому источнику данных Методы расширения интерфейса IEnumerable (Select, OrderBy, GroupBy, Join, Where) Возвращаемый результат как объектная коллекция (IEnumerable<T>) Intellisence, проверка на этапе компиляции Специальный синтаксис выражений запросов

Slide 10

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 initializers Anonymous types Local variable type inference

Slide 11

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

Slide 12

Проект LINQ .NET Language Integrated Query

Slide 13

LINQ Краткий обзор Демонстрация

Slide 14

LINQ текущий статус Вышел (RTM) в ноябре 2007 года вместе с Visual Studio 2008 и .NET Framework 3.5 Поддерживает модель провайдеров, существуют реализации: LINQ to NHibernate LINQ to Amazon SharePoint, …. Развивается в направлении параллелизма (manycore) – PLINQ

Slide 15

Entity Framework LINQ Решение – основные идеи Типизированные запросы Типизированные результаты Объектное представление схемы хранения Общее решение для целого ряда продуктов Использование преимуществ ADO.NET Создание концептуальной объектной модели Явное декларативное представление схемы объектно–реляционного маппинга (ORM) между концептуальной моделью и моделью хранения

Slide 16

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

Slide 17

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

Slide 18

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

Slide 19

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

Slide 20

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

Slide 21

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

Slide 22

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

Slide 23

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

Slide 24

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

Slide 25

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

Slide 26

ADO.NET Entity Framework Основные возможности Демонстрация

Slide 27

Entity Framework – текущий статус Доступен в Beta 3 Релиз (RTM) ожидается во второй половине 2008 Провайдеры третьих производителей для различных баз данных В течение 3 месяцев после выхода (RTM) Oracle, IBM DB2, MySQL, PostgreSQL, Informix, Ingres, Sybase, SQLite, SQL Anywhere, Progress … В течение 2008 года Firebird

Slide 28

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

Slide 29

Сравнивая LINQ и Entity Framework LINQ Единообразные запросы Единообразные типизированные запросы к любому источнику Типизированные результаты LINQ to SQL -Типизированное представление логической схемы данных 1:1 ORM LINQ to SQL – возможности переименований объектов данных и поддержка TPH Entity Framework Гибкий маппинг Создание концептуального объектного уровня, абстрагированного от логики хранения Типизированное представление концептуальной схемы с гибким маппингом – полноценный ORM Основное назначение Возможности маппинга

Slide 30

LINQ + Entity Framework .NET Language Integrated Query Реляционные источники Entity Framework Концептуальная схема (CSDL) Маппинг (MSL) Схема хранения (CSDL) ADO.NET

Slide 31

ADO.NET Data Services Framework "Project Astoria"

Slide 32

Доступ к данным для интернет приложений AJAX приложения Silverlight приложения Онлайн сервисы Мэшапы (Mashups)

Slide 33

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

Slide 34

REST-Интерфейс для данных

Slide 35

ADO.NET Data Services Основные возможности Демонстрация

Slide 36

ADO.NET Data Services .NET Language Integrated Query Entity Framework ADO.NET REST API Client LINQ Rest Provider HTTP Сервер Клиент

Slide 37

Sync Framework

Slide 38

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

Slide 39

Типовая структура приложения Sync Framework Sync Provider Приложение Sync Provider Sync Agent Data Store Data Store изменения изменения изменения Microsoft Sync Framework

Slide 40

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

Slide 41

Server DB Доступ к данным в ADO.NET Запрос к серверу DataAdapter.SelectCommand вызывается, возвращая DataSet Изменения делаются в RAM над DataSet и возвращаются назад DataAdapter преобразует изменения в Insert, Update and Delete команды Forms DataAdapter SelectCommand InsertCommand UpdateCommand DeleteCommand Connection Работа через сервисы Операции приводят к запросу к серверу Частичное использование клиента – операции в RAM Неустойчиво к проблемам в сети

Slide 42

Sync Services for ADO.NET Построены на DataAdapter Добавляют Commands инкрементальных обновлений Добавляют Commands обработки конфликтов Принимают и возвращают DataSets Forms SyncAdapter 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

Slide 43

SQL Server Compact 3.5 Sync Services for ADO.NET Локальная БД для фоновой синхронизацииoperations Синхронизация перемещает данные между локальной БД и удаленным сервисом Приложение также работает с данными, но локально Приложение теперь устойчиво к проблемам сети Forms Server DB

Slide 45

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

Slide 46

Sync Services for ADO.NET Основные возможности Демонстрация

Slide 47

Sync Services for ADO.NET .NET Language Integrated Query Microsoft SQL Server Compact Microsoft SQL Server Entity Framework ADO.NET Сервер Клиент TDS, WCF

Slide 48

Полная картина Entity Framework ADO.NET REST API LINQ ASP.NET App Microsoft SQL Server Compact HTTP LINQ EF Сервер Клиент TDS, WCF Data Services Sync Services

Slide 49

Microsoft Express Editions Показанные примеры используют бесплатные Express версии Удобны для: прототипирования, изучения, начала разработки

Slide 50

Ссылки по теме LINQ http://msdn2.microsoft.com/en-us/netframework/aa904594.aspx ADO.NET Entity Framework http://msdn.microsoft.com/data http://blogs.msdn.com/adonet/ http://blogs.msdn.com/data/ ADO.NET Data Services http://astoria.mslivelabs.com/ http://blogs.msdn.com/astoriateam Sync Services for ADO.NET http://msdn.microsoft.com/sync http://blogs.msdn.com/sync/

Slide 51

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

Summary: Роман Здебский, Дни разработчиков, весна 2008, http://www.microsoft.com/rus/msdn/events/devdays/default.mspx

Tags: visual studio technology development data access platform microsoft .net

URL: