2. Каждый раз приходится заново решать одни и те же задачи?
"Копипастите" из проекта в проект?
Приходится повсюду использовать наборы узкоспециализированных библиотек?
(из разряда log4net, unity, nunits, ...)
Даже небольшие фантазии заказчика отражается головной болью и большими
изменениями?
Изменения в одном месте влекут за собой проблемы в других местах проекта?
Мечтаете об архитектурных решениях?
5. программная платформа широкого назначения
интегрируется во все слои приложения
разработан на .NET 4 (Client profile)
портирован под Silverlight 4
проект стартовал осенью 2008г
распространяется по лицензии LGPL:
с открытым исходным кодом
бесплатный
можно использовать для разработки коммерческого ПО
принцип компонентной системы
каждая подсистема обособлена
зависимость подсистем организована в древовидном порядке, корнем этого дерева
является Ядро
6. Внедрение зависимостей
Регистрация в реестре объектов
Извлечение объектов по идентификатору, типу или интерфейсу
Каталогизация объектов
Размещение объектов в реестре в отдельных категориях
Извлечение коллекции объектов по идентификатору категории или типу объектов
Идентификация и обобщение реализаций
Выделение типов реализаций и объектов реализаций.
Идентификация объекта реализации путём реализации специального интерфейса
или подключения композитной части
Композиция объектов
Принцип композитного(составного) объекта.
Представление композитного объекта в коде как единой сущности
Возможность декларативного способа предоставления механизмов
Абстракция графического пользовательского интерфейса
7. Широкие возможности использования паттерна ‘Команда’
Гибкая система конфигурирования
Обработчики конфигурационных данных.
Поддержка многофайловых конфигурационных файлов.
Журналирование
Поддержка различных целевых адресатов (файл, консоль, Trace - ‘из коробки’)
Поддержка различных форматов лог-файлов (текстовый, бинарный - ‘из коробки’)
Расширяемость
Возможность расширения практически любой подсистемы и механизма платформы.
Средства тестирования
Объекты: Заглушки, Моки, Шпионы
Инфраструктура тестирования нацелена на подход AAA (Arrange Act Assert)
Набор вспомогательных утилит
Утилита для чтения логов
Утилита для unit-тестирования
8.
9. Классы «на каждый день»
Разнородный набор полезных классов
Расширения платформы для объектов
Интерфейсы платформы
Основополагающие общие интерфейсы платформы
(Например: поставщики объектов, фабрики и т.д.)
Некоторые реализации этих интерфейсов
Внутренние классы платформы
Закрытые классы, инкапсулирующие внутренние основополагающие механизмы
платформы
10. Ядро wiki
Ядро– базовая часть
платформы, выполняет и контролирует
основополагающие платформенные
процессы приложения. Ядро содержит
набор внутренних механизмов, а так же
компоненты сквозного
функционала, которые используются во
всех слоях приложения.
11. Реестр wiki
Каталогизация объектов (объединение
в категориях)
Внедрение зависимостей
(возможность извлекать
зарегистрированные объекты по
идентификационным данным)
12. Фабрика ядра wiki
Создание объектов
Возможность определять
инициализирующие действия над
всеми объектами конкретного класса
или при создании конкретного объекта
Гибрид внедрения зависимости и
абстрактной фабрики
Конвейерный принцип создания и
подготовки объекта
14. Мета система wiki
Мета система предназначена для
поддержки декларативного способа
использования различных механизмов.
Основной идеей этой системы является
использование атрибутов в качестве
инициаторов служебных
процессов, связанных с помеченными
типами или членом типа.
15. Система композиции wiki
Система композиции позволяет создавать
композитные объекты и работать с ними.
Композитные объекты представляют
собой составной объект, части которого
равнозначны и объединены центральным
объектом-композитором.
Система композиции позволяет
конструировать такие объекты и работать с
ними как с единым объектом.
16. Система команд wiki
Набор средств, связанных с
реализацией и использованием
паттерна «Команда» Команда
инкапсулирует выполнение конкретной
логики. Позволяет таким образом
абстрагироваться от конкретных
реализаций.
17. Система конфигурации wiki
Предназначена для настройки
приложения после его запуска в
соответствии с файлом конфигурации.
Конфигурационные данные могут
находиться как в недрах app.config, так и в
отдельном файле.
18. Система ГИП wiki
Предоставляет механизмы для
графического представления данных и
ведения диалогов с пользователем.
Система скрывает реализацию
используемой графической системы от
клиентского кода. Представление
информации организуется с помощью
паттерна проектирования MVVM.
19. Система реализаций wiki
Совокупность механизмов обобщения и
идентификации реализаций. Суть системы
заключается в выделении общих
признаков объектов реализаций в объект-
тип. Этот объект-тип так же является
фабрикой объектов реализации.
20. Типы приложений:
Десктоп приложения
Веб-приложения
Win службы
Каркасы приложений
Специализированные платформы
Слои приложения:
Графическоий пользовательский интерфейс
Бизнес-логика
Сквозной функционал
Окружение
Основная версия
▪ ОС: Windows подробнее
▪ .NET Framework 4(Client profile) и более
Silverlight-версия
▪ Silverlight 4 и более подробнее
▪ ОС: Windows, Macintosh (Intel-based)