Similar presentations:
Проектирование баз данных и работа с ними веб-приложений. (Лекция 8)
1. Современные веб-технологии
Подробный курсСовременные
веб-технологии
Проектирование баз данных и
работа с ними Веб-приложений.
LINQ, ADO.NET Entities, DDD
2. LINQ
Integrated Query (LINQ) – проектMicrosoft по добавлению синтаксиса языка
запросов, напоминающего SQL, в языки
программирования платформы .NET
Framework
LINQ выпущен вместе с Visual Studio 2008 в
конце ноября 2007 года.
Запрашиваемые данные могут быть
представлены в форме:
Language
XML (запросы LINQ к XML)
баз данных (LINQ к SQL, LINQ к наборам данных
и LINQ к экземплярам)
объектов (LINQ к объектам) и т.д.
2
3. Архитектура LINQ
C#Другие языки
Visual Basic
.NET Language Integrated Query (LINQ)
Источники данных с поддержкой LINQ
ADO.NET с поддержкой LINQ
LINQ –
Объекты
LINQ –
Наборы
данных
LINQ –
SQL
LINQ –
Объекты
LINQ –
XML
<person>
<firstName>Иван
</firstName>
<lastName>Иванов
</lastName>
</person>
Объектные
Реляционные
XML
3
4. Примеры написания запроса LINQ на языке C#
Интегрированныйзапрос
var contacts =
from c in customers
where c.State == “WA”
select new { с.Name, c.Phone };
Типизирование
переменной
Лямбдавыражение
var contacts =
customers
.Where(c => c.State == “WA”)
.Select (c => new { с.Name, c.Phone });
Методырасширения
Анонимные
типы
Упрощенная
инициализация
объекта
4
5. Операция запроса в LINQ
Источник: Введение в запросы LINQ ,http://msdn.microsoft.com/ru-ru/library/bb397926.aspx
5
6. LINQ to SQL
to SQL – простая, но достаточно мощнаясистема объектно-реляционного отображения
(ORM)
LINQ to SQL позволяет производить
отображение реляционных данных на
объектную модель
LINQ to SQL поддерживает все основные
возможности, необходимые для разработчиков,
на SQL:
LINQ
Выбор
Вставка
Обновление
Удаление
6
7. Работа с реляционными данными по технологии ADO.NET
SqlConnection c = new SqlConnection(…);c.Open();
SqlCommand cmd = new SqlCommand(
"SELECT c.Name, c.Phone
FROM Customers c
WHERE c.City = @p0");
cmd.Parameters.AddWithValue("@p0", "London");
DataReader dr = c.Execute(cmd);
while (dr.Read()) {
string name = dr.GetString(0);
string phone = dr.GetString(1);
DateTime date = dr.GetDateTime(2);
}
dr.Close();
Запрос в
кавычках
Аргументы без
строгих границ
Нетипизированные
возвращаемые
значения
Нет ошибок
времени
компиляции
7
8. Работа с реляционными данными по технологии LINQ to SQL
public class Customer { … }public class Northwind : DataContext
{
public Table<Customer> Customers;
…
}
Northwind db = new Northwind(…);
var contacts =
from c in db.Customers
where c.City = "London"
select new { c.Name, c.Phone };
Объектное
описание
данных
Таблицы описаны
как коллекции
Строго типизированное
соединение
Интегрированный
синтаксис запросов
Строго типизированные
возвращаемые значения
8
9. Отображение LINQ to SQL
DatabaseDataContext
Table
Class
View
Class
Column
Field / Property
Relationship
Field / Property
Stored Procedure
Method
9
10. ADO.NET Entity Framework
Framework (EF) – объектноориентированная технология доступа кданным, является object-relational mapping
(ORM) решением для .NET Framework от
Microsoft
Возможность взаимодействия посредством
LINQ to Entities и с использованием Entity SQL
Используется ADO.NET Data Services и связка
из Windows Communication Foundation и
Windows Presentation Foundation
ADO.NET Entity
10
11. Преимущества приложений ADO.NET Entity Framework
Могутработать концептуальной моделью в
терминах предметной области
Освобождаются от жестких зависимостей от
конкретного ядра СУБД или схемы хранения
Сопоставления между концептуальной
моделью и схемой, специфичной для
конкретного хранилища
Возможность работы с согласованной моделью
объектов приложения, которая может быть
сопоставлена с различными схемами хранения
Несколько концептуальных моделей могут
быть сопоставлены с единой схемой хранения
Поддержка LINQ
11
12. Компоненты Entity Framework
МодельEntity Data Model (EDM)
Компонент Object Services
Компонент LINQ to Entities
Язык Entity SQL
Поставщик EntityClient
Компонент метаданных ADO.NET
Набор средств, которые создают
сопоставления и разделяемые классы,
представляющие сущности концептуальной
модели
Поставщик данных SqlClient
12
13. Entity Data Model
SSDLMSL
CSDL
Бизнесэлемент
Концептуальный
Объект
Объект
Сопоставление
Логическое хранилище
Таблица Таблица Таблица
Реляционные
данные
13
14. Архитектура Entity Framework
СущностьSQLзапроса
LINQ
To
Entities
IEnumerable
<T>
Службы объектов
EDM
Концептуальная
модель
Сущность
SQLзапроса
Дерево
команд
EntityDataReader
Сопоставение
Поставщик данных EntityClient
Тип хранения
Дерево
команд
DBDataReader
Поставщик данных ADO.NET
Источник данных
14
15. Проблемно-ориентированное проектирование
Проблемно-ориентированное проектирование(Domain-Driven Design, DDD) является подходом к
разработке программного обеспечения для решения
сложных задач, глубоко связывающем реализацию
программной систем с развивающейся моделью
бизнес-концепций
Свойства DDD:
фокусировка проекта на основной проблемной области
(домене) и бизнес-логике этой области
базирование всего проектирования на модели
введение творческого сотрудничества между
техническими экспертами и экспертами в проблемной
области, чтобы максимально понять концептуальную
суть проблемы
15
16. Основные понятия DDD
Домен(проблемная область)
Модель
Общеупотребительный язык (Ubiquitous
Language)
Контекст
16
17. Основные аспекты DDD
DDDМодель
Архитектура
Дизайн/
проектирование
17
18. Архитектурный аспект DDD
Сущность(Entity)
Объект со значением (Value Object)
Агрегат (Aggregate)
Службы (Services)
Репозитории (Repositories)
Фабрики (Factories)
18