SlideShare una empresa de Scribd logo
1 de 73
DomainDrivenDesign в условиях разработки распределенных приложений  Николай Гребнев 1
Содержание Что такое DDD? Распределенные приложения Проблемы DDD в распределенных приложениях Как быть? Принимаем решение Подводим итоги 2
Что такое DDD? 3
DDD – DataDisplayDebugger? 4
DDD – Domain Driven Design! 5
Domain Driven Design 6
Domain Driven Design Проектирование по модели – проектирование архитектуры, при котором соблюдается максимально точное соответствие между некоторым подмножеством элементов программы и элементами модели (Эрик Эванс) 7
Domain Driven Design 8
Модель программы 9
Модель предметной области 10
Модель программы Модель предметной области DataSet DataReader Command DataAdapter Connection И т. д. Книга Автор Издатель Читатель И т. д. 11
Модель предметной области 12
Domain Driven Design DDD – проекция языка предметной области на объектно ориентированный язык программирования 13
Почему DDD? Эффективный способ борьбы со сложностью Единый язык Низкая стоимость разработки и сопровождения 14
Почему DDD в Agile? Расстояние между заказчиком и разработчиком невелико Заказчик и разработчик разговаривают на одном языке Итеративная разработка – постепенное изменение модели 15
ORM (Object-relational mapping) ORM – технология программирования для конвертации данных между несовместимыми типами систем в объектно-ориентированные языки 16
ORM 17
ORM ≠ DDD 18
Архитектурные стили при работе  с ORM 19
Rich VS Anemic 20
Rich 21
Anemic 22
Anemic? 23 ORM?
Rich! 24
Распределенные приложения 25
Шаблоны распределенных архитектур Клиент-Сервер 3-хзвенная (многозвенная) архитектура SOA Enterprise Service Bus 26
Клиент-Сервер БД Клиент 27
3-х звенная архитектура БД Сервер приложений Клиент 28
SOA Сервис 1 29 Сервис 2 Сервис 3
Enterprise Service Bus Система 1 Система 2 Система 3 ESB 30
Почему распределенная архитектура? Безопасность Эффективность Совместная работа 31
DDD в распределенных приложениях 32
Клиент Клиент-Сервер БД ORM Доменная модель 33
Проблемы? 34
Нет проблем! БД Доменная модель ORM 35
3-х звенная архитектура Сервер приложений Клиент БД ORM Доменная модель клиента Доменная модель сервера 36
Проблемы? 37
Проблемы Как? Построить взаимодействие с сервером  Преобразовать данные в доменную модель на клиенте 38 ? Доменная модель клиента ?
SOA ORM Доменная модель 2 Доменная модель 3 Доменная модель 1   БД Сервис 1 Сервис 2 Сервис 3 39
Проблемы? 40
Проблемы Как? Построить взаимодействие другими сервисами Преобразовать данные в локальную доменную модель 41 ? Доменная модель ?
Проблемы Как?  Сочетать использование ORM и работу с другими сервисами? 42 БД Доменная модельсервиса ORM
Enterprise Service Bus Доменная модель 2 Доменная модель 3 ORM Доменная модель 1   БД Система 3 Система 2 Система 1 ESB 43
Проблемы? 44
Проблемы Как? Построить взаимодействие с шиной Преобразовать данные из шины в доменную модель 45 ESB ? ESB Доменная модель системы ?
Проблемы Как?  Сочетать использование ORM и работу с шиной 46 БД Доменная модельсервиса ORM ESB
Проблемы в DDD в распределенных приложениях Взаимодействие с удаленными  источниками данных 47 ?
Проблемы в DDD в распределенных приложения Преобразование данных из удаленных источников в доменную модель 48 Данные Доменная модель системы ?
Сервис временно недоступен Соединение Распределенная архитектура вносит в модель объекты отсутствующие в предметной области Данные по запросу
Проблемы в DDD в распределенных приложения Сочетание различных источников данных 50 Доменная модель Данные Данные
Развитие DDD 51 2002 год 2003 год 2008 год
Причины Отсутствие шаблонов для удаленного взаимодействия  Отсутствие готовых инструментальных средств 52
Как быть? 53
Шаблоны удаленного взаимодействия
RPC (Remote Procedure Call) .NET Remoting CORBA WCF и т. д. 55
Почему нет? 56
Почему нет? Доменные модели разные Стоимость удаленного вызова на порядки выше стоимости локалького 57
Data Transfer Object
Доменная модель 2 Доменная модель 1 DTO 59
60 Доменная модель DTO
Инструменты
Что делать? 62 Логика преобразования данных и удаленного взаимодействия Модель предметной области
Что делать? Разработать инструментарий 63
Принимаем решение 64
Клиент-сервер Множество инструментов и платформ Готовые архитектурные шаблоны DDD – выгодно 65
3-х звенная архитектура Тонкий клиент – см. клиент-сервер Толстый клиент: Мало логики – не использовать DDD на клиенте Средне логики – помещать инфраструктурный код в доменную модель Много логики – разработать свой слой преобразования данных 66
SOA и ESB Удаленного взаимодействия немного –   поместить логику преобразования данных в доменную модель Иначе – разработать свой слой преобразования данных 67
Подводим итоги 68
Распределенная архитектура – данность
Что нам дает DDD Эффективный способ борьбы со сложностью Единый язык Низкая стоимость разработки и сопровождения 70
Но есть проблемы!
Так что же делать? Оценить: Сложность доменной модели Необходимость сильно распределенной архитектуры Стоимость разработки собственных инструментов 72
Вопросы? Докладчик: Николай Гребнев e-mail: ngrebnev@gmail.com http://www.slideshare.net/ngrebnev/domain-driven-design-6988494 73

