Fireasy — это набор компонентов для разработки приложений на основе .Net Framework, основная идея которого заключается в том, чтобы сделать разработку проще. Для этого используется как можно меньше компонентов для реализации необходимых функций.
Fireasy охватывает практически все технологии, которые могут использоваться в разработке, такие как Log, Cache, AOP, IOC, ORM, MVC и другие. Также предоставляются адаптеры для таких компонентов, как Redis, RabbitMQ, NLog, Log4net и других.
- Fireasy.Common
- Fireasy.Data
- Fireasy.Data.Entity
- Fireasy.Web.Mvc
- Fireasy.Web.EasyUI
- Fireasy.Web.Sockets
- Fireasy.Windows.Forms
- Fireasy.Redis
- Fireasy.RabbitMQ
- Fireasy.NLog
- Fireasy.Log4net
- Fireasy.Newtonsoft
- Fireasy.MongoDB
- Fireasy.QuartzNet
- Fireasy.Aliyun.AMQP
Онлайн-документация Fireasy доступна по адресу http://www.fireasy.cn/docs.
Демо-проект Fireasy доступен на GitHub по адресу https://github.com/faib920/zero.
Fireasy.Common представляет собой набор общедоступных библиотек, предоставляющих некоторые общие классы и методы:
-
Конфигурация обработки: расширение на основе System.Configuration (.net framework) / IConfiguration (.net core), которое предоставляет определение, анализ и расширение пользовательских разделов конфигурации. Особенно полезно поместить раздел конфигурации на основе Fireasy в отдельный файл конфигурации.
-
Управление кэшем: определение набора интерфейсов для управления кэшем приложения и реализация по умолчанию кэширования на основе памяти.
-
Управление журналом: определение набора интерфейсов для записи журналов типа info, error, warn и т. д., и реализация по умолчанию ведения журнала на основе локального хранилища файлов, преимущество которого заключается в использовании очереди для операций записи.
-
Компиляция кода: расширение на основе CodeDom, которое может компилировать фрагмент кода в класс или метод делегата. Может быть использовано в пользовательских формулах.
-
Динамическая компиляция: расширение на основе Emit, которое предоставляет конструкторы для сборки, класса, метода, атрибута, перечисления и т.д., упрощая процесс динамического создания кода.
-
Безопасность пароля: предоставление интерфейса шифрования и дешифрования, который интегрирует реализацию DES, MD5, RC2, SHA1, RSA, DSA и других алгоритмов.
-
Сериализация объектов: предоставление интерфейсов сериализации/десериализации объектов, двоичная сериализация может выполнять двоичное шифрование и сжатие, реализуя сериализацию/десериализацию Json и XML, аналогично newtonsoft.
-
Контроль инверсии: простой в использовании IOC, конфигурация которого может использоваться вместе с .net core.
-
Аспектно-ориентированное программирование (АОП): простой в использовании АОП, который позволяет перехватывать методы и свойства.
-
Расширение MEF: предоставляет конфигурацию и фильтрацию MEF.
-
Методы расширения: предоставляет общие методы расширения для строк, дат, типов, обработки китайского языка и отражения.
-
Совместное использование данных в потоке: обеспечивает область обмена данными в одном потоке, которая также эффективна при использовании async / await.
-
Подписка на события: определение набора интерфейсов публикации тем/подписки на события, реализация по умолчанию основана на очереди и синхронном управлении подпиской.
-
Блокировка потока: определение интерфейсов блокировки чтения/записи, одноэлементной блокировки, асинхронной блокировки и распределённой блокировки.
-
Кэш отражения: использование кэша для повышения производительности вызовов отражения.
-
Локализация: определение набора стратегий локализации, которые можно использовать для настройки ресурсов локализации на основе файлов ресурсов или XML.
-
Монитор времени: предоставляет таймер для регистрации времени выполнения методов.
-
Планировщик задач: предоставляет планировщик для выполнения фоновых задач в заданное время.
-
Блокировки потоков/асинхронные блокировки: предоставляют блокировки потоков, асинхронные блокировки и распределённые блокировки.
Fireasy.Data — библиотека классов для доступа к базе данных на нижнем уровне, поддерживающая распространённые базы данных, такие как MsSql, Oracle, MySql, SQLite, PostgreSql, Firebird и другие.
-
Настройка экземпляра: в рамках одного приложения можно предоставить несколько конфигураций экземпляров, что позволяет получить доступ к различным базам данных. Кроме того, предоставляется конфигурация кластера, которая может реализовать разделение чтения и записи.
-
Адаптеры: интерфейс IProvider используется для адаптации различных баз данных и получения объектов DbProviderFactory для работы с различными базами данных. Этот адаптер автоматически адаптируется к популярным драйверам через отражение, и вам нужно только добавить соответствующие пакеты nuget, в библиотеке Fireasy нет жёстких ссылок.
-
Операции с базой данных: интерфейс IDatabase предоставляет различные методы ADO.NET, такие как заполнение DataSet, возврат Enumerable (включая T и dynamic), возврат DataReader, обновление DataTable, операции с транзакциями и т. д. Поддерживает разделение чтения и записи.
-
Параметризация: унифицированное использование @ в качестве префикса, кодирование не требует учёта различий между базами данных, оно автоматически преобразуется в соответствии с типом базы данных. В настоящее время поддерживается in (@array) для параметров значения коллекции.
-
Параметры разбивки на страницы: DataPager используется для указания параметров разбивки на страницы при запросах.
-
Фабрика баз данных: на основе конфигурации экземпляра, DatabaseFactory может возвращать соответствующий объект IDatabase.
-
Обмен данными между потоками: если вы используете фабрику баз данных для создания экземпляра в дочернем методе, он будет внешним экземпляром, избегая повторного создания ресурсов.
-
Вложенность транзакций: если внешняя транзакция уже открыта, повторная попытка открытия транзакции внутри дочернего метода будет проигнорирована, а фиксация транзакции действительна только во внешней транзакции, обеспечивая согласованность транзакций.
-
Отслеживание команд: настройка отслеживания в строке подключения может отслеживать выполнение каждой команды объекта доступа к данным и время, затраченное на выполнение команды.
-
Расширяемость поставщика: поддержка расширения адаптера на основе плагинов. Включает: расширение резервного копирования данных, расширение пакетной вставки данных, расширение упаковки записей данных, расширение архитектуры данных, расширение синтаксиса и расширение генератора.
-
Расширение резервного копирования данных: в настоящее время реализовано только резервное копирование MsSql.
-
Расширение пакетной вставки данных: реализовано пакетное внедрение различных типов баз данных, эта пакетная вставка отличается от обычной вставки, она реализует вставку данных уровня 10 Вт в секунду.
-
Расширение упаковки записей данных: для каждого типа базы данных данные, считываемые из IDataReader, упаковываются для обеспечения согласованности типов данных.
-
Расширение архитектуры данных: предоставляет функции запроса метаданных, которые поддерживают различные типы баз данных, возвращают информацию о базе данных, пользователях, таблицах данных, полях данных, хранимых процедурах, внешних ключах, индексах и другой подробной информации.
-
Расширение синтаксиса: используется для интеграции синтаксических различий между различными базами данных, предоставления параметров префиксов, escape-символов, преобразования типов данных, форматирования страниц, строковых соединений, пустых суждений, самогенерируемых сценариев, а также различных функций полей, функций даты и математических функций.
-
Расширение генератора: для баз данных без функции автоматического увеличения, таких как oracle, можно использовать последовательность для генерации значений первичного ключа. Кроме того, также предоставляется общий способ предоставления значений последовательности.
-
Преобразование богатых типов: объекты Color, Image, Font, Point, Exception и другие могут быть помещены в библиотеку и извлечены из неё. Эти объекты настраиваются и могут быть расширены.
-
Оценка разбиения на страницы: предоставляет методы расчёта разбиения на страницы для больших и малых объёмов данных. По умолчанию используется метод TotalRecordEvaluato, но для больших объёмов данных можно использовать TryNextEvaluator.
-
Сортировка преобразователя: при сортировке используется для сопоставления полей переднего плана с полями базы данных. ```
db.ExecuteEnumerable((SqlCommand)"select * from customers");
// Разбиение на страницы, параметризация
var ds = new DataSet();
var paper = new DataPager(5, 0);
var parameters = new ParameterCollection();
parameters.Add("city", "London");
db.FillDataSet(ds, (SqlCommand)"select city from customers where city <> @city", segment: paper, parameters: parameters);
// Массовая вставка
var list = new List();
for (var i = 0; i < 100000; i++)
{
list.Add(new BatcherData { ID = i, NAME = new Size(12, 20), BIRTHDAY = DateTime.Now });
}
var provider = db.Provider.GetService();
provider.Insert(db, list, "BATCHERS");
// Получение всех определений таблиц
var schema = db.Provider.GetService();
var parameter = db.Provider.GetConnectionParameter(db.ConnectionString);
foreach (var table in schema.GetSchemas
(db, s => s.Schema == parameter.Schema))
{
Console.WriteLine(table.Name + "," + table.Description);
}
**Fireasy.Data.Entity**
Объектно-реляционный преобразователь данных (ORM) с использованием LINQ.
* Зависимые свойства: это свойства, которые отслеживают изменения значений свойств и уведомляют об этих изменениях. Они тесно связаны с методами GetValue и SetValue.
* Свойства сущности и свойства коллекции сущностей: аналогичны навигационным свойствам в EF. Предназначены для реализации связанных запросов.
* Модель сущности: IEntity определяет набор характеристик сущностей. GetValue и SetValue тесно связаны с зависимыми свойствами. LightEntity — это базовый класс, который используется в настоящее время. Он автоматически выполняет AOP-проксирование при инициализации EntityContext, что позволяет сущностям сохранять состояние. Поэтому ваши свойства должны быть определены как virtual.
* Отношения сущностей: похожи на отношения в EF и используются для определения отношений между сущностями. Если имена первичных и внешних ключей совпадают, отношения создаются автоматически. В противном случае необходимо использовать RelationshipAttribute или RelationshipAssignAttribute.
* Контекст сущности: предоставляет данные контекста, аналогичные EF, называемые EntityContext. Может использоваться в режиме CodeFirst.
* Пул объектов контекста сущности: позволяет использовать пул объектов для повышения эффективности использования объектов и снижения времени создания объектов.
* Хранилище сущностей: каждое хранилище сущностей соответствует одной сущности. Они находятся в EntityContext и предоставляют возможности LINQ-запросов, вставки, обновления, удаления и т. д.
* Адаптер хранилища: по умолчанию используется адаптер на основе Fireasy.Data, но можно реализовать и другие адаптеры для работы с другими фреймворками, такими как EF или MongoDB.
* Запросы LINQ: поддерживают стандартные запросы LINQ, такие как Where, OrderBy, GroupBy и Join.
* Логическое удаление: после установки логического удаления для сущности, она будет автоматически исключена из запросов.
* Глобальный фильтр: метод Apply может определить глобальные фильтры для определенного типа сущности.
* Отложенная загрузка: для связанных свойств данные загружаются только при необходимости.
* Ленивая загрузка: чтобы избежать множественных запросов к базе данных при использовании связанных свойств, можно использовать Include для предварительной загрузки данных.
* Методы расширения: методы расширения для LINQ-запросов, такие как Segment, AssertWhere, ExtendAs, BatchOr, BatchAnd и CacheParsing.
* Деревья: используются коды, подобные 00010001, для управления древовидной структурой. Предоставляются методы для вставки, перемещения, перечисления потомков, рекурсивного получения родителей и поиска братьев.
* Проверка данных: основана на DataAnnotations для проверки данных сущностей.
* Транзакции: основаны на Scope для управления транзакциями внутри потока.
* Среда сохранения: параметры среды используются для форматирования имен таблиц сущностей и обеспечения горизонтального расширения таблиц.
* Подписка на события сохранения: предоставляется подписчик для обработки событий сохранения, таких как создание, обновление и удаление. События могут быть Before или After, а Before также может отменять операцию.
* Динамическое сохранение: динамическое построение типов сущностей для выполнения операций сохранения.
* Кэш разбора: при разборе LINQ можно включить автоматический кэш разбора (по умолчанию включен), что ускорит разбор LINQ. Кэш хранится в памяти, и есть проблемы с кэшированием некоторых LINQ-разборов. Можно отключить кэш разбора в запросе с помощью CacheParsing.
* Кэширование запросов: можно включить автоматическое кэширование результатов LINQ-запросов (по умолчанию отключено). Кэширование обеспечивается Fireasy.Common менеджером кэша (рекомендуется использовать Redis). Можно также указать, следует ли включать кэширование запроса в самом запросе с помощью CacheExecution.
* Пользовательские функции: использование пользовательских методов в LINQ, соответствующих функциям базы данных.
* Связывание методов: возможность привязки пользовательских методов к LINQ для их преобразования в анализируемые лямбда-выражения. ```
= 1 }, s => s.OrderDate >= DateTime.Now);
//Расчетный способ обновления
context.Orders.Update(s => new Orders { Freight = s.Freight * 100 }, s => s.OrderDate >= DateTime.Now);
//Удаление по условию
context.Orders.Delete(s => s.OrderDate > DateTime.Now);
//Пакетная вставка
var depts = new List<Depts>();
for (var i = 0; i < 100; i++)
{
var d = Depts.New();
d.DeptName = "Тест" + i;
depts.Add(d);
}
context.Depts.Batch(depts, (u, s) => u.Insert(s));
}
Fireasy.Web.Mvc
Расширение для Asp.Net MVC, предоставляющее фабрику контроллеров, которая бесшовно интегрируется с IOC.
- Пакетная конфигурация: в отличие от пакета, предоставленного MVC, ресурсы настраиваются в web.config.
- Фабрика контроллеров: бесшовная интеграция с IOC, а также анализ сложных параметров действий и преобразователи сериализации JSON.
- Расширения HTML: предоставляет часто используемые расширения HTML.
- Оболочка JSON: используйте преобразователь JSON для легкого получения желаемого результата.
Fireasy.Web.EasyUI
- Расширение HTML для EasyUI.
QQ номер: 55570729
QQ группы: 6406277, 225698098

Комментарии ( 0 )