Практика применения Enterprise Architect и T4-шаблонов для...
Transcript of Практика применения Enterprise Architect и T4-шаблонов для...
11 апреля 2015 года
Практика применения
Enterprise Architect и T4-шаблонов
для разработки системы
на Microsoft SQL Server
Павел Музыка
Технический лидер, группа компаний CUSTIS
О себе
В промышленной разработке
с 2005 года
В CUSTIS c февраля 2012 года
Специализируюсь на создании
Desktop-приложений
Сертифицированный разработчик
.NET, MS SQL, WinForms и WPF
2/30
О компании
Проектирование
и заказная разработка
систем Enterprise-
масштаба
Для крупных банков,
торговых сетей,
предприятий госсектора
Oracle + Java
Oracle + C#,
Desktop-приложения
на WinForms и WPF
3/30
План
Контекст реальной задачи
Слагаемые успеха
Enterprise Architect
Шаблоны T4
Автотесты
Continuous Integration + Delivery
4/30
Где я?
Контекст реальной задачи
Слагаемые успеха
Enterprise Architect
Шаблоны T4
Автотесты
Continuous Integration + Delivery
5/30
Реальная задача
Система в Microsoft SQL Server 2008 R2
…полностью
Три внешних источника данных
…после полугода разработки появился
четвертый
Математически сложные алгоритмы
обработки данных внутри системы
Ежедневное формирование отчетов
Адаптация к существующей системе
автоформ
6/30
Где я?
Контекст реальной задачи
Слагаемые успеха
Enterprise Architect
Шаблоны T4
Автотесты
Continuous Integration + Delivery
7/30
Слагаемые успеха. Процессы
Model First + кодогенерация
Автотесты для базы данных
Доработки и исправления
в стиле TDD
Continuous Integration +
Delivery = выпуск версии
занимает 10 минут
8/30
Слагаемые успеха. Инструменты
Enterprise Architect для Model First
Шаблоны T4:
Отделение инфраструктуры от логики
Дешевое внесение изменений
в инфраструктуру
Удобная навигация по исходному коду
Excel для подготовки тестовых данных
аналитиком
+ =
9/30
Где я?
Контекст реальной задачи
Слагаемые успеха
Enterprise Architect
Шаблоны T4
Автотесты
Continuous Integration + Delivery
10/30
Model First
Трансформация
Физическая модельЛогическая модель
11/30
Model First
Трансформация
Физическая модель
Magic
Логическая модель
11/30
Enterprise Architect как инструмент
моделирования
Множество нотаций и представлений
Трансформация представлений
Генерация DDL-скриптов
Хранение моделей в Subversion
или в базе данных + версионирование
Возможность писать плагины
12/30
Тюнинг Enterprise Architect
Трансформация
Физическая модель
Magic
Логическая модель
13/30
Доработка трансформации
Создание колонок для первичного
и внешнего ключей, констрейнтов
Создание фискальных и служебных
колонок для всех таблиц
Трансформация перечислений
как особый вид трансформации
14/30
Magic
Magic
Тюнинг Enterprise Architect – 2
Физическая модель
15/30
Плагин для Enterprise Architect
Генерация вспомогательных классов
для поддержки IntelliSense в T4-шаблонах
Генерация перечислений
для перечислений
16/30
Где я?
Контекст реальной задачи
Слагаемые успеха
Enterprise Architect
Шаблоны T4
Автотесты
Continuous Integration + Delivery
17/30
Шаблоны T4
T4 = Text Template Transformation Toolkit
Файл с расширением *.tt или *.ttinclude
Встроенный в Visual Studio
(начиная с 2008) движок кодогенерации
Позволяет писать логику шаблона на C#
или VB.NET
Позволяет генерировать любой код
Шаблоны могут быть переиспользуемыми
(наследование, включение)
18/30
Простейший шаблон T4
Шаблон T4
Результат
19/30
Пример с бизнес-правилами
Выглядит как C#...
…это и есть C#
Отсутствуют инфраструктурные подробности
Результат – сгенерированный фрагмент
хранимой процедуры
20/30
21/30
21/30
21/30
Перекладывание данных
Полуавтоматический маппинг колонок
Опять нет инфраструктурного кода
Фокусировка только на бизнес-логике
Результат – опять простыня SQL-кода
22/30
23/30
23/30
Использование констант
24/30
Использование констант
24/30
Где я?
Контекст реальной задачи
Слагаемые успеха
Enterprise Architect
Шаблоны T4
Автотесты
Continuous Integration + Delivery
25/30
Автотесты
Автотесты на C#
Excel как источник эталонных данных
Данные готовит аналитик
Выполняются на сервере CI на каждый
коммит
Smoke-тесты для публичного интерфейса
26/30
Где я?
Контекст реальной задачи
Слагаемые успеха
Enterprise Architect
Шаблоны T4
Автотесты
Continuous Integration + Delivery
27/30
Continuous Integration + Delivery
Крупные коммиты (законченные блоки
функционала)
TeamCity – сервер для процессов CI и CD
На каждый коммит прогоняется пакет
автотестов
После каждого удачного коммита система
готова к выпуску очередной версии
PowerShell-скрипты для развертывания
версии
28/30
Основные ресурсы
Enterprise Architect:
Описание на официальном сайте
Шаблоны T4:
Architecture of Text Templates
Oleg Sych Blog
Q&A at stackoverflow.com
Google Search
Семинар про T4 (Реальная кодогенерация):
Видео на vimeo
Исходники на github29/30