Más contenido relacionado

Similar a Domain Driven Design в условиях разработки распределенных приложений

Базы данных лекция №11
Базы данных лекция №11Базы данных лекция №11
Базы данных лекция №11Vitaliy Pak
 
Как использовать Rapid SQL для ускорения разработки SQL и другого кода для СУБД
Как использовать Rapid SQL для ускорения разработки SQL и другого кода для СУБДКак использовать Rapid SQL для ускорения разработки SQL и другого кода для СУБД
Как использовать Rapid SQL для ускорения разработки SQL и другого кода для СУБДAndrew Sovtsov
 
DDD — правильный курс в потоке изменений требований
DDD — правильный курс в потоке изменений требованийDDD — правильный курс в потоке изменений требований
DDD — правильный курс в потоке изменений требованийSQALab
 
Практика разработки корпоративных веб приложений 2007
Практика разработки корпоративных веб приложений 2007Практика разработки корпоративных веб приложений 2007
Практика разработки корпоративных веб приложений 2007rglab
 
DDD: проблемы и решения при отражении модели предметной области в код
DDD: проблемы и решения при отражении модели предметной области в кодDDD: проблемы и решения при отражении модели предметной области в код
DDD: проблемы и решения при отражении модели предметной области в кодCUSTIS
 
Шаблоны интеграции - актуальные инструменты и решения
Шаблоны интеграции - актуальные инструменты и решенияШаблоны интеграции - актуальные инструменты и решения
Шаблоны интеграции - актуальные инструменты и решенияAlexander Byndyu
 
Применение DDD подхода в Symfony 2 приложении
Применение DDD подхода в Symfony 2 приложенииПрименение DDD подхода в Symfony 2 приложении
Применение DDD подхода в Symfony 2 приложенииАнтон Шабовта
 
2013 09 17 архитектура веб-приложений
2013 09 17 архитектура веб-приложений2013 09 17 архитектура веб-приложений
2013 09 17 архитектура веб-приложенийYandex
 
Presentation zwcad2011
Presentation zwcad2011Presentation zwcad2011
Presentation zwcad2011ZWCAD Support
 
Entity Framework & Code First
Entity Framework & Code FirstEntity Framework & Code First
Entity Framework & Code FirstIlya Polishchuk
 
введение в SharePoint
введение в SharePointвведение в SharePoint
введение в SharePointIvan Padabed
 
Как пишутся и поддерживаются Enterprise системы
Как пишутся и поддерживаются Enterprise системыКак пишутся и поддерживаются Enterprise системы
Как пишутся и поддерживаются Enterprise системыSergey Nemchinsky
 
Строим простые и масштабируемые бекэнды
Строим простые и масштабируемые бекэндыСтроим простые и масштабируемые бекэнды
Строим простые и масштабируемые бекэндыDenis Ivanov
 
