Как создать приложение, используя eXpressApp Framework

    В прошлом году мы участвовали в выставке TechEd Russia и, конечно, много общались с посетителями. Тогда выяснилось, что российские разработчики хорошо знают нашу компанию как производителя .NET контролов, но мало кто слышал о том, что у DevExpress есть фреймворк — eXpressApp Framework (XAF) — объединяющий большинство наших WinForms и ASP.NET продуктов. Тогда и родилась идея рассказать русскоязычному сообществу o XAF, которая воплощается в жизнь сейчас.

    Итак, что же такое XAF и зачем вам предлагается запомнить еще одну трехбуквенную аббревиатуру? Проще говоря, XAF — это фреймворк для быстрой разработки других трехбуквенных вещей, таких как CRM, ERP, EAM, WMS и т.д. (любых приложений для бизнеса).

    XAF может быть полезен не только опытным .NET-разработчикам. «Порог вхождения» невысок — можно смело сказать, что приступить к разработке ХАF-приложений можно вообще не имея опыта в .NET. Так что сисадминам-мастерам-на-все-руки XAF может помочь создать серьезное корпоративное приложение и избавиться от вороха расшаренных экселевских таблиц или Access-базы в которые пользователи что-то заносят и пытаются анализировать.

    В то же время, продвинутые разработчики могут создавать сколь угодно сложные решения (пример – Галактика EAM).


    И чем же XAF может помочь?


    Программисту, имеющему в своем арсенале XAF, не надо ломать голову над тем, как сформировать из наших контролов красивый и функциональный пользовательский интерфейс и организовать работу с базой данных. Для начала достаточно написать на C# или VB.NET набор классов или интерфейсов представляющих объекты, с которыми будет оперировать приложение (например «сотрудник», «клиент», «заказ» и т.п.). Всё остальное XAF берет на себя, предоставляя на выходе WinForms и ASP.NET приложения, в которых уже есть необходимый набор форм для ввода и представления данных.

    Доступный по умолчанию функционал легко расширяется. У нас на сайте можно посмотреть скриншоты приложений, написанных на XAF.

    Где скачать, как установить?


    Чтобы попробовать XAF, вам понадобится Visual Studio 2008/2010 и одна из поддерживаемых СУБД, например MS SQL Server, MySQL, PostgreSQL (полный список). Триальная инсталляция доступна для скачивания здесь (выбирайте eXpressApp Framework в колонке справа). Триалом можно пользоваться 30 дней, при этом доступна полноценная техподдержка.

    С чего начать?


    Итак, после успешной установки, можно заглянуть, какие темплейты проектов стали доступны в Visual Studio. Сейчас нас интересует eXpressApp Framework / Applications Solution v11.2.



    Указываем имя решения, например DemoForHabr, и смотрим что получилось. А получилось вот что.



    Перед нами пять проектов. Два из них представляют собой Windows Forms и ASP.NET приложения. Остальные три проекта это так называемые модули.

    Сейчас мы будем описывать бизнес-модель, поэтому заходим в платформенно-независимый модуль (DemoForHabr.Module). В XAF два способа описания бизнес-модели – создание «бизнес-классов» и «доменных компонентов». Оба способа имеют свои преимущества и недостатки, обсуждение которых выходит за рамки данной статьи. Здесь, ради экономии места, мы используем второй способ, который требует меньше кода.

    Проект DemoForHabr.Module содержит папку Business Objects, именно в нее мы добавим код. Допустим, нам нужно приложение для хранения списка задач назначенных сотрудникам. Чтобы описать сущности «задача» и «сотрудник», добавим пару доменных компонентов Task и Employee (это обычные интерфейсы с атрибутом DomainComponent).

    using System;
    using System.Collections.Generic;
    using DevExpress.ExpressApp.DC;
    using DevExpress.Persistent.Base;
    
    namespace DemoForHabr.Module.BusinessObjects {
        [DomainComponent, DefaultClassOptions, ImageName("BO_Person")]
        public interface IEmployee {
            string Name { get; set; }
            string Position { get; set; }
            IList<ITask> Tasks { get; }
        }
        [DomainComponent, DefaultClassOptions, ImageName("BO_Task")]
        public interface ITask {
            string Subject { get; set; }
            IEmployee AssignedTo { get; set; }
            DateTime Deadline { get; set; }
            bool IsCompleted { get; set; }
            [FieldSize(int.MaxValue)]
            string Description { get; set; }
        }
    }
    

    Осталось зарегистрировать эти сущности. Для этого нужно открыть код Module.cs и перекрыть метод Setup у класса Module:

    public override void Setup(XafApplication application) {
        if (!XafTypesInfo.IsInitialized) {
            XafTypesInfo.Instance.RegisterEntity("Employee", typeof(IEmployee));
            XafTypesInfo.Instance.RegisterEntity("Task", typeof(ITask));
        }
        base.Setup(application);
    }
    


    Настраиваем подключение к базе


    Если у вас есть локально установленный Microsoft SQL Server, то можно пропустить этот абзац, всё заведется автоматом. В противном случае откройте файл App.config из проекта WinForms приложения (DemoForHabr.Win) и укажите опцию ConnectionString (есть несколько закомментированных вариантов).

    И что получилось?


    Теперь можно запустить WinForms приложение. XAF автоматически создает формы для редактирования сущностей Task и Employee.



    Что там с базой?


    Все необходимые таблицы и связи сгенерированы автоматически.



    А по-русски?


    К настоящему моменту мы имеем приложение на английском языке. К счастью, локализовать его совсем несложно. Русский язык уже есть в установке, надо только перевести названия наших сущностей и их свойств.

    Для этого в модуле, в котором писался код, открываем файл Model.DesignedDiffs.xafml (запустится дизайнер). Через панель инструментов открываем Languages Manager и добавляем русский язык.



    Там же на панели есть кнопка Localization, которая открывает список текстов для перевода.



    Теперь значение свойства PreferredLanguage можно поменять на «ru».



    Запускаем приложение, теперь всё на русском.



    Как насчет веб-интерфейса?


    Чтобы запустить веб-приложение, достаточно поменять стартовый проект. В веб-интерфейсе доступен тот же самый функционал.



    Что ещё почитать?


    Мы только что создали очень простое приложение для ввода и просмотра данных. Реальные возможности XAF намного шире – можно настроить разграничение прав доступа, добавить сервер приложений, создавать отчеты, использовать возможности Workflow Foundation, анализировать данные с помощью сводных таблиц и диаграмм, печатать и экспортировать данные, отображать события в планировщике, украсить приложение скинами и многое другое.

    Если вам понравился XAF и вы хотите его более серьезно изучить, пройдите Basic Tutorial. Далее можно перейти к более углубленному Comprehensive Tutorial.
    DevExpress 91,31
    Компания
    Поделиться публикацией
    Похожие публикации
    Комментарии 11
    • +8
      Интересно было бы сравнить с LightSwitch в виде таблички
      • +2
        Я думаю такое сравнение заслуживает отдельного поста. Если можете подождать, я напишу его, так как уже делал подобный сравнительный анализ для внутреннего пользования, на английском правда. Возможно у команды LightSwitch тоже есть какие-то готовые наработки по «конкурентам», которыми можно поделиться с общественностью — было бы интересно посмотреть. Прямо сейчас могу только дать ссылку на обзор, сделанный нашим евангелистом в прошлом.
      • –1
        [sracasm]Я же уже два раза протирал ему монитор, что он плюется в него что ли?[/sracasm]
        • +4
          Уже не мало потрачено времени на свой велосипед. Вот бы раньше, этак годика полтора-два назад ознакомиться бы с этим (если оно тогда было), обязательно попробовали-бы, а сейчас уже времени нет.
          Но вещь очень интересная.
          ЗЫ: WinForms`ы ваши уже года 3-4 юзаем, и очень довольны.
          • +2
            Я вас понимаю… Очень много слышал подобных отзывов от других людей, особенно когда общались у нашего стенда на TechEd Russia осенью. Видимо каждый разработчик в своей жизни хочет написать свой собственный фреймворк (что с нами и случилось).

            ЗЫ:
            Первый релиз XAF вышел в 2007 году. До этого год-полтора были общедоступные альфа и бета версии.
            Фреймворк полностью построен на наших WinForms и ASP.NET компонентах.
          • +1
            у xaf-а есть ряд проблем вроде поедания памяти, проблемы с optimistic lock-ингом, автогенерация xafm файла (удачи в merge-е!), есть и иные… есть проблемы и в XPO (это местный DAL) — например это достаточно жестокая привязка к сессионному объекту (попробуйте его использовать в asp.net приложении, где каждый юзер должен коннектится к базе под своим логином)…
            • +3
              Буду вам очень признателен, если напишете поподробнее про первые две проблемы в личку.
              Если я правильно понял проблему c merge-м (т.е. сложности при работе нескольких разработчиков с одним XAFML файлом), то она была исправлена начиная с версии 10.1, когда была переписана система генерации метаданных. Если нет, то пожалуйста опишите поподробнее, если есть время и желание.
              Насчет XPO, вроде есть куча работающих приложений использующих его в ASP.NET, взять тот же самый наш главный сайт или Support Center, XAF Web UI вроде тоже работает без проблем. Если писали про эту проблему в нашу техподдержку, хорошо бы взглянуть на номер заявки. Буду рад помочь.
            • +2
              На первый взгляд, extjs работает быстрее, а набор тулов там неменьше
              • 0
                Все таки немножко разные категории у этих продуктов, не говоря уже про используемые технологии и платформы. В комментариях вот к этому посту удалось побольше рассказать про это.
                Как бы там ни было, не исключаю, что логичным развитием текущего XAF ASP.NET Web Forms UI будет нечто подобное.
                • 0
                  Приведите пожалуйста примеры методов, которые умеет Ваш фремворк и не умеет extjs
                  • 0
                    Я не говорю, что extjs чем-то плох. Как я уже упомянул выше, просто по-моему не совсем корректно сравнивать эти продукты ввиду разных категорий, платформ (к примеру, XAF помимо Веб поддерживает еще и десктоп), используемых технологий (XAF Веб интерфейс сейчас из коробки не оптимизирован для мобильных браузеров) и языков (с XAF ты пишешь в основном на C# или VB.NET, а не на JavaScript), уровней абстракции наконец. Приведу еще пример, если вы захотите сделать типичное Веб бизнес приложение для Интранета наподобие Main Demo вот отсюда, то затратите меньше времени с XAF. Просто потому, что с ним вам не нужно думать о типичных задачах типа доступа к данным, работе с формами, виртуализации, если вдруг нужно показывать тысячи записей в списке. Вы просто фокусируетесь на своей бизнес логике и пишете свои плагины, а уже готовое приложение из всего этого для вас скомпонует фреймворк. Тоже самое на extjs займет сотни строк кода и намного больше времени, хоть возможно и с большей гибкостью.

              Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

              Самое читаемое