I

in-ram-forum-in-csharp-old

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

Асбест

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

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

  • Экономия трафика
  • Полный кэш данных в оперативной памяти
  • Лаконичный и удобный интерфейс
  • Регулируемая нагрузка на процессор
  • Высокая надёжность
  • Экономия памяти
  • Собственные безопасные реализации аутентификации и капчи
  • Дизайн, свободный от любых фреймворков
  • Удобная для скрапинга разметка
  • Общение только на русском языке
  • Одна вкладка браузера - один пользователь
  • Режим для людей с ослабленным зрением
  • Личные сообщения поддерживаются
  • Продвинутая архитектура
  • Небольшой исполняемый файл
  • Минимальные зависимости
  • Цветные элементы кликабельны
  • Собственный парсер 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 года в России для выработки навыков программирования.

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

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