SlideShare una empresa de Scribd logo
1 de 58
.NET 3.0  и  LINQ Константин Кичинский [email_address] http://zelo-stroi.livejournal.com
.NET 3.0  и   LINQ обзор
.NET 3.0  и   LINQ обзор обзор
.NET 3.0  и   LINQ обзор обзор . NET 3.5
.NET
.NET
.NET
.NET
.NET
.NET
.NET
.NET
Windows  Presentation  Foundation
Эффективность работы пользователей
Эффективность работы пользователей
Эффективность работы пользователей
Эффективность работы пользователей
Эффективность работы пользователей
Эффективность работы пользователей
Эффективность работы пользователей
User Experience  в ПО, как выйти на новый уровень ? Преимущества для пользователя Интерактивность Оптимизация под форм факторы Читабельность Производительность –  GPU Красота - эмоциональность Преимущества для разработчика Простота разработки Универсальность работы с графикой  & Media Богатство возможностей платформы Инструментарий Windows Vista Office 2007 Эффект  UX Мотивация Продуктивность Удовлетворенность Положительные эмоции Повторное использование
Эволюция программного обеспечения ,[object Object],[object Object],[object Object],[object Object],[object Object],Windows 1.0 Windows 3.0 Windows 95 Windows XP
Проблемы разработки интерфейса ,[object Object],[object Object],[object Object],[object Object],[object Object]
Windows Presentation Foundation ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Взаимодействие дизайнера и разработчика Создает дизайн Добавляет бизнес логику Дизайнер Разработчик
Взаимодействие дизайнера и разработчика Дизайнер Разработчик
Взаимодействие дизайнера и разработчика Дизайнер Разработчик
Взаимодействие дизайнера и разработчика ,[object Object],Дизайнер Разработчик
Взаимодействие дизайнера и разработчика ,[object Object],[object Object],[object Object],Дизайнер Разработчик
Представление интерфейса с помощью  XAML ,[object Object],[object Object],[object Object],[object Object],<Button Width=&quot;100&quot;> OK <Button.Background> LightBlue </Button.Background> </Button> XAML Button b1 = new Button(); b1.Content = &quot;OK&quot;; b1.Background = new SolidColorBrush(Colors.LightBlue); b1.Width = 100; C# Dim b1 As New Button b1.Content = &quot;OK&quot; b1.Background = New _   SolidColorBrush(Colors.LightBlue) b1.Width = 100 VB.NET
Property Engine Input / Eventing System .NET Framework 2.0 Desktop Windows Manager Media Integration Layer DirectX Windows Vista Display Driver (LDDM) Windows Media Foundation Composition Engine Print Spooler Managed Unmanaged Application Services Deployment Services Databinding USER INTERFACE SERVICES XAML Accessibility Property System Input & Eventing BASE SERVICES DOCUMENT SERVICES Packaging Services XPS Documents Animation 2D 3D Audio Imaging Text Video Effects Composition Engine MEDIA INTEGRATION LAYER Controls Layout Windows Presentation Foundation XPS Viewer
Архитектура  WPF Application Services Deployment Services Databinding USER INTERFACE SERVICES XAML Accessibility Property System Input & Eventing BASE SERVICES DOCUMENT SERVICES Packaging Services XPS Documents Animation 2D 3D Audio Imaging Text Video Effects Composition Engine MEDIA INTEGRATION LAYER Controls Layout
Что дает  WPF ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Где найти? ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
WCF  & WWF &CardSpace .NET 3.0  Part 2 Следующая пятница!
.NET 3.0  и   LINQ обзор обзор
Эволюция  C# C# 1.0 C# 2.0 C# 3.0 Управляемый код  ( сборка мусора,  reflection, …) Generics  (родовое программирование, статическая параметризация типов)   Декларативное программирование Language Integrated Query
Что же нового в  C# 3.0 ?
LINQ
Language Integrated Query LINQ  to  Entities LINQ  To SQL LINQ to XML C#  VB.Net Others… LINQ  To Dataset LINQ  To Objects LINQ-enabled ADO.NET
Query Expressions var  L =  new  List <Person>  {  new  Person{ Name= &quot;Vasya&quot; , Age= 16 , Speciality= 1  },  new  Person{ Name= &quot;Petya&quot; , Age= 20 , Speciality= 2  }, new  Person{ Name= &quot;Kolya&quot; , Age= 20 , Speciality= 1  } }; var  Spec =  new  List <Speciality> {  new  Speciality{Code= 1 ,   Title= &quot;Math&quot; },  new  Speciality{Code= 2 , Title= &quot;CS&quot; } }; var  res =  from  x  in  L  where  x.Age> 16   select  x.Name; var  res =  from  s  in  L    join  sp  in  Spec  on  s.Speciality  equals  sp.Code    select   new  { s.Name, sp.Title }; var  res2 =  from  s  in  L  group  s  by  s.Speciality  into  g  select   new  { SpecCode=g.Key, NoOfStudents = g.Count(),  Students =  from  x  in  g  select  x };
Query Expressions  — синтаксис from   id   in   source {  from   id   in   source | join   id   in   source   on   expr   equals   expr  [  into   id  ] | let   id  =  expr  | where   condition  | orderby   ordering ,  ordering , … } select   expr  |  group   expr   by   key [  into   id   query  ] Начинается с  from 0 или более  from ,  join ,  let ,  where   или  orderby Заканчивается  select   или  group   by into   позволяет продолжить запрос
Операции Ограничение Where Проекция Select, SelectMany Упорядочивание OrderBy, ThenBy Группировка GroupBy Joins Join, GroupJoin Квантификация Any, All Разбиение Take, Skip, TakeWhile, SkipWhile Множественные Distinct, Union, Intersect, Except Выбор элементов First, Last, Single, ElementAt Агрегирование Count, Sum, Min, Max, Average Преобразование ToArray, ToList, ToDictionary Приведение типов OfType<T>, Cast<T>
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],DLInQ  для реляционных данных
Доступ к реляционным данным var  result =  from  x  in  students  select {    x.Name,   AvgGrade = (int) ( from  g  in  grades  where  g.STUD_ID == x.STUD_ID select  g).Average(g=>g.GRADE) } var  db =  new  StudDbDataContext(connStr); var  students =  db.GetTable <STUDENT> (); var  grades =  db.GetTable <GRADES> ();
Доступ к данным сегодня и завтра SqlConnection c =  new  SqlConnection(connStr); c.Open(); SqlCommand cmd =  new  SqlCommand( @ &quot;SELECT s.Name, s.Group FROM Students s WHERE s.Speciality = @p0&quot; ); cmd.Parameters.AddWithValue( &quot;@p0&quot; ,  “1“ ); DataReader dr = c.Execute(cmd); while  (dr.Read()) { StudList.Add( new  Student(dr.GetString(0), dr.GetInt(1))); } dr.Close(); var  db =  new  StudDbDataContext(connStr); var  students =  db.GetTable <STUDENT> (); var  StudList =  from  s  in  students  where  s.Speciality=1 select   new  Student(s.Name, s.Group);
XLInQ  для   данных в  XML ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Доступ к данным XML ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Список всех студентов: сегодня var  xdoc =  new   XmlDocument (); xdoc.Load( &quot;students.xml&quot; ); foreach  ( XmlElement  x  in   xdoc.SelectNodes( &quot;//Students/Student&quot; )) { int  s=0, n=0; foreach  ( XmlElement  y  in  x.SelectNodes( &quot;Grades/Grade&quot; )) { n++;  s += int.Parse(y.Attributes[ &quot;Value&quot; ].Value); } Console .WriteLine( &quot;{0} -> {1}&quot; ,   x.Attributes[ &quot;Name&quot; ].Value,   s/n); }
С использованием XLinq ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Генерация XML сегодня XmlDocument  doc =  new   XmlDocument (); XmlElement  students = doc.CreateElement( “students&quot; ); foreach  ( Student  s  in  studentsList) { XmlElement  e = doc.CreateElement( “student&quot; ); XmlElement  name = doc.CreateElement( &quot;name&quot; ); name.InnerText = s.Name; e.AppendChild(name); XmlElement  group = doc.CreateElement( “group&quot; ); group.InnerText = s.Group; e.AppendChild(group); students.AppendChild(e); } doc.AppendChild(students); <students> <student> <name>Petya</name> <group> 806 </group> </student> … </students> Императивная модель Ориентация на документ Нет встроенных запросов Требования к памяти
Генерация XML в XLinq var  studs =  new  List <Student>  {  new   Student {Name= &quot;Vasya&quot; , Age= 10 , Speciality= &quot;CS&quot; }, new   Student {Name= &quot;Petya&quot; , Age= 1 6, Speciality= &quot;Math&quot; }}; var  XDoc =  new   XDocument ( new   XDeclaration ( &quot;1.0&quot; ,  &quot;utf-8&quot; ,  &quot;yes&quot; ), new   XComment ( &quot;Student List&quot; ), new   XElement ( &quot;Students&quot; , from  x  in  studs select new   XElement ( &quot;Student&quot; , new   XAttribute ( &quot;Name&quot; , x.Name), new   XAttribute ( &quot;Age&quot; , x.Age)))); Console .WriteLine(Xdoc);  <!--Student List--> < Students > < Student  Name= &quot;Vasya&quot;  Age= &quot;10&quot;  /> < Student  Name= &quot;Petya&quot;  Age= &quot;16&quot;  /> </ Students >
XML-трансформация ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Проект  LINQ ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Где? ,[object Object],[object Object]
[object Object]
[object Object]
.NET 3.0  и  LINQ Константин Кичинский [email_address] http://zelo-stroi.livejournal.com

Más contenido relacionado

Similar a Net 3.0 & Linq

ASP.NET MVC - как построить по-настоящему гибкое веб-приложение
ASP.NET MVC - как построить по-настоящему гибкое веб-приложениеASP.NET MVC - как построить по-настоящему гибкое веб-приложение
ASP.NET MVC - как построить по-настоящему гибкое веб-приложениеAlexander Byndyu
 
Язык программирования C#
Язык программирования C#Язык программирования C#
Язык программирования C#Dmitri Soshnikov
 
GraphQL API: Patterns | Андрей Чиж | Zlit Tech
GraphQL API: Patterns | Андрей Чиж | Zlit TechGraphQL API: Patterns | Андрей Чиж | Zlit Tech
GraphQL API: Patterns | Андрей Чиж | Zlit TechZlit
 
Microsoft Visual Studio 2010
Microsoft Visual Studio 2010Microsoft Visual Studio 2010
Microsoft Visual Studio 2010Alexander Babich
 
Где кончается react native? / Павел Кондратенко (Rambler&Co)
Где кончается react native? / Павел Кондратенко (Rambler&Co)Где кончается react native? / Павел Кондратенко (Rambler&Co)
Где кончается react native? / Павел Кондратенко (Rambler&Co)Ontico
 
Как мы документируем программные интерфейсы. Алексей Миронов
Как мы документируем программные интерфейсы. Алексей МироновКак мы документируем программные интерфейсы. Алексей Миронов
Как мы документируем программные интерфейсы. Алексей МироновYandex
 
Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 2
Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 2Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 2
Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 27bits
 
Web осень 2013 лекция 6
Web осень 2013 лекция 6Web осень 2013 лекция 6
Web осень 2013 лекция 6Technopark
 
19.10 - WebPromo SEO Day - "SEO-автоматизатор: кто он?" - Владислав Моргун
19.10 - WebPromo SEO Day - "SEO-автоматизатор: кто он?" - Владислав Моргун19.10 - WebPromo SEO Day - "SEO-автоматизатор: кто он?" - Владислав Моргун
19.10 - WebPromo SEO Day - "SEO-автоматизатор: кто он?" - Владислав МоргунVladislav Morgun
 
Уменьшение влияния человеческого фактора при разработке бизнес приложений
Уменьшение влияния человеческого фактора при разработке бизнес приложенийУменьшение влияния человеческого фактора при разработке бизнес приложений
Уменьшение влияния человеческого фактора при разработке бизнес приложенийngrebnev
 
Быть в 10 раз эффективнее благодаря Groovy
Быть в 10 раз эффективнее благодаря GroovyБыть в 10 раз эффективнее благодаря Groovy
Быть в 10 раз эффективнее благодаря GroovyEvgeny Kompaniyets
 
Node.js for enterprise 2021 - JavaScript Fwdays 3
Node.js for enterprise 2021 - JavaScript Fwdays 3Node.js for enterprise 2021 - JavaScript Fwdays 3
Node.js for enterprise 2021 - JavaScript Fwdays 3Timur Shemsedinov
 
Rich UI on Dojo Toolkit and Zend Framework
Rich UI on Dojo Toolkit and Zend FrameworkRich UI on Dojo Toolkit and Zend Framework
Rich UI on Dojo Toolkit and Zend FrameworkGeorgy Turevich
 
Расширяем идею статического анализа от проверки кода до других процессов разр...
Расширяем идею статического анализа от проверки кода до других процессов разр...Расширяем идею статического анализа от проверки кода до других процессов разр...
Расширяем идею статического анализа от проверки кода до других процессов разр...Andrey Karpov
 
Online TechTalk “Flutter Mobile Development”
Online TechTalk “Flutter Mobile Development”Online TechTalk “Flutter Mobile Development”
Online TechTalk “Flutter Mobile Development”GlobalLogic Ukraine
 
Дмитрий Сошников Искусственный интеллект и нейросети для .NET-разработчиков
Дмитрий Сошников    Искусственный интеллект и нейросети для .NET-разработчиковДмитрий Сошников    Искусственный интеллект и нейросети для .NET-разработчиков
Дмитрий Сошников Искусственный интеллект и нейросети для .NET-разработчиковMskDotNet Community
 
Фофанов Илья - Лучшие практики проектирования и реализации API на C#
Фофанов Илья - Лучшие практики проектирования и реализации API на C#Фофанов Илья - Лучшие практики проектирования и реализации API на C#
Фофанов Илья - Лучшие практики проектирования и реализации API на C#Elias Fofanov
 
Что нового в Visual Studio 2010 и .Net 4.0
Что нового в Visual Studio 2010 и .Net 4.0Что нового в Visual Studio 2010 и .Net 4.0
Что нового в Visual Studio 2010 и .Net 4.0akrakovetsky
 

Similar a Net 3.0 & Linq (20)

ASP.NET MVC - как построить по-настоящему гибкое веб-приложение
ASP.NET MVC - как построить по-настоящему гибкое веб-приложениеASP.NET MVC - как построить по-настоящему гибкое веб-приложение
ASP.NET MVC - как построить по-настоящему гибкое веб-приложение
 
Язык программирования C#
Язык программирования C#Язык программирования C#
Язык программирования C#
 
GraphQL API: Patterns | Андрей Чиж | Zlit Tech
GraphQL API: Patterns | Андрей Чиж | Zlit TechGraphQL API: Patterns | Андрей Чиж | Zlit Tech
GraphQL API: Patterns | Андрей Чиж | Zlit Tech
 
Microsoft Visual Studio 2010
Microsoft Visual Studio 2010Microsoft Visual Studio 2010
Microsoft Visual Studio 2010
 
Где кончается react native? / Павел Кондратенко (Rambler&Co)
Где кончается react native? / Павел Кондратенко (Rambler&Co)Где кончается react native? / Павел Кондратенко (Rambler&Co)
Где кончается react native? / Павел Кондратенко (Rambler&Co)
 
Как мы документируем программные интерфейсы. Алексей Миронов
Как мы документируем программные интерфейсы. Алексей МироновКак мы документируем программные интерфейсы. Алексей Миронов
Как мы документируем программные интерфейсы. Алексей Миронов
 
Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 2
Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 2Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 2
Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 2
 
Web осень 2013 лекция 6
Web осень 2013 лекция 6Web осень 2013 лекция 6
Web осень 2013 лекция 6
 
19.10 - WebPromo SEO Day - "SEO-автоматизатор: кто он?" - Владислав Моргун
19.10 - WebPromo SEO Day - "SEO-автоматизатор: кто он?" - Владислав Моргун19.10 - WebPromo SEO Day - "SEO-автоматизатор: кто он?" - Владислав Моргун
19.10 - WebPromo SEO Day - "SEO-автоматизатор: кто он?" - Владислав Моргун
 
Уменьшение влияния человеческого фактора при разработке бизнес приложений
Уменьшение влияния человеческого фактора при разработке бизнес приложенийУменьшение влияния человеческого фактора при разработке бизнес приложений
Уменьшение влияния человеческого фактора при разработке бизнес приложений
 
Быть в 10 раз эффективнее благодаря Groovy
Быть в 10 раз эффективнее благодаря GroovyБыть в 10 раз эффективнее благодаря Groovy
Быть в 10 раз эффективнее благодаря Groovy
 
Js fuckworks
Js fuckworksJs fuckworks
Js fuckworks
 
Node.js for enterprise 2021 - JavaScript Fwdays 3
Node.js for enterprise 2021 - JavaScript Fwdays 3Node.js for enterprise 2021 - JavaScript Fwdays 3
Node.js for enterprise 2021 - JavaScript Fwdays 3
 
Rich UI on Dojo Toolkit and Zend Framework
Rich UI on Dojo Toolkit and Zend FrameworkRich UI on Dojo Toolkit and Zend Framework
Rich UI on Dojo Toolkit and Zend Framework
 
Silverlight 5
Silverlight 5Silverlight 5
Silverlight 5
 
Расширяем идею статического анализа от проверки кода до других процессов разр...
Расширяем идею статического анализа от проверки кода до других процессов разр...Расширяем идею статического анализа от проверки кода до других процессов разр...
Расширяем идею статического анализа от проверки кода до других процессов разр...
 
Online TechTalk “Flutter Mobile Development”
Online TechTalk “Flutter Mobile Development”Online TechTalk “Flutter Mobile Development”
Online TechTalk “Flutter Mobile Development”
 
Дмитрий Сошников Искусственный интеллект и нейросети для .NET-разработчиков
Дмитрий Сошников    Искусственный интеллект и нейросети для .NET-разработчиковДмитрий Сошников    Искусственный интеллект и нейросети для .NET-разработчиков
Дмитрий Сошников Искусственный интеллект и нейросети для .NET-разработчиков
 
Фофанов Илья - Лучшие практики проектирования и реализации API на C#
Фофанов Илья - Лучшие практики проектирования и реализации API на C#Фофанов Илья - Лучшие практики проектирования и реализации API на C#
Фофанов Илья - Лучшие практики проектирования и реализации API на C#
 
Что нового в Visual Studio 2010 и .Net 4.0
Что нового в Visual Studio 2010 и .Net 4.0Что нового в Visual Studio 2010 и .Net 4.0
Что нового в Visual Studio 2010 и .Net 4.0
 

Más de Constantin Kichinsky

Прототипирование приложений в Expression Blend + Sketchflow
Прототипирование приложений в Expression Blend + SketchflowПрототипирование приложений в Expression Blend + Sketchflow
Прототипирование приложений в Expression Blend + SketchflowConstantin Kichinsky
 
Пользовательский интерфейс
Пользовательский интерфейсПользовательский интерфейс
Пользовательский интерфейсConstantin Kichinsky
 
Архитектура корпоративных систем
Архитектура корпоративных системАрхитектура корпоративных систем
Архитектура корпоративных системConstantin Kichinsky
 
Шаблоны проектирования 2
Шаблоны проектирования 2Шаблоны проектирования 2
Шаблоны проектирования 2Constantin Kichinsky
 
Шаблоны проектирования 1
Шаблоны проектирования 1Шаблоны проектирования 1
Шаблоны проектирования 1Constantin Kichinsky
 
Создание новых объектов
Создание новых объектовСоздание новых объектов
Создание новых объектовConstantin Kichinsky
 
jQuery: быстрая разработка веб-интерфейсов на JavaScript
jQuery: быстрая разработка веб-интерфейсов на JavaScriptjQuery: быстрая разработка веб-интерфейсов на JavaScript
jQuery: быстрая разработка веб-интерфейсов на JavaScriptConstantin Kichinsky
 
Django – фреймворк, который работает
Django – фреймворк, который работаетDjango – фреймворк, который работает
Django – фреймворк, который работаетConstantin Kichinsky
 
Ruby On Rails: Web-разработка по-другому!
Ruby On Rails: Web-разработка по-другому!Ruby On Rails: Web-разработка по-другому!
Ruby On Rails: Web-разработка по-другому!Constantin Kichinsky
 
Управление проектами
Управление проектамиУправление проектами
Управление проектамиConstantin Kichinsky
 
Код как низкоуровневая документация
Код как низкоуровневая документацияКод как низкоуровневая документация
Код как низкоуровневая документацияConstantin Kichinsky
 

Más de Constantin Kichinsky (20)

Brain to brain communications
Brain to brain communicationsBrain to brain communications
Brain to brain communications
 
Прототипирование приложений в Expression Blend + Sketchflow
Прототипирование приложений в Expression Blend + SketchflowПрототипирование приложений в Expression Blend + Sketchflow
Прототипирование приложений в Expression Blend + Sketchflow
 
JavaScript OOP
JavaScript OOPJavaScript OOP
JavaScript OOP
 
Пользовательский интерфейс
Пользовательский интерфейсПользовательский интерфейс
Пользовательский интерфейс
 
Архитектура корпоративных систем
Архитектура корпоративных системАрхитектура корпоративных систем
Архитектура корпоративных систем
 
Шаблоны проектирования 2
Шаблоны проектирования 2Шаблоны проектирования 2
Шаблоны проектирования 2
 
Шаблоны проектирования 1
Шаблоны проектирования 1Шаблоны проектирования 1
Шаблоны проектирования 1
 
Обработка ошибок
Обработка ошибокОбработка ошибок
Обработка ошибок
 
Создание новых объектов
Создание новых объектовСоздание новых объектов
Создание новых объектов
 
Декомпозиция
ДекомпозицияДекомпозиция
Декомпозиция
 
Design Lecture
Design LectureDesign Lecture
Design Lecture
 
jQuery: быстрая разработка веб-интерфейсов на JavaScript
jQuery: быстрая разработка веб-интерфейсов на JavaScriptjQuery: быстрая разработка веб-интерфейсов на JavaScript
jQuery: быстрая разработка веб-интерфейсов на JavaScript
 
Оптимизация SQL
Оптимизация SQLОптимизация SQL
Оптимизация SQL
 
Django – фреймворк, который работает
Django – фреймворк, который работаетDjango – фреймворк, который работает
Django – фреймворк, который работает
 
Ruby On Rails: Web-разработка по-другому!
Ruby On Rails: Web-разработка по-другому!Ruby On Rails: Web-разработка по-другому!
Ruby On Rails: Web-разработка по-другому!
 
Silverlight 2
Silverlight 2Silverlight 2
Silverlight 2
 
Управление проектами
Управление проектамиУправление проектами
Управление проектами
 
Silverlight 2
Silverlight 2Silverlight 2
Silverlight 2
 
Код как низкоуровневая документация
Код как низкоуровневая документацияКод как низкоуровневая документация
Код как низкоуровневая документация
 
Imagine Cup
Imagine CupImagine Cup
Imagine Cup
 

Último (9)

Cyberprint. Dark Pink Apt Group [RU].pdf
Cyberprint. Dark Pink Apt Group [RU].pdfCyberprint. Dark Pink Apt Group [RU].pdf
Cyberprint. Dark Pink Apt Group [RU].pdf
 
Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...
Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...
Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...
 
2023 Q4. The Ransomware report. [RU].pdf
2023 Q4. The Ransomware report. [RU].pdf2023 Q4. The Ransomware report. [RU].pdf
2023 Q4. The Ransomware report. [RU].pdf
 
СИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdf
СИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdfСИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdf
СИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdf
 
MS Navigating Incident Response [RU].pdf
MS Navigating Incident Response [RU].pdfMS Navigating Incident Response [RU].pdf
MS Navigating Incident Response [RU].pdf
 
Ransomware_Q3 2023. The report [RU].pdf
Ransomware_Q3 2023.  The report [RU].pdfRansomware_Q3 2023.  The report [RU].pdf
Ransomware_Q3 2023. The report [RU].pdf
 
Malware. DCRAT (DARK CRYSTAL RAT) [RU].pdf
Malware. DCRAT (DARK CRYSTAL RAT) [RU].pdfMalware. DCRAT (DARK CRYSTAL RAT) [RU].pdf
Malware. DCRAT (DARK CRYSTAL RAT) [RU].pdf
 
CVE. The Fortra's GoAnywhere MFT [RU].pdf
CVE. The Fortra's GoAnywhere MFT [RU].pdfCVE. The Fortra's GoAnywhere MFT [RU].pdf
CVE. The Fortra's GoAnywhere MFT [RU].pdf
 
ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...
ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...
ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...
 

Net 3.0 & Linq

  • 1. .NET 3.0 и LINQ Константин Кичинский [email_address] http://zelo-stroi.livejournal.com
  • 2. .NET 3.0 и LINQ обзор
  • 3. .NET 3.0 и LINQ обзор обзор
  • 4. .NET 3.0 и LINQ обзор обзор . NET 3.5
  • 10. .NET
  • 11. .NET
  • 12. .NET
  • 13. Windows Presentation Foundation
  • 21. User Experience в ПО, как выйти на новый уровень ? Преимущества для пользователя Интерактивность Оптимизация под форм факторы Читабельность Производительность – GPU Красота - эмоциональность Преимущества для разработчика Простота разработки Универсальность работы с графикой & Media Богатство возможностей платформы Инструментарий Windows Vista Office 2007 Эффект UX Мотивация Продуктивность Удовлетворенность Положительные эмоции Повторное использование
  • 22.
  • 23.
  • 24.
  • 25. Взаимодействие дизайнера и разработчика Создает дизайн Добавляет бизнес логику Дизайнер Разработчик
  • 26. Взаимодействие дизайнера и разработчика Дизайнер Разработчик
  • 27. Взаимодействие дизайнера и разработчика Дизайнер Разработчик
  • 28.
  • 29.
  • 30.
  • 31. Property Engine Input / Eventing System .NET Framework 2.0 Desktop Windows Manager Media Integration Layer DirectX Windows Vista Display Driver (LDDM) Windows Media Foundation Composition Engine Print Spooler Managed Unmanaged Application Services Deployment Services Databinding USER INTERFACE SERVICES XAML Accessibility Property System Input & Eventing BASE SERVICES DOCUMENT SERVICES Packaging Services XPS Documents Animation 2D 3D Audio Imaging Text Video Effects Composition Engine MEDIA INTEGRATION LAYER Controls Layout Windows Presentation Foundation XPS Viewer
  • 32. Архитектура WPF Application Services Deployment Services Databinding USER INTERFACE SERVICES XAML Accessibility Property System Input & Eventing BASE SERVICES DOCUMENT SERVICES Packaging Services XPS Documents Animation 2D 3D Audio Imaging Text Video Effects Composition Engine MEDIA INTEGRATION LAYER Controls Layout
  • 33.
  • 34.
  • 35. WCF & WWF &CardSpace .NET 3.0 Part 2 Следующая пятница!
  • 36. .NET 3.0 и LINQ обзор обзор
  • 37. Эволюция C# C# 1.0 C# 2.0 C# 3.0 Управляемый код ( сборка мусора, reflection, …) Generics (родовое программирование, статическая параметризация типов) Декларативное программирование Language Integrated Query
  • 39. LINQ
  • 40. Language Integrated Query LINQ to Entities LINQ To SQL LINQ to XML C# VB.Net Others… LINQ To Dataset LINQ To Objects LINQ-enabled ADO.NET
  • 41. Query Expressions var L = new List <Person> { new Person{ Name= &quot;Vasya&quot; , Age= 16 , Speciality= 1 }, new Person{ Name= &quot;Petya&quot; , Age= 20 , Speciality= 2 }, new Person{ Name= &quot;Kolya&quot; , Age= 20 , Speciality= 1 } }; var Spec = new List <Speciality> { new Speciality{Code= 1 , Title= &quot;Math&quot; }, new Speciality{Code= 2 , Title= &quot;CS&quot; } }; var res = from x in L where x.Age> 16 select x.Name; var res = from s in L join sp in Spec on s.Speciality equals sp.Code select new { s.Name, sp.Title }; var res2 = from s in L group s by s.Speciality into g select new { SpecCode=g.Key, NoOfStudents = g.Count(), Students = from x in g select x };
  • 42. Query Expressions — синтаксис from id in source { from id in source | join id in source on expr equals expr [ into id ] | let id = expr | where condition | orderby ordering , ordering , … } select expr | group expr by key [ into id query ] Начинается с from 0 или более from , join , let , where или orderby Заканчивается select или group by into позволяет продолжить запрос
  • 43. Операции Ограничение Where Проекция Select, SelectMany Упорядочивание OrderBy, ThenBy Группировка GroupBy Joins Join, GroupJoin Квантификация Any, All Разбиение Take, Skip, TakeWhile, SkipWhile Множественные Distinct, Union, Intersect, Except Выбор элементов First, Last, Single, ElementAt Агрегирование Count, Sum, Min, Max, Average Преобразование ToArray, ToList, ToDictionary Приведение типов OfType<T>, Cast<T>
  • 44.
  • 45. Доступ к реляционным данным var result = from x in students select { x.Name, AvgGrade = (int) ( from g in grades where g.STUD_ID == x.STUD_ID select g).Average(g=>g.GRADE) } var db = new StudDbDataContext(connStr); var students = db.GetTable <STUDENT> (); var grades = db.GetTable <GRADES> ();
  • 46. Доступ к данным сегодня и завтра SqlConnection c = new SqlConnection(connStr); c.Open(); SqlCommand cmd = new SqlCommand( @ &quot;SELECT s.Name, s.Group FROM Students s WHERE s.Speciality = @p0&quot; ); cmd.Parameters.AddWithValue( &quot;@p0&quot; , “1“ ); DataReader dr = c.Execute(cmd); while (dr.Read()) { StudList.Add( new Student(dr.GetString(0), dr.GetInt(1))); } dr.Close(); var db = new StudDbDataContext(connStr); var students = db.GetTable <STUDENT> (); var StudList = from s in students where s.Speciality=1 select new Student(s.Name, s.Group);
  • 47.
  • 48.
  • 49. Список всех студентов: сегодня var xdoc = new XmlDocument (); xdoc.Load( &quot;students.xml&quot; ); foreach ( XmlElement x in xdoc.SelectNodes( &quot;//Students/Student&quot; )) { int s=0, n=0; foreach ( XmlElement y in x.SelectNodes( &quot;Grades/Grade&quot; )) { n++; s += int.Parse(y.Attributes[ &quot;Value&quot; ].Value); } Console .WriteLine( &quot;{0} -> {1}&quot; , x.Attributes[ &quot;Name&quot; ].Value, s/n); }
  • 50.
  • 51. Генерация XML сегодня XmlDocument doc = new XmlDocument (); XmlElement students = doc.CreateElement( “students&quot; ); foreach ( Student s in studentsList) { XmlElement e = doc.CreateElement( “student&quot; ); XmlElement name = doc.CreateElement( &quot;name&quot; ); name.InnerText = s.Name; e.AppendChild(name); XmlElement group = doc.CreateElement( “group&quot; ); group.InnerText = s.Group; e.AppendChild(group); students.AppendChild(e); } doc.AppendChild(students); <students> <student> <name>Petya</name> <group> 806 </group> </student> … </students> Императивная модель Ориентация на документ Нет встроенных запросов Требования к памяти
  • 52. Генерация XML в XLinq var studs = new List <Student> { new Student {Name= &quot;Vasya&quot; , Age= 10 , Speciality= &quot;CS&quot; }, new Student {Name= &quot;Petya&quot; , Age= 1 6, Speciality= &quot;Math&quot; }}; var XDoc = new XDocument ( new XDeclaration ( &quot;1.0&quot; , &quot;utf-8&quot; , &quot;yes&quot; ), new XComment ( &quot;Student List&quot; ), new XElement ( &quot;Students&quot; , from x in studs select new XElement ( &quot;Student&quot; , new XAttribute ( &quot;Name&quot; , x.Name), new XAttribute ( &quot;Age&quot; , x.Age)))); Console .WriteLine(Xdoc); <!--Student List--> < Students > < Student Name= &quot;Vasya&quot; Age= &quot;10&quot; /> < Student Name= &quot;Petya&quot; Age= &quot;16&quot; /> </ Students >
  • 53.
  • 54.
  • 55.
  • 56.
  • 57.
  • 58. .NET 3.0 и LINQ Константин Кичинский [email_address] http://zelo-stroi.livejournal.com