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