1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/faib920-fireasy2

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

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 представляет собой набор общедоступных библиотек, предоставляющих некоторые общие классы и методы:

  1. Конфигурация обработки: расширение на основе System.Configuration (.net framework) / IConfiguration (.net core), которое предоставляет определение, анализ и расширение пользовательских разделов конфигурации. Особенно полезно поместить раздел конфигурации на основе Fireasy в отдельный файл конфигурации.
  2. Управление кэшем: определение набора интерфейсов для управления кэшем приложения и реализация по умолчанию кэширования на основе памяти.
  3. Управление журналом: определение набора интерфейсов для записи журналов типа info, error, warn и т. д., и реализация по умолчанию ведения журнала на основе локального хранилища файлов, преимущество которого заключается в использовании очереди для операций записи.
  4. Компиляция кода: расширение на основе CodeDom, которое может компилировать фрагмент кода в класс или метод делегата. Может быть использовано в пользовательских формулах.
  5. Динамическая компиляция: расширение на основе Emit, которое предоставляет конструкторы для сборки, класса, метода, атрибута, перечисления и т.д., упрощая процесс динамического создания кода.
  6. Безопасность пароля: предоставление интерфейса шифрования и дешифрования, который интегрирует реализацию DES, MD5, RC2, SHA1, RSA, DSA и других алгоритмов.
  7. Сериализация объектов: предоставление интерфейсов сериализации/десериализации объектов, двоичная сериализация может выполнять двоичное шифрование и сжатие, реализуя сериализацию/десериализацию Json и XML, аналогично newtonsoft.
  8. Контроль инверсии: простой в использовании IOC, конфигурация которого может использоваться вместе с .net core.
  9. Аспектно-ориентированное программирование (АОП): простой в использовании АОП, который позволяет перехватывать методы и свойства.
  10. Расширение MEF: предоставляет конфигурацию и фильтрацию MEF.
  11. Методы расширения: предоставляет общие методы расширения для строк, дат, типов, обработки китайского языка и отражения.
  12. Совместное использование данных в потоке: обеспечивает область обмена данными в одном потоке, которая также эффективна при использовании async / await.
  13. Подписка на события: определение набора интерфейсов публикации тем/подписки на события, реализация по умолчанию основана на очереди и синхронном управлении подпиской.
  14. Блокировка потока: определение интерфейсов блокировки чтения/записи, одноэлементной блокировки, асинхронной блокировки и распределённой блокировки.
  15. Кэш отражения: использование кэша для повышения производительности вызовов отражения.
  16. Локализация: определение набора стратегий локализации, которые можно использовать для настройки ресурсов локализации на основе файлов ресурсов или XML.
  17. Монитор времени: предоставляет таймер для регистрации времени выполнения методов.
  18. Планировщик задач: предоставляет планировщик для выполнения фоновых задач в заданное время.
  19. Блокировки потоков/асинхронные блокировки: предоставляют блокировки потоков, асинхронные блокировки и распределённые блокировки.

Fireasy.Data — библиотека классов для доступа к базе данных на нижнем уровне, поддерживающая распространённые базы данных, такие как MsSql, Oracle, MySql, SQLite, PostgreSql, Firebird и другие.

  1. Настройка экземпляра: в рамках одного приложения можно предоставить несколько конфигураций экземпляров, что позволяет получить доступ к различным базам данных. Кроме того, предоставляется конфигурация кластера, которая может реализовать разделение чтения и записи.
  2. Адаптеры: интерфейс IProvider используется для адаптации различных баз данных и получения объектов DbProviderFactory для работы с различными базами данных. Этот адаптер автоматически адаптируется к популярным драйверам через отражение, и вам нужно только добавить соответствующие пакеты nuget, в библиотеке Fireasy нет жёстких ссылок.
  3. Операции с базой данных: интерфейс IDatabase предоставляет различные методы ADO.NET, такие как заполнение DataSet, возврат Enumerable (включая T и dynamic), возврат DataReader, обновление DataTable, операции с транзакциями и т. д. Поддерживает разделение чтения и записи.
  4. Параметризация: унифицированное использование @ в качестве префикса, кодирование не требует учёта различий между базами данных, оно автоматически преобразуется в соответствии с типом базы данных. В настоящее время поддерживается in (@array) для параметров значения коллекции.
  5. Параметры разбивки на страницы: DataPager используется для указания параметров разбивки на страницы при запросах.
  6. Фабрика баз данных: на основе конфигурации экземпляра, DatabaseFactory может возвращать соответствующий объект IDatabase.
  7. Обмен данными между потоками: если вы используете фабрику баз данных для создания экземпляра в дочернем методе, он будет внешним экземпляром, избегая повторного создания ресурсов.
  8. Вложенность транзакций: если внешняя транзакция уже открыта, повторная попытка открытия транзакции внутри дочернего метода будет проигнорирована, а фиксация транзакции действительна только во внешней транзакции, обеспечивая согласованность транзакций.
  9. Отслеживание команд: настройка отслеживания в строке подключения может отслеживать выполнение каждой команды объекта доступа к данным и время, затраченное на выполнение команды.
  10. Расширяемость поставщика: поддержка расширения адаптера на основе плагинов. Включает: расширение резервного копирования данных, расширение пакетной вставки данных, расширение упаковки записей данных, расширение архитектуры данных, расширение синтаксиса и расширение генератора.
  11. Расширение резервного копирования данных: в настоящее время реализовано только резервное копирование MsSql.
  12. Расширение пакетной вставки данных: реализовано пакетное внедрение различных типов баз данных, эта пакетная вставка отличается от обычной вставки, она реализует вставку данных уровня 10 Вт в секунду.
  13. Расширение упаковки записей данных: для каждого типа базы данных данные, считываемые из IDataReader, упаковываются для обеспечения согласованности типов данных.
  14. Расширение архитектуры данных: предоставляет функции запроса метаданных, которые поддерживают различные типы баз данных, возвращают информацию о базе данных, пользователях, таблицах данных, полях данных, хранимых процедурах, внешних ключах, индексах и другой подробной информации.
  15. Расширение синтаксиса: используется для интеграции синтаксических различий между различными базами данных, предоставления параметров префиксов, escape-символов, преобразования типов данных, форматирования страниц, строковых соединений, пустых суждений, самогенерируемых сценариев, а также различных функций полей, функций даты и математических функций.
  16. Расширение генератора: для баз данных без функции автоматического увеличения, таких как oracle, можно использовать последовательность для генерации значений первичного ключа. Кроме того, также предоставляется общий способ предоставления значений последовательности.
  17. Преобразование богатых типов: объекты Color, Image, Font, Point, Exception и другие могут быть помещены в библиотеку и извлечены из неё. Эти объекты настраиваются и могут быть расширены.
  18. Оценка разбиения на страницы: предоставляет методы расчёта разбиения на страницы для больших и малых объёмов данных. По умолчанию используется метод TotalRecordEvaluato, но для больших объёмов данных можно использовать TryNextEvaluator.
  19. Сортировка преобразователя: при сортировке используется для сопоставления полей переднего плана с полями базы данных. ``` 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 )

Вы можете оставить комментарий после Вход в систему

Введение

Описание недоступно Развернуть Свернуть
C# и 3 других языков
LGPL-3.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/faib920-fireasy2.git
git@api.gitlife.ru:oschina-mirror/faib920-fireasy2.git
oschina-mirror
faib920-fireasy2
faib920-fireasy2
2.2