Проект Linq (C# 3.0, VB 10.0) – будущее языков программирования Title of the Presentation Дмитрий Никонов Program Manager Microsoft.

Презентация:



Advertisements
Похожие презентации
Михаил Черномордиков Developer Evangelist, Microsoft Россия
Advertisements

Top 10 возможностей ASP.NET 2.0. Выбор сделан на основе опросов разработчиков Top 10 – горячая десятка возможностей.
Высокоуровневые методы информатики и программирования Лекция 16 Встроенный язык запросов.
Источники данных LINQ РУБД. LINQ (Language Integrated Query, язык интегрированных запросов ) это технология, которая позволяет разработчикам формировать.
Microsoft TechDays Николай Миляев консультант Microsoft.
ИТЕРАТОРЫ И LINQ Лекция 1. Интерфейс IEnumerable и IEnumerator Любая коллекция реализует интерфейс IEnumerable. public interface IEnumerable : IEnumerable.
Microsoft TechDayshttp:// Коршиков Андрей Фёдорович ведущий инженер-программист ЗАО «НИПИ «ИнжГео» MCT, MCITP, MCPD.
Корпоративный портал ЛУКОЙЛ-Нижневожскнефть на базе Sharepoint Portal Server 2003 Глеб Глущенко Системный инженер Microsoft.
Visual Studio Team System Sergiy Baydachnyy Developer Evangelist
Полигон 2006: Тестовая лаборатория будущего The 2007 Microsoft Office system.
Contoso BSC Portal Михаил Козлов Консультант по бизнес решениям Microsoft (095) Microsoft® Office Business.
Microsoft TechDays Золотовицкий Аркадий Директор по производству «Интеллектуальные системы»
Простая автоматизация бизнес-процессов с помощью Microsoft InfoPath На базе Microsoft Share Point Portal Server И DocsVision Share Point Edition Докладчик.
Microsoft TechDays Леонид Шапиро MCT ЦКО «Специалист»
Microsoft TechDays Александр Неволин Nevlabs кандидат технических наук.
Сергей Байдачный Специалист по разработке ПО Майкрософт Украина.
Автоматическая генерация схемы реляционной базы данных на основе объектной схемы данных Богданов Алексей.
Microsoft TechDays Никоноров Евгений разработчик EPAM Systems.
Microsoft TechDays Константин Трещев MCITP: Enterprise Administrator
DevCon12 // msdevcon.ru #msdevcon мая, 2012 г. Microsoft.
Транксрипт:

Проект Linq (C# 3.0, VB 10.0) – будущее языков программирования Title of the Presentation Дмитрий Никонов Program Manager Microsoft

Содержание Проблема: Данные!=Объекты Проблема: Данные!=Объекты Расширения языков программирования Расширения языков программирования Новые элементы языка Новые элементы языка Операторы запросов в языке Операторы запросов в языке Работа с реляционными данными при помощи DLInQ Работа с реляционными данными при помощи DLInQ Работа с XML при помощи ХLInQ Работа с XML при помощи ХLInQ

Стандартныеоператорызапросов Об Об ъекты DLinq (ADO.NET) XLinq(System.Xml) XML.NET Language Integrated Query C#VB Другие языки… SQL

Новые элементы языка Неявно описанные переменные Неявно описанные переменные Методы расширения Методы расширения Lambda-выражения Lambda-выражения Инициализаторы объектов Инициализаторы объектов Анонимные типы данных Анонимные типы данных Операторы запросов Операторы запросов 100% обратная совместимость 100% обратная совместимость var x = 5; static void Dump(this object o); c => c.Name new Point { x = 1, y = 2 } new { c.Name, c.Phone } from … where … select

Стандартные Операторы Запросов Ограничение s.Where(…) Project s.Select(…), s.SelectMany(…) Сортировка s.OrderBy(…).ThenBy(…) … Группировка s.GroupBy(…) Quantify s.Any(…), s.All(…) Разделение s.TakeFirst(…), s.SkipFirst(…) Выбор подмножества (Set) s.Distinct(), s.Union(…), s.Intersect(…), s.Except(…) Выделение элемента (Singleton) s.Element(…), s.ElementAt(…) Аггрегация s.Count(), s.Sum(), s.Min(), s.Max(), s.Average() Конвертация s.ToArray(), s.ToList(), s.ToDictionary(…) Приведение типа (cast) s.OfType ()

Отсроченное исполнение запросов Customer[] custs = SampleData.GetCustomers(); custsPhoneNameID var query = from c in custs where c.City == "London" select c.Name; var query = custs.Where(c => c.City == "London").Select(c => c.Name); Select c => c.Name string[] names = query.ToArray(); names c => c.City == "London" Where

DLInQ для реляционных данных SqlConnection c = new SqlConnection(…); c.Open(); SqlCommand cmd = new c.Name, c.Name, c.Phone FROM Customers c FROM Customers c WHERE c.City WHERE c.City = "London"; DataReader dr = c.Execute(cmd); while (dr.Read()) { string name = r.GetString(0); string name = r.GetString(0); string phone = r.GetString(1); string phone = r.GetString(1); DateTime date = r.GetDateTime(2); DateTime date = r.GetDateTime(2);}r.Close(); Доступ к данным сегодня: Запросы в кавычках Слабосвязанные параметры (loosely-bound) Слаботипизированные результаты (Loosely typed result sets) Отсутствие проверок во время компиляции (No compile time checks)

public class Customer { … } public class Northwind: DataContext { public Table Customers; public Table Customers; …} Northwind db = new Northwind(…); var contacts = from c in db.Customers from c in db.Customers where c.City == "London" where c.City == "London" select new { c.Name, c.Phone }; select new { c.Name, c.Phone }; DLInQ для реляционных данных Доступ к данным с DLinq Классы описывают данные Строготипизированное соединение с БД (strongly typed connection) Встроенный язык запросов Строготипизированные результаты (strongly typed) Таблицы – как коллекции

Встроенный в язык доступ к данным Встроенный в язык доступ к данным Проецирование таблиц и записей в классы и объекты Проецирование таблиц и записей в классы и объекты Построен на ADO.NET и.NET транзакциях Построен на ADO.NET и.NET транзакциях Отображение - Mapping Отображение - Mapping Декларативное (Encoded in attributes) Декларативное (Encoded in attributes) Авто-генерация или генерация вручную Авто-генерация или генерация вручную ОR-М (Relationships map to properties) ОR-М (Relationships map to properties) Сохранение Состояния (Persistence) Сохранение Состояния (Persistence) Автоматическое отслеживание изменений Automatic change tracking Автоматическое отслеживание изменений Automatic change tracking Модификации через SQL или хранимые процедуры Модификации через SQL или хранимые процедуры DLInQ для реляционных данных

демо - DLInQ

XLInQ для данных в XML XmlDocument doc = new XmlDocument(); XmlElement contacts = doc.CreateElement("contacts"); foreach (Customer c in customers) if (c.Country == Russia") { if (c.Country == Russia") { XmlElement e = doc.CreateElement("contact"); XmlElement e = doc.CreateElement("contact"); XmlElement name = doc.CreateElement("name"); XmlElement name = doc.CreateElement("name"); name.InnerText = c.CompanyName; name.InnerText = c.CompanyName; e.AppendChild(name); e.AppendChild(name); XmlElement phone = doc.CreateElement("phone"); XmlElement phone = doc.CreateElement("phone"); phone.InnerText = c.Phone; phone.InnerText = c.Phone; e.AppendChild(phone); e.AppendChild(phone); contacts.AppendChild(e); contacts.AppendChild(e); }doc.AppendChild(contacts); Работа с XML сегодня: Great Lakes Food Great Lakes Food (503) (503) … Императивная (Imperative) модель Ориентация на работу с документами Нет встроенного языка запросов Потребляет много памяти

XLInQ для данных в XML XElement contacts = new XElement("contacts", from c in customers from c in customers where c.Country == Russia" where c.Country == Russia" select new XElement("contact", select new XElement("contact", new XElement("name", c.CompanyName), new XElement("name", c.CompanyName), new XElement("phone", c.Phone) new XElement("phone", c.Phone) )); Работа с XML при помощи XLinq Декларативная (declarative) модель Ориентация на работу с элементами Встроенные запросы Быстрее, требует меньше памяти

XLInQ для данных в XML LInQ для XML LInQ для XML Мощь и эффективность XPath / XQuery, Мощь и эффективность XPath / XQuery, но используя языки C# or VB Использует лучшее из DOM Использует лучшее из DOM Ориентация на элементы, а не документы Ориентация на элементы, а не документы Симметрия в API между элементами и аттрибутами Симметрия в API между элементами и аттрибутами Functional construction Functional construction Текстовые ноды – просто строки (strings) Текстовые ноды – просто строки (strings) Упрощенная поддержка пространств имен XML Упрощенная поддержка пространств имен XML Быстрее, потребляет меньше ресурсов Быстрее, потребляет меньше ресурсов

XLInQ для данных в XML LInQ для XML LInQ для XML Мощь и эффективность XPath / XQuery, Мощь и эффективность XPath / XQuery, но используя языки C# or VB Использует лучшее из DOM Использует лучшее из DOM Ориентация на элементы, а не документы Ориентация на элементы, а не документы Идентичность/Симметрия в API между элементами и аттрибутами Идентичность/Симметрия в API между элементами и аттрибутами Текстовые узлы – просто строки (strings) Текстовые узлы – просто строки (strings) Упрощенная поддержка пространств имен XML Упрощенная поддержка пространств имен XML Быстрее, потребляет меньше ресурсов Быстрее, потребляет меньше ресурсов

Демо - XLInQ

Проект LINQ - Заключение Встроенный язык запросов для.NET Встроенный язык запросов для.NET Язык запросов внутри C# 3.0 и VB 9.0 Язык запросов внутри C# 3.0 и VB 9.0 Стандартные операторы запросов Стандартные операторы запросов SQL-подобные запросы для любых коллекций в.NET SQL-подобные запросы для любых коллекций в.NET DLinq DLinq Среда для работы с реляционными данными при помощи запросов Среда для работы с реляционными данными при помощи запросов XLinq XLinq Быстрый,мощный XML DOM с встроенным языком запросов Быстрый,мощный XML DOM с встроенным языком запросов

Проект LINQ - Заключение Преимущества LInQ Преимущества LInQ Общий способ доступа и построения запросов к данным любого типа Общий способ доступа и построения запросов к данным любого типа Проверка типов данных и IntelliSense для языка запросов Проверка типов данных и IntelliSense для языка запросов Мощь SQL и XQuery в C# и VB Мощь SQL и XQuery в C# и VB

Вопросы? (и ответы )

Ask the Expert В течение часа после доклада я буду присутствовать на стенде Спроси эксперта В течение часа после доклада я буду присутствовать на стенде Спроси эксперта

© 2005 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.