Загрузка 0
ПОДЕЛИТЬСЯ

Мой блог

Листай вниз

Разработка заметочника Leaflet для Windows на C# и Avalonia без WebView

Разработка заметочника Leaflet для Windows на C# и Avalonia без WebView

Создание компактного приложения для работы с Markdown-файлами без тяжелых веб-технологий позволяет эффективно организовать локальные текстовые архивы. В качестве альтернативы инструментам на базе Electron был спроектирован быстрый заметочник Leaflet на базе платформы Avalonia и языка C#, функционирующий напрямую в операционной системе Windows без использования сторонних браузерных движков.

Проект ориентирован на минималистичное хранение данных и высокую скорость работы, обеспечивая прямой доступ к структуре папок и сохранение файлов в исходном формате .md.

Разработка заметочника Leaflet для Windows на C# и Avalonia без WebView
Разработка заметочника Leaflet для Windows на C# и Avalonia без WebView — изображение 4
Разработка заметочника Leaflet для Windows на C# и Avalonia без WebView — изображение 5

Что планировалось реализовать в проекте

Основная концепция программы заключалась в отказе от закрытых баз данных в пользу обычных текстовых файлов, размещенных в произвольных директориях пользователя. Приложение должно поддерживать внутренние перекрестные ссылки вида [[Имя]], указание конкретных разделов, альтернативные подписи для ссылок, хештеги вида #проект/сайт, а также сквозной поиск по всему архиву записей.

Реклама

Важным требованием выступал живой просмотр содержимого непосредственно в редакторе: строка с активным курсором отображает исходную разметку Markdown, в то время как остальные строки рендерятся в оформленном виде. Кроме того, функциональность предусматривала экспорт документов в форматы HTML и PDF, а также распространение в виде портативной папки с исполняемым файлом, готовой к запуску на чистых версиях Windows 10 и 11 без предварительной инсталляции.

Архитектура и внутреннее устройство приложения

Модуль хранения Vault осуществляет чтение всех файлов с расширением .md из выбранной папки, игнорируя скрытые директории, формирует индекс связей и отслеживает изменения в файловой системе. Процесс записи документов выполняется через временный файл, предотвращающий повреждение данных в случае аварийного завершения работы. При перемещении или изменении названия заметки специальный алгоритм автоматически корректирует все ссылочные указатели в остальных файлах, сохраняя целостность структуры.

Интерфейс редактора построен на основе AvaloniaEdit. Живой просмотр реализован через систему генераторов элементов и трансформеров, скрывающих разметку на неактивных строках. Такой подход позволяет корректно обрабатывать таблицы, списки, изображения и встроенные блоки контента. Табличные данные преобразуются в отдельные графические элементы, списки сохраняют иерархическую структуру отступов, а встроенные теги отображаются в виде интерактивных элементов интерфейса.

Технические причины выбора Avalonia и особенности реализации

Использование связки WebView или Electron могло ускорить разработку визуальной части, однако привело бы к появлению тяжелого фонового процесса, росту потребления оперативности и увеличению времени старта. Платформа .NET 8 и графический движок Skia в составе Avalonia 12 обеспечивают запуск компактного нативного процесса. Из-за ограничений совместимости установленной версии SDK и компилятора весь пользовательский интерфейс был написан непосредственно на языке C# без использования XAML-разметки.

Темы оформления и настройки интерфейса Leaflet
Переключение тем и элементов управления в приложении

Показатели производительности на тестовой базе из более чем 5000 строк демонстрируют быстрый отклик интерфейса, минимальное потребление оперативной памяти и высокую скорость обработки пользовательского ввода. Экспорт в PDF выполняется силами библиотеки SkiaSharp, встроенной в графический стек, с применением кастомного алгоритма оптимизации шрифтов для уменьшения конечного размера документов.

Обеспечение надежности и обработка внештатных ситуаций

Поскольку программа работает с реальными пользовательскими файлами, разработчик уделил повышенное внимание безопасности данных. При внешнем изменении файла открытая вкладка переходит в режим конфликта, предлагая варианты разрешения ситуации. Фоновое сохранение черновиков срабатывает через полторы секунды после правки, а встроенная система снимков версий позволяет откатывать изменения.

Механизм контроля единственного экземпляра приложения использует системные мьютексы и поименованные каналы для передачи путей запуска. Логика позиционирования окон учитывает параметры масштабирования дисплеев и конфигурации многомониторных систем.

Сборка, поставка и текущие ограничения

Дистрибутив программы поставляется в виде ZIP-архива самодостаточной сборки, не требующей установленного .NET Runtime. В проекте отсутствуют поддержка плагинов, облачная синхронизация и мобильные версии, поскольку Leaflet задумывался как классический локальный заметочник для работы с файлами на ПК.

01.