260 likes | 406 Views
23-24 мая , 2012 г. Microsoft. Как повысить эффективность разработки корпоративных бизне с - приложений c e X press A pp F ramework. Денис Гаравский. dennis@devexpress.com | @ DennisGaravsky | www.devexpress.com. .NET Team, DevExpress. Перед тем как начать….
E N D
23-24 мая, 2012 г. Microsoft
Как повысить эффективность разработкикорпоративныхбизнес-приложенийc eXpressApp Framework Денис Гаравский dennis@devexpress.com | @DennisGaravsky | www.devexpress.com .NET Team, DevExpress
Перед тем как начать… Developer Expressиз России??! И что еще за XAF??????
Developer Express – это … Визуальные компоненты VCL, .NET (Windows Forms, ASP.NET Web Forms, ASP.NET MVC, WPF, Silverlight) Различные виды редакторов, списков и таблиц, графики и отчеты, календари и планировщики, элементы навигации, меню и многое другое Инструменты для разработчиков с 1998г. Расширения IDE CodeRush, !Refactor, App Framework & ORM eXpress Persistent Objects (XPO) eXpressApp Framework (XAF)
Вы можете заказать написание всего ПО «с нуля» у независимой компании-разработчика или привлечь для этого свой собственный ИТ-отдел Варианты разработкикорпоративных бизнес-приложений Вы можете купить готовый продукт на базе MicrosoftDynamics или 1С и поручить его настройку консультантам. Скорее всего не придется писать код. Создание всего программного обеспечения «с нуля» Покупка и настройкаготового программного продукта Что-то среднее между ними Разработчикам еще нужно писать код, но большая часть функциональности уже идет «из коробки», с возможностью полной замены или гибкой настройки.
Создание всего программного обеспечения «с нуля» • Масса времени и $$$ на рутинные задачи, тестирование и сопровождение • Высокий уровень знаний разработчиков • Любая сложность под любые нужды клиента • Полный контроль за разработанным ПО
Покупка и настройкаготового программного продукта • Масса времени и $$$ на изучение скриптов настройки или использование консультантов • Типовой пользовательский интерфейс, трудно настраиваемый под нетиповые задачи • Нет проблем с качеством, так как готовые продукты обычно уже протестированы • Скорее всего не придется программировать
Использование eXpressApp Framework(XAF) Разработка «с нуля» XAF Настройка готового ПО • Набор шаблонных решений популярных бизнес задач • Быстрый старт и низкий порог вхождения • Автоматическое создание Desktop и Webинтерфейсов • Дает возможность сфокусироваться на бизнес логике • Не ограничивает и всегда позволяет «копнуть глубже»
Демонстрация Создаем приложения для управления задачами с eXpressApp Framework
А что-нибудь посложнее CRUD-форм? Корпорация «Галактика» (http://galaktika.ru) использует платформу XAFARI на базе XAF для решений по управлению бюджетами, активами, производствомиперсоналом предприятия
Насколько XAF может быть эффективен? е-библиотека (автор, книга, читатель) ≈ 0.5 часа Outlook (контакты, задачи, календарь и др.)≈ 1час CRM приложение (с отчетами) ≈ 1 день Работа с XAF не требует обширных знаний 1 разработчик c XAF ~ N разработчиковбез XAF 1 годовая лицензия XAF≈1 месячная ЗП
Архитектура Схема XAF приложения (MVC) Распределенные XAF приложения (N-Tier)
Объектно-ориентированноеуправление данными Зрелый XPO ORM для доступа к данным и бизнес логики Поддержка более чем 15ти популярных RDBMS Стандартные и новые подходы для создания бизнесмоделей: • Code-First • Database-First • Model-First • UI-First– одновременное построение бизнес моделей и настройка экранов пользовательского интерфейса • Domain Components (DC)– технология, облегчающая создание повторно используемых бизнес моделей Поддержка Entity Framework с версии 12.1 (выходит в июне)
UI-First Создаем бизнес модели и настраиваем UI в одно и то же время! Демонстрация
Domain Components (DC) - принцип трех I Interface vsСlass Легкое комбинирование за счет «множественного наследования» Independence from ORM Простое тестирование и сопровождение Inversion of Control (IoC) Бизнес логика добавляется через Dependency Injection Компоновка в объекты выбранной ORM происходит runtime
[DomainComponent] public interfaceIAccount { [RuleRequiredField, RuleUniqueValue] [RuleRegularExpression(@“SomeCoolRegEx")] string Email { get; set; } [FieldSize(25)] [ImmediatePostData] [Appearance("Len(Password) < 6", FontColor = Color.Red)] string Password { get; set; } } ПримерыDomain Components [DomainComponent, ImageName("BO_Person")] public interface IPerson { stringLastName { get; set; } stringFirstName { get; set; } stringFullName { get; } DateTimeBirthday { get; set; } } [DomainLogic(typeof(IPerson))] publicclassPersonLogic { public static string Get_FullName(IPerson self) { returnstring.Format("{0} {1}",self.FirstName, self.LastName); } } [DomainComponent] public interface ICompany{ [RuleRequiredField] string Name { get; set; } [Aggregated] IList<IPerson> Staff { get; } [DataSourceProperty("Staff")] [RuleRequiredField(TargetCriteria = "Staff.Count > 0")] [Appearance("Staff.Count = 0",BackColor = Color.Yellow)] IPerson Manager { get; set; } } ПроизводныйDomainComponent • Интерфейс IPerson • Интерфейс IAccount ИнтерфейсICompany Класс логики IPerson • Класс логики • IAccount • Класс логики • ICompany [DomainComponent]interfaceICRMCustomer:IAccount, ICompany,INotes, IPhones,...,...{}
<Application> <Views> <DetailViewId="Order_DetailView"> <Layout> <LayoutGroupId="Main"ImageName="BO_Order"> <LayoutItemId="UnitPrice"RelativeSize="25"Index="0" /> <LayoutItemId="Qty"RelativeSize="25"Index="1" /> <LayoutItemId="Discount"RelativeSize="25"Index="2" /> <LayoutItemId="ExtendedPrice"RelativeSize="25"Index="3" /> </LayoutGroup> </Layout> </DetailView> </Views> </Application> Динамическая мета модель пользовательского интерфейса приложения • XAFML - это аналог XAML • Позволяет настроить UI для двух платформ • Упрощаетразвертывание благодарявозможностям широкой настройки в runtime • Использование DC для расширения мета модели
Автоматическое создание пользовательского интерфейса • Готовые Desktop и Web клиенты с CRUD формами,меню, навигацией и т.п.на базе бизнес моделей • Представления бизнес моделей и их полей зависят от типа • UIавтоматически подстраивается подлюбые изменения модели
Модульность Разрабатывая с eXpressApp Framework, вы «играете»в конструктор, где можно: • Использовать модули «из коробки» • Создавать свои собственные модули • Настроить, расширить или заменить любые запчасти модулей • Создать модуль, использующий одну базу кода для нескольких платформ!
Богатыйнабор модулей «из коробки» • Создание и печать отчетов • Анализ и аудит данных • Система безопасности • Управление бизнес процессами • Контроль ввода данных • Форматирование данных • Локализация и многое другое • Также в наличии бесплатные 3rd-party модули
Хорошая интеграцияв среду разработки VisualStudio
Широкие возможности настройки приложения в runtime • Настройка внешнего вида, команд, меню и навигации • Настройка расположения, контроля данных, правил доступности, форматирования и полей на формах • Управление пользователями и правами доступа • Управление бизнес процессами • Создание отчетовдля печати и анализа • Создание информационных досок и многое другое
[Test] public void TestExtendedPrice() { IDataStoreds = newInMemoryDataStore( AutoCreateOption.DatabaseAndSchema ); IDataLayerdal = newSimpleDataLayer(ds); using(UnitOfWorkuow = newUnitOfWork(dal)) { Order order = new Order(uow) {UnitPrice= 50m, Qty= 5, Discount = 0.5d }; uow.CommitChanges();Assert.AreEqual(125m, order.ExtendedPrice); } } public class Order : XPObject { publicOrder(Session session) : base(session) { } public decimal UnitPrice; public int Qty; public double Discount; public decimal ExtendedPrice { get{ returnUnitPrice * (decimal) ((1 - Discount) * Qty); } } } Легкоетестирования созданных приложений TDD-friendlyза счет слабосвязанных функциональных блоков Unit Test Runner инструмент для централизованного запуска и управления тестами Easy Testинструмент для функционального тестирования приложений Easy Test Script Recorderсоздание теста на базе действий пользователя в приложении
:) Как повыситьэффективность разработки корпоративныхбизнес-приложенийс eXpressAppFramework Жду вас в зоне «Спроси эксперта»! Вопросы
Полезная информация Сайт разработчика:www.devexpress.com Страница XAF: http://bit.ly/3OMTR XAF на Хабре: http://bit.ly/KyhdW3 Мой E-mail: dennis@devexpress.com Ждем вас на стенде DevExpress для дальнейшего общения и розыгрыша призов!
Пожалуйста Оцените доклад и мастерство докладчика. Форма для оценки находится в вашем инфопакете.