Поддержка NoSQL и платформ MongoDB, Hive и Teradata в продуктах Embarcadero
Поддержка NoSQL и платформ MongoDB, Hive и Teradata  в продуктах EmbarcaderoПоддержка NoSQL и платформ MongoDB, Hive и Teradata  в продуктах Embarcadero
Поддержка NoSQL и платформ MongoDB, Hive и Teradata в продуктах EmbarcaderoAndrew Sovtsov
 
Миграция БД - практический_подход с инструментами Embarcadero
Миграция БД - практический_подход с инструментами EmbarcaderoМиграция БД - практический_подход с инструментами Embarcadero
Миграция БД - практический_подход с инструментами EmbarcaderoAndrew Sovtsov
 

Similar a Domain Driven Design в условиях разработки распределенных приложений (20)

DDD Workshop
DDD WorkshopDDD Workshop
DDD Workshop
 
Базы данных лекция №11
Базы данных лекция №11Базы данных лекция №11
Базы данных лекция №11
 
Как использовать Rapid SQL для ускорения разработки SQL и другого кода для СУБД
Как использовать Rapid SQL для ускорения разработки SQL и другого кода для СУБДКак использовать Rapid SQL для ускорения разработки SQL и другого кода для СУБД
Как использовать Rapid SQL для ускорения разработки SQL и другого кода для СУБД
 
DDD — правильный курс в потоке изменений требований
DDD — правильный курс в потоке изменений требованийDDD — правильный курс в потоке изменений требований
DDD — правильный курс в потоке изменений требований
 
Diplom 1
Diplom 1Diplom 1
Diplom 1
 
MW
MWMW
MW
 
Практика разработки корпоративных веб приложений 2007
Практика разработки корпоративных веб приложений 2007Практика разработки корпоративных веб приложений 2007
Практика разработки корпоративных веб приложений 2007
 
DDD: проблемы и решения при отражении модели предметной области в код
DDD: проблемы и решения при отражении модели предметной области в кодDDD: проблемы и решения при отражении модели предметной области в код
DDD: проблемы и решения при отражении модели предметной области в код
 
C# 3.0
C# 3.0C# 3.0
C# 3.0
 
Шаблоны интеграции - актуальные инструменты и решения
Шаблоны интеграции - актуальные инструменты и решенияШаблоны интеграции - актуальные инструменты и решения
Шаблоны интеграции - актуальные инструменты и решения
 
Применение DDD подхода в Symfony 2 приложении
Применение DDD подхода в Symfony 2 приложенииПрименение DDD подхода в Symfony 2 приложении
Применение DDD подхода в Symfony 2 приложении
 
2013 09 17 архитектура веб-приложений
2013 09 17 архитектура веб-приложений2013 09 17 архитектура веб-приложений
2013 09 17 архитектура веб-приложений
 
Presentation zwcad2011
Presentation zwcad2011Presentation zwcad2011
Presentation zwcad2011
 
Entity Framework & Code First
Entity Framework & Code FirstEntity Framework & Code First
Entity Framework & Code First
 
введение в SharePoint
введение в SharePointвведение в SharePoint
введение в SharePoint
 
Как пишутся и поддерживаются Enterprise системы
Как пишутся и поддерживаются Enterprise системыКак пишутся и поддерживаются Enterprise системы
Как пишутся и поддерживаются Enterprise системы
 
Final bruce
Final bruceFinal bruce
Final bruce
 
Строим простые и масштабируемые бекэнды
Строим простые и масштабируемые бекэндыСтроим простые и масштабируемые бекэнды
Строим простые и масштабируемые бекэнды
 
Поддержка NoSQL и платформ MongoDB, Hive и Teradata в продуктах Embarcadero
Поддержка NoSQL и платформ MongoDB, Hive и Teradata  в продуктах EmbarcaderoПоддержка NoSQL и платформ MongoDB, Hive и Teradata  в продуктах Embarcadero
Поддержка NoSQL и платформ MongoDB, Hive и Teradata в продуктах Embarcadero
 
Миграция БД - практический_подход с инструментами Embarcadero
Миграция БД - практический_подход с инструментами EmbarcaderoМиграция БД - практический_подход с инструментами Embarcadero
Миграция БД - практический_подход с инструментами Embarcadero
 

Domain Driven Design в условиях разработки распределенных приложений