Flexberry ASP.NET является продуктом платформы Flexberry. Сайт продукта Flexberry ASP.NET: flexberry.ru.
Описание продукта
Посредством Flexberry Designer возможно создание диаграммы классов. С этой диаграммы можно сформировать необходимую структуру базы данных (БД), объектную модель и готовое web-приложение.
Состав продукта
Flexberry ASP.NET состоит из следующих модулей:
- Модуль расширения Flexberry Designer для генерации web-приложений по uml-моделям.
- Web-контролы и web-компоненты.
- Подсистема полномочий (web)
- Темы оформления
Ограничения Flexberry ASP.Net
Статьи по теме
- ASP.NET web-контролы, компоненты
- Блокировки
- Проектирование и разработка веб-приложений
Особенности настройки Unity для Lifetime Managers
Unity использует Lifetime Managers для управления временем жизни создаваемых им объектов. В приложении можно использовать как существующие менеджеры, так и создавать свои в зависимости от требований приложения.
Наименование | Описание | Особенности применения |
---|---|---|
UnityContainer.Resolve<IAbstraction>() |
При каждом обращении создается создается новый экземпляр абстракции | Нельзя использовать для кеширования, так как в итоге кеширования данных происходить не будет |
ContainerControlledLifetimeManager (singleton) |
Он обеспечивает создание контейнером экземпляра зависимости при первом Resolve, а на все последующие возвращает уже созданный | При таком сценарии необходимо, чтобы класс либо не хранил никакого состояния, либо был потокобезопасным |
TransientLifetimeManager |
Unity создает и возвращает новый экземпляр запрошенного типа для каждого вызова метода Resolve. Используется по умолчанию для всех типов, зарегистрированных с использованием метода RegisterType, где не был указан конкретный менеджер. При регистрации переходных типов нет необходимости передавать экземпляр TransientLifetimeManager на регистрацию | Потокобезопасен, поскольку каждый потребитель имеет свой собственный экземпляр зависимости. Может привести к тому, что будет создано и уничтожено сборщиком мусора бесчисленное множество экземпляров, в то время как одного экземпляра было бы достаточно |
ContainerControlledTransientManager |
Аналогичен TransientManager, но содержит ссылку на каждый созданный одноразовый экземпляр и удаляет их при удалении контейнера | Полезен, когда используется в основанных на сессии проектах с дочерним контейнером, связанным с сессией |
ContainerControlledLifetimeManager |
Регистрирует существующий или разрешенный объект как одноэлементный экземпляр в контейнере, в котором зарегистрирован объект экземпляра. Возвращает один и тот же экземпляр зарегистрированного типа или объекта каждый раз, когда вызван Resolve или когда механизм зависимости внедряет экземпляры в другие классы. Подробнее… | |
ExternallyControlledLifetimeManager |
Предоставляет общую поддержку для управляемых извне сроков, позволяет регистрировать маппинг и существующие объекты в контейнередля ссылки на экземпляр, который он регистрирует или создает при вызове метода Resolve, а также когда механизм зависимости внедряет экземпляры в другие классы на основе атрибутов или параметров конструктора данного класса | Использование данного менеджера позволяет другому коду сохранять объект в памяти или распоряжаться им, а также позволяет контролировать время жизни существующих объектов или позволить другому механизму управлять временем жизни |
HierarchicalLifetimeManager |
Аналогичен ContainerControlledLifetimeManager. Различие состоит в том, что при наличии дочерних контейнеров каждый дочерний элемент разрешает свой собственный экземпляр объекта и не разделяет его с родительским. При Resolve в родителе поведение похоже на время жизни контейнера; при разрешении родительского и дочернего экземпляров остаются разные экземпляры, каждый из которых действует как управляемый контейнером Lifetime. Каждый из дочерних элементов будет разрешать свой собственный экземпляр | |
PerResolveLifetimeManager |
Аналогичен TransientLifetimeManager, однако также предоставляет сигнал плану сборки по умолчанию, отмечая тип так, чтобы экземпляры повторно использовались в графе объекта сборки. В случае рекурсии, одиночное поведение применяется, когда объект был зарегистрирован в PerResolveLifetimeManager | По сравнению с Transient, при использовании Per Graph не возникает никаких дополнительных издержек, поэтому может использоваться в качестве замены Transient |
PerThreadLifetimeManager |
Возвращает для каждого потока один и тот же экземпляр зарегистрированного типа или объекта каждый раз, когда вызван Resolve или когда механизм зависимости внедряет экземпляры в другие классы. Эффективно реализует одноэлементное поведение для объектов для каждого потока. PerThreadLifetimeManager возвращает разные объекты из контейнера для каждого потока | По сравнению с Transient, при использовании Per Graph не возникает никаких дополнительных издержек, поэтому может использоваться в качестве замены Transient |
Примеры
Пример настройки технологических форм
Примеры настройки технологических форм представлены в статье Примеры настройки технологических форм.
Доработка пользовательского интерфейса
Сгенерированные Web-страницы нуждаются в доработке по следующим пунктам:
- Заголовки страниц
- Выравнивание элементов на страницах
- Общий стиль, цвета и шрифты элементов страниц
- Масштабирование страниц
- Локализация