I

in-ram-forum-in-csharp

Темы: C# Forum .net
+ ещё 9
Тактируемый движок форума на языке C# с лаконичным дизайном, поддержкой только русского языка, полным кэшированием, регулировкой нагрузки на сервер и экономией трафика.

Асбест

Движок форума версии 1.8.0.4

Преимущества этого артефакта

  • Экономия трафика
  • Полный кэш данных в оперативной памяти
  • Лаконичный и удобный интерфейс
  • Регулируемая нагрузка на процессор
  • Высокая надёжность
  • Экономия памяти
  • Собственные безопасные реализации аутентификации и капчи
  • Дизайн, свободный от любых фреймворков
  • Удобная для скрапинга разметка
  • Общение только на русском языке
  • Одна вкладка браузера - один пользователь
  • Режим для людей с ослабленным зрением
  • Личные сообщения поддерживаются
  • Продвинутая архитектура
  • Небольшой исполняемый файл
  • Минимальные зависимости
  • Цветные элементы кликабельны
  • Собственный парсер multipart/form-data

Определение номера версии:
Номер состоит из четырёх неотрицательных целых чисел, разделённых точкой, и соответствует шаблону A.B.C.D, где A обозначает номер улучшения или исправления безопасности, B - номер улучшения или исправления функционала, С - номер улучшения или исправления производительности, D - номер прочих улучшений и исправлений (D = 0 - релиз, иначе - beta-версия), причём увеличение одного из чисел старших разрядов номера версии обнуляет все младшие разряды. К примеру, если обновляется функционал и добавляются прочие исправления, но не изменяется производительность, то инкрементируется номер обновления функционала, как более важный параметр.

Код, использующий стороннее ПО, помещен в namespace Inclusions.
Методам, которые не могут вернуть данные, назначен постфикс Void.
Методам, возвращаемый тип которых может принимать значение null, назначен постфикс Nullable.
Методам in-memory хранилища, использующим внутреннюю блокировку lock, назначен постфикс Locked.
Непротестированные методы бизнес-логики находятся в class Unstable и после тестирования будут перенесены в class Stable.
Собственный функционал приложения находится в namespace Own.
Методы бизнес-логики, которые выполняются последовательно и не требуют специальной блокировки, находятся в namespace Own.Sequential.
Методы бизнес-логики, к которым осуществляется конкурентный доступ, и которые требуют использования блокировки, находятся в namespace Own.InRace.
Методы доступа к данным дискового хранилища находятся в классе Slow.
Методы доступа к данным in-memory хранилища и требующие оптимизации находятся в классе Fast.
Имена членов данных in-memory хранилища имеют постфикс Static.
Имена объектов блокировки имеют постфикс Locker.

Производительность приложения и нагрузка на сервер регулируются заданием величины периода тактирования Constants.TimerPeriodMilliseconds в миллисекундах. Меньшая величина даёт большие производительность и нагрузку и наоборот.
Код взаимодействует с внешним окружением через класс FriendlyFire.

Для корректной работы в базе данных должны храниться хотя бы одно личное сообщение и хотя бы один аккаунт (они изначально записываются скриптом установки базы данных).

Процесс установки на Linux 64 bits:

  1. Установите net8.0 runtime для консольных приложений и sqlite3
  2. $ cat Setup.sql | sqlite3 local.db
  3. $ dotnet publish
  4. Вы получили исполняемый файл, не требующий установки .NET CLR на сервер. Перейдите в папку $HOME/asbestos/bin/Release/net8.0/linux-x64/publish
  5. Скопируйте *.css, m.js, robots.txt и favicon.png из корневой папки проекта в эту папку и удалите файл asbestos.pdb
  6. Сделайте исполняемым файл asbestos и запустите
  7. В консоли должно появиться сообщение Listening... и форум должен стать доступным по адресу http://127.0.0.1:8090/ в браузере
  8. Для доступа извне рекомендуется использовать реверс-прокси

API

http://127.0.0.1:8090/v - генератор максимально безопасного пароля для аккаунта Google (Gmail и т.п.).

Для поиска по исходникам используйте команду $ grep -rnw 'path' -e 'pattern'

Движок Asbest разрабатывается Алексеем Сергеевичем Лотом с 2012 года в России для выработки навыков программирования.

Статус проекта

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

Лицензия

Продукт распространяется под лицензией Apache v2.0.

Хранилище исходного кода

Основной адрес исходных кодов проекта: https://hub.mos.ru/awesomedialup/in-ram-forum-in-csharp-old