Этот демонстрационный проект показывает, как использовать Fireasy для создания системы управления сайтом с возможностью администрирования. Решение включает два примера — ASP.NET MVC5 и ASP.NET Core, использует базу данных SQLite и основано на easyUI 1.4.3.
Демонстрация создана с использованием framework Fireasy, Fireasy онлайн-документация доступна по следующей ссылке: http://www.fireasy.cn/docs.
Примечание
Особенности
Операции с базой данных и использование Entity Framework имеют схожие особенности, так как используют LINQ, что снижает затраты на обучение. Однако в отличие от последнего, предоставляются методы вставки, обновления, удаления и пакетной операции, что делает работу более быстрой и ближе к нативному SQL.* Взаимодействие между представлением и сервером в системе управления сайтов, основанной на EasyUI, осуществляется через AJAX. Поэтому при получении параметров в действии используется обратная сериализация JSON для привязки модели. Преимущество такого подхода заключается в том, что сложные структуры данных, такие как несколько списков или вложенные объекты, легко принимаются в действии.
Экземпляр объекта, передаваемый действием, может самостоятельно различать, какие свойства были изменены благодаря конвертеру LightEntityJsonConverter. Это позволяет избежать проблем с перезаписью существующих данных при создании или обновлении записей.
Отсутствие использования ViewModel и прямое применение DataModel экономит много времени разработки. Однако это также вызывает проблему, аналогичную той, которая возникает при использовании Entity Framework — все свойства, поддерживающие ленивую загрузку, будут сериализованы. Для решения этой проблемы была оптимизирована сериализация JSON, используя Fireasy JSON Serializer, который способен распознавать объекты с ленивой загрузкой.
Несмотря на отсутствие ViewModel, можно расширять больше атрибутов для использования на клиентской стороне. В классах _Ex можно определять неvirtual атрибуты и использовать метод расширения ExtendAs, чтобы избежать сложностей при присвоении значений через new {}.* В новой версии также внедрен паттерн DTO; более подробную информацию о нем можно найти в функциях, связанных с пользователями.
Сервисы реализуются на основе AOP и предоставляют интерцепторы для транзакций и кэширования. Для активации этих функций достаточно указать соответствующее свойство. Также обязательно использование контейнера IoC Fireasy. Структура проекта
Fireasy.Zero.Models Энтитетные модели
Fireasy.Zero.Infrastructure Инфраструктура
Fireasy.Zero.Helpers Вспомогательные функции
Fireasy.Zero.Services Сервисы
Fireasy.Zero.AspNet Пример MVC5
Fireasy.Zero.AspNetCore Пример ASP.NET Core
Конфигурация MVC5
Для конфигурации Fireasy обратитесь к разделу fireasy в файле web.config:
dataInstances — конфигурация экземпляров баз данных, использует SQLite.
cachings — конфигурация кэширования, использует Redis. При удалении этой конфигурации используется память как кэш.
containers — конфигурация контейнера IOC.
mvc/bundles — конфигурация файлов ресурсов bundle.
Обратите внимание на конфигурацию Fireasy в глобальном файле, это все необходимое.
BundleManager.Config();
//Добавление фабрики контроллеров MVC в контейнер IOC
var container = ContainerUnity.GetContainer();
ControllerBuilder.Current.SetControllerFactory(new ControllerFactory(container));
//Регистрация привязки easyui для проверки
SettingsBindManager.RegisterBinder("validatebox", new ValidateBoxSettingBinder());
SettingsBindManager.RegisterBinder("numberbox", new NumberBoxSettingBinder());
```// Использование LightEntity для преобразования JSON
GlobalSetting.Converters.Add(new LightEntityJsonConverter());
// Добавление преобразователя из контейнера для декодирования типов
GlobalSetting.Converters.Add(new ContainerJsonConverter(container));
<b>Конфигурация Core</b>
Аналогично примеру выше, конфигурация Core находится в файле appsettings.json и также включает конфигурацию экземпляров баз данных и контейнера IOC.
Настройка в файле Startup.cs (см. актуальный код)
```csharp
public void ConfigureServices(IServiceCollection services)
{
services.AddFireasy(Configuration, options =>
{
// Регистрация подписчика событий энтитетной персистентности
options.AddSubscriber<EntityPersistentSubject>(string.Empty, subject => new EntitySubscriber().Accept(subject));
})
.AddIoc(ContainerUnity.GetContainer()) // Добавление конфигурации IOC из файла appsettings.json
.AddEntityContext<DbContext>(options =>
{
options.AutoCreateTables = true; // При значении true используется режим CodeFirst для управления таблицами базы данных
options.NotifyEvents = true; // При значении true события энтитетной персистентности будут активированы
});
services.AddMvc()
.AddSessionStateTempDataProvider()
.ConfigureFireasyMvc(options =>
{
options.JsonSerializeOption.Converters.Add(new LightEntityJsonConverter()); // Этот объект является энтитетом, который был обработан через уровень Fireasy
})
.ConfigureEasyUI();
}
services.AddSession()
.AddSessionRevive<SessionReviveNotification>(); // восстановление сессии
}
```
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )