1 / 26

23-24 мая , 2012 г. Microsoft

23-24 мая , 2012 г. Microsoft. Как повысить эффективность разработки корпоративных бизне с - приложений c e X press A pp F ramework. Денис Гаравский. dennis@devexpress.com | @ DennisGaravsky | www.devexpress.com. .NET Team, DevExpress. Перед тем как начать….

kuper
Télécharger la présentation

23-24 мая , 2012 г. Microsoft

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 23-24 мая, 2012 г. Microsoft

  2. Как повысить эффективность разработкикорпоративныхбизнес-приложенийc eXpressApp Framework Денис Гаравский dennis@devexpress.com | @DennisGaravsky | www.devexpress.com .NET Team, DevExpress

  3. Перед тем как начать… Developer Expressиз России??! И что еще за XAF??????

  4. 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)

  5. Вы можете заказать написание всего ПО «с нуля» у независимой компании-разработчика или привлечь для этого свой собственный ИТ-отдел Варианты разработкикорпоративных бизнес-приложений Вы можете купить готовый продукт на базе MicrosoftDynamics или 1С и поручить его настройку консультантам. Скорее всего не придется писать код. Создание всего программного обеспечения «с нуля» Покупка и настройкаготового программного продукта Что-то среднее между ними Разработчикам еще нужно писать код, но большая часть функциональности уже идет «из коробки», с возможностью полной замены или гибкой настройки.

  6. Создание всего программного обеспечения «с нуля» • Масса времени и $$$ на рутинные задачи, тестирование и сопровождение • Высокий уровень знаний разработчиков • Любая сложность под любые нужды клиента • Полный контроль за разработанным ПО

  7. Покупка и настройкаготового программного продукта • Масса времени и $$$ на изучение скриптов настройки или использование консультантов • Типовой пользовательский интерфейс, трудно настраиваемый под нетиповые задачи • Нет проблем с качеством, так как готовые продукты обычно уже протестированы • Скорее всего не придется программировать

  8. Использование eXpressApp Framework(XAF) Разработка «с нуля» XAF Настройка готового ПО • Набор шаблонных решений популярных бизнес задач • Быстрый старт и низкий порог вхождения • Автоматическое создание Desktop и Webинтерфейсов • Дает возможность сфокусироваться на бизнес логике • Не ограничивает и всегда позволяет «копнуть глубже»

  9. Демонстрация Создаем приложения для управления задачами с eXpressApp Framework

  10. А что-нибудь посложнее CRUD-форм? Корпорация «Галактика» (http://galaktika.ru) использует платформу XAFARI на базе XAF для решений по управлению бюджетами, активами, производствомиперсоналом предприятия

  11. Насколько XAF может быть эффективен? е-библиотека (автор, книга, читатель) ≈ 0.5 часа Outlook (контакты, задачи, календарь и др.)≈ 1час CRM приложение (с отчетами) ≈ 1 день Работа с XAF не требует обширных знаний 1 разработчик c XAF ~ N разработчиковбез XAF 1 годовая лицензия XAF≈1 месячная ЗП

  12. Архитектура Схема XAF приложения (MVC) Распределенные XAF приложения (N-Tier)

  13. Объектно-ориентированноеуправление данными Зрелый XPO ORM для доступа к данным и бизнес логики Поддержка более чем 15ти популярных RDBMS Стандартные и новые подходы для создания бизнесмоделей: • Code-First • Database-First • Model-First • UI-First– одновременное построение бизнес моделей и настройка экранов пользовательского интерфейса • Domain Components (DC)– технология, облегчающая создание повторно используемых бизнес моделей Поддержка Entity Framework с версии 12.1 (выходит в июне)

  14. UI-First Создаем бизнес модели и настраиваем UI в одно и то же время! Демонстрация

  15. Domain Components (DC) - принцип трех I Interface vsСlass Легкое комбинирование за счет «множественного наследования» Independence from ORM Простое тестирование и сопровождение Inversion of Control (IoC) Бизнес логика добавляется через Dependency Injection Компоновка в объекты выбранной ORM происходит runtime

  16. [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,...,...{}

  17. <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 для расширения мета модели

  18. Автоматическое создание пользовательского интерфейса • Готовые Desktop и Web клиенты с CRUD формами,меню, навигацией и т.п.на базе бизнес моделей • Представления бизнес моделей и их полей зависят от типа • UIавтоматически подстраивается подлюбые изменения модели

  19. Модульность Разрабатывая с eXpressApp Framework, вы «играете»в конструктор, где можно: • Использовать модули «из коробки» • Создавать свои собственные модули • Настроить, расширить или заменить любые запчасти модулей • Создать модуль, использующий одну базу кода для нескольких платформ!

  20. Богатыйнабор модулей «из коробки» • Создание и печать отчетов • Анализ и аудит данных • Система безопасности • Управление бизнес процессами • Контроль ввода данных • Форматирование данных • Локализация и многое другое • Также в наличии бесплатные 3rd-party модули

  21. Хорошая интеграцияв среду разработки VisualStudio

  22. Широкие возможности настройки приложения в runtime • Настройка внешнего вида, команд, меню и навигации • Настройка расположения, контроля данных, правил доступности, форматирования и полей на формах • Управление пользователями и правами доступа • Управление бизнес процессами • Создание отчетовдля печати и анализа • Создание информационных досок и многое другое

  23. [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создание теста на базе действий пользователя в приложении

  24. :) Как повыситьэффективность разработки корпоративныхбизнес-приложенийс eXpressAppFramework Жду вас в зоне «Спроси эксперта»! Вопросы

  25. Полезная информация Сайт разработчика:www.devexpress.com Страница XAF: http://bit.ly/3OMTR XAF на Хабре: http://bit.ly/KyhdW3 Мой E-mail: dennis@devexpress.com Ждем вас на стенде DevExpress для дальнейшего общения и розыгрыша призов!

  26. Пожалуйста Оцените доклад и мастерство докладчика. Форма для оценки находится в вашем инфопакете.

More Related