Асбест
Движок форума версии 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:
- Установите net8.0 runtime для консольных приложений и sqlite3
- $ cat Setup.sql | sqlite3 local.db
- $ dotnet publish
- Вы получили исполняемый файл, не требующий установки .NET CLR на сервер. Перейдите в папку $HOME/asbestos/bin/Release/net8.0/linux-x64/publish
- Скопируйте *.css, m.js, robots.txt и favicon.png из корневой папки проекта в эту папку и удалите файл asbestos.pdb
- Сделайте исполняемым файл asbestos и запустите
- В консоли должно появиться сообщение Listening... и форум должен стать доступным по адресу http://127.0.0.1:8090/ в браузере
- Для доступа извне рекомендуется использовать реверс-прокси
API
http://127.0.0.1:8090/v - генератор максимально безопасного пароля для аккаунта Google (Gmail и т.п.).
Для поиска по исходникам используйте команду $ grep -rnw 'path' -e 'pattern'
Движок Asbest разрабатывается Алексеем Сергеевичем Лотом с 2012 года в России для выработки навыков программирования.
Статус проекта
Движок не рекомендован для промышленного использования на данный момент, поскольку есть известные баги. Разработка на C# остановлена.