1 / 53

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

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

rainer
Download Presentation

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

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

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

  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)

  4. Доступ к данным DataSet DS=new DataSet(); XQueryNavigatorCollectionoXQ = 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> “ ; XQueryExpressionxExpression = new XQueryExpression(strQuery); strXML = xExpression.Execute(oXQ).ToXml(); StringReaderstrReader = new StringReader(strXML); XmlTextReader reader = new XmlTextReader(strReader); DS.ReadXml(reader); DataGrid1.DataSource = DS.Tables[0]; DataGrid1.DataBind(); SqlConnectionnwindConn = new SqlConnection("Data Source=localhost;Integrated Security=SSPI;Initial Catalog=northwind"); SqlCommandcatCMD = nwindConn.CreateCommand(); catCMD.CommandText= "SELECT CategoryID, CategoryName FROM Categories WHERE CategoryName LIKE ‘B%’ ORDER BY 1“; nwindConn.Open(); SqlDataReadermyReader = catCMD.ExecuteReader(); while (myReader.Read()) { Console.WriteLine("\t{0}\t{1}", myReader.GetInt32(0), myReader.GetString(1)); } myReader.Close(); nwindConn.Close(); 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")

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

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

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

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

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

  10. C# 3.0 Query expressions var contacts = from c in customers where c.State == "WA" select new { c.Name, c.Phone }; Local variable type inference Lambda expressions var contacts = customers .Where(c => c.State == "WA") .Select(c => new { c.Name, c.Phone }); Extension methods Object initializers Anonymous types

  11. VB 9 Query expressions Dim contacts = From c In customers _ Where c.State = "WA“ _ Select c.Name, c.Phone Local variable type inference Lambda expressions Dim contacts = _ customers _ .Where(Function (c) c.State = "WA")_ .Select(Function(c) New With { c.Name, c.Phone }) Extension methods Object initializers Anonymous types

  12. <book> <title/> <author/> <year/> <price/> </book> XML Объекты Реляционные источники Проект LINQ .NET Language Integrated Query C# 3.0 VB 9.0 Другие LINQ toDataSets LINQ toEntities LINQ toObjects LINQ toXML LINQ toSQL

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  30. <book> <title/> <author/> <year/> <price/> </book> Microsoft SQL Server, Oracle, DB2, MySQL… XML Объекты LINQ + Entity Framework Реляционные источники .NET Language Integrated Query EntityFramework Концептуальная схема (CSDL) Маппинг (MSL) Схема хранения (CSDL) C# 3.0 VB 9.0 Другие ADO.NET LINQ toEntities LINQ toDataSets LINQ toSQL LINQ toObjects LINQ toXML

  31. ADO.NET Data Services Framework"Project Astoria"

  32. Доступ к данным для интернет приложений HTML + Javascript DLL + XAML Mashup UI Данные(XML, и т.п.) Данные(XML, и т.п.) Данные(XML, и т.п.) Потоки данных AJAX приложения Silverlightприложения Онлайн сервисы Мэшапы (Mashups)

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

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

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

  36. <book> <title/> <author/> <year/> <price/> </book> Microsoft SQL Server, Oracle, DB2, MySQL… XML Объекты ADO.NET Data Services Клиент .NET Language Integrated Query Client LINQ Rest Provider HTTP Сервер REST API Другие VB 9.0 C# 3.0 EntityFramework ADO.NET LINQ toDataSets LINQ toEntities LINQ toSQL LINQ toObjects LINQ toXML

  37. Sync Framework

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

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

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

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

  42. Sync Services for ADO.NET • Построены наDataAdapter • Добавляют Commandsинкрементальных обновлений • Добавляют Commandsобработки конфликтов • Принимают и возвращают DataSets Select Incremental Inserts Select Incremental Updates DataAdapter SyncAdapter Select Incremental Deletes SelectCommand Server DB InsertCommand Connection Forms UpdateCommand DeleteCommand Select Conflict Updated Rows… Select Conflict Deleted Rows…

  43. Sync Services for ADO.NET • Локальная БД для фоновой синхронизацииoperations • Синхронизация перемещает данные между локальной БД и удаленным сервисом • Приложение также работает с данными, но локально • Приложение теперь устойчиво к проблемам сети Select Incremental Inserts Select Incremental Updates Services & Transports SyncAdapter Select Incremental Deletes Server DB InsertCommand Connection Forms UpdateCommand DeleteCommand Select Conflict Updated Rows… Select Conflict Deleted Rows… SQL Server Compact 3.5

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

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

  46. <book> <title/> <author/> <year/> <price/> </book> XML Объекты Sync Services for ADO.NET Клиент .NET Language Integrated Query EntityFramework ADO.NET Microsoft SQL Server Compact Другие C# 3.0 VB 9.0 TDS, WCF Сервер Microsoft SQL Server LINQ toEntities LINQ toDataSets LINQ toSQL LINQ toObjects LINQ toXML

  47. Microsoft SQL Server Oracle, DB2, MySQL… Полная картина Клиент Сервер LINQ Data Services EF HTTP ASP.NET App REST API LINQ EntityFramework ADO.NET Sync Services TDS, WCF Microsoft SQL ServerCompact

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

More Related