В прошлом году мы участвовали в выставке 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 и вы хотите его более серьезно изучить, пройдите уроки Getting Started. Далее можно перейти к более углубленному Tutorial.
Автор: beliakov