Расширение функциональности с использованием метаданных и аспектно-ориентированного программирования Александр Межов ОАО ЧЭМК

Презентация:



Advertisements
Похожие презентации
Microsoft TechDays Межов Александр Разработчик ПО ОАО ЧЭМК
Advertisements

Аспектно-ориентированный подход на службе веб- приложений Цытович Павел Леонидович Fuse8, Южно-Уральский государственный университет
Ресурсы WPF Два типа ресурсов WPF: объектные ресурсы (object resource) – определенный.NET-объект, который можно использовать многократно; ресурсы сборки.
IronRuby: внутренности и примеры использования Рахматиллаев Тимур IndyCode 3-я конференция.NET разработчиков 25 сентября 2011.
©Павловская Т.А. (СПбГУ ИТМО) Курс «С#. Программирование на языке высокого уровня» Павловская Т.А.
Аспектно-ориентированное программирование Copyright © Мигинский Д.С.,
Обзор возможностей Инверсия управления Аспектно-ориентированное программирование.
Алексей Игнатенко. Независимый программный модуль, обычно подключаемый на этапе выполнения программы.
Задачи проектирования ИПС: Анализ предметной области Определение структуры ИПС Определение видов поиска документов в ИПС Разработка структуры БД для ИПС.
Создание Workflow с помощью Visual Studio 2010 Сергей Бельский Украинская Лизинговая Компания MVP SharePoint Server.
Версия сборки Номер версии сборки имеет формат major.minor.build.revision. Например, Значения major(старший), minor(младший), build (компоновка)
ДонНУ, кафедра КТ, проф.В.К.Толстых WCF-службы Создание и тестирование.dll-библиотеки WCF-служб Из цикла лекций «Internet-технологии разработки приложений»
Автоматизированное тестирование веб-приложений Вадим Кадученко.
Обзор возможностей Инверсия управления Аспектно-ориентированное программирование.
КРУПНЕЙШАЯ ТЕХНИЧЕСКАЯ КОНФЕРЕНЦИЯ MICROSOFT В УКРАИНЕ.
Полиморфизм. Полиморфизм – это свойство системы использовать объекты с одинаковым интерфейсом без информации о типе и внутренней структуре объекта.
Основы информатики Классы Заикин Олег Сергеевич zaikin.all24.org
Базы данных – это совокупность сведений (о реальных объектах, процессах, событиях или явлениях), относящихся к определенной теме или задаче, организованная.
ADO.NET Data Services Данила Корнев Developer Evangelist Microsoft Россия Установите Silverlight 1.0 для просмотра демонстрации:
Автоматическая генерация схемы реляционной базы данных на основе объектной схемы данных Богданов Алексей.
Транксрипт:

Расширение функциональности с использованием метаданных и аспектно-ориентированного программирования Александр Межов ОАО ЧЭМК 3-я конференция.NET разработчиков 25 сентября 2011

Немного теории

Metadata Метаданные (Metadata) Данные об объекте, характеризующие его в некотором контексте использования (аспекте)

Aspect Аспект (Aspect) Сквозная (инфраструктурная) функциональность, которая инкапсулирует некоторое общее поведение

Примеры аспектов Обработка ошибок Трассировка запросов Проверка прав доступа Аудит (логирование) изменений...

Join point Точка слияния (Join point) Место, куда будет встроен код аспекта (например, вызов метода)

Advice Подача (Advice) Встраиваемый код, который может быть выполнен до, после или в самой точке соединения

Metadata & Aspect Metadata Aspect 1 Aspect 2 Aspect 3

Реализации PostSharp Подача через атрибуты Aspect.NET Подача через атрибуты Spring.NET AOP Подача через перехват вызовов Unity Подача через перехват вызовов

Подача через атрибуты

Просто добавлять (+) Можно тестировать (+) Экземпляры создаются через new (+) Сложно модифицировать (–) Увеличивает связность аспектов (–)

Слишком много атрибутов

Подача через перехват вызовов

Подача через атрибуты Просто добавлять (+) Можно тестировать (+) Просто модифицировать (+) Аспекты никак не связаны (+) Экземпляры создаются через фабрику (–)

Unity & AOP

Перехват методов интерфейса Перехват методов класса (virtual, abstract) Возможности Unity Proxy Target Client Перехват чики Interceptors

Demo: Unity Interception

Аудит изменений Вариант решения

Что будем использовать Unity 2.0 Unity 2.0 Unity Application Block (Unity)

Metadata & Aspect Metadata History Aspect … … … …

Работа с метаданными Создаются для определенного типа Содержат информацию об аспектах Хранятся в отдельной сборке (сборках)

Пример метаданных Определение типа: Определение метаданных для типа: Аспект истории

Поиск метаданных Сборка метаданных:..\Metadata\{Type Assembly}.Metadata.dll Класс метаданных: {Type Name}Metadata : IMetadata

Аспект истории Формирует список изменений (change set) для конкретного действия с данными: Inset, Update и Delete

Перехватчик для аудита Перехватывает вызовы хранилища (repository) в момент создания, изменения или удаления объекта

Регистрация перехватчика Где-то на этапе инициализации приложения…

Как использовать?

Demo: History Aspect

Ссылки Материалы конференции Аспектно-ориентированное программирование, перехват и Unity 2.0 (Дино Эспозито) Перехватчики в Unity (Дино Эспозито)

Спасибо за внимание Александр Межов ОАО ЧЭМК