返回列表

xiaokeer-cms

基于 .NET 8 的 Windows 桌面内容管理系统,实现文件托管、元数据索引与 MDX 转储功能。

.NETWPFC#SQLiteEntity Framework CoreASP.NET CoreMarkdown

项目简介

Xiaokeer CMS 是一个基于 .NET 8 的 Windows 桌面内容管理系统,面向个人用户,旨在解决本地电脑中文件分散、缺乏统一管理的问题。项目采用 WPF + ASP.NET Core 混合架构,实现文件托管、元数据索引、HTTP API 访问和 MDX 转储等核心功能,与 xiaokeer-discover 博客项目形成完整的工具链。

主要特性

  • 📁 文件托管中心:将散落在各处的文件统一托管到集中存储目录
  • 🏷️ 元数据索引:为每个文件生成 UUID,记录原始文件名、类型、大小、导入时间等
  • 🌐 HTTP API 服务:内嵌 Kestrel 服务器提供 RESTful API,支持内容检索、下载和预览
  • 📝 MDX 转储工具:支持将 Markdown 文件转储为 MDX 格式,与博客项目无缝对接
  • 🖼️ 图片智能处理:自动提取 Markdown 中的图片,重命名并存储到专用目录
  • 🔊 音效反馈系统:操作成功/失败时播放音效,提升用户体验

技术栈

类别技术
编程语言C# (.NET 8)
GUI 框架WPF (MVVM)
MVVM 工具CommunityToolkit.Mvvm
数据库SQLite + Entity Framework Core 8.0
HTTP 服务ASP.NET Core Minimal APIs (Kestrel)
Markdown 解析Markdig
MDX 验证Node.js + @mdx-js/mdx
依赖注入Microsoft.Extensions.Hosting

技术亮点

亮点一:WPF + ASP.NET Core 混合架构

项目创新性地将桌面应用与 HTTP API 服务融合:

  • 内嵌 Kestrel 服务器:在 WPF 应用中托管 ASP.NET Core,无需额外部署 Web 服务
  • Minimal APIs 设计:轻量级 API 端点定义,代码简洁高效
  • 统一生命周期管理:WPF 应用与 Kestrel 服务共享同一进程,统一启动和关闭
  • 跨进程访问支持:其他应用可通过 HTTP API 访问托管内容
// 内嵌 Kestrel 服务配置
var builder = WebApplication.CreateBuilder();
builder.WebHost.ConfigureKestrel(options =>
{
    options.Listen(IPAddress.Loopback, port);
});

亮点二:Markdown 图片智能处理

实现了完整的 Markdown 图片处理流程:

  • 图片提取:使用正则表达式解析 Markdown 中的图片引用
  • 智能重命名:将图片重命名为 {uuid}_{序号}.{ext} 格式,避免命名冲突
  • 路径更新:自动更新 Markdown 中的图片引用路径
  • 批量处理:支持一次性处理文档中的所有图片
// 图片处理核心逻辑
var imageMatches = Regex.Matches(content, @"!\[.*?\]\((.*?)\)");
foreach (Match match in imageMatches)
{
    var originalPath = match.Groups[1].Value;
    var newFileName = $"{contentId}_{index}{extension}";
    // 复制文件并更新引用
}

亮点三:跨语言 MDX 验证

实现了 C# 与 Node.js 的协作:

  • 进程间通信:C# 启动 Node.js 进程执行 MDX 验证脚本
  • 标准化输出:Node.js 脚本输出 JSON 格式的验证结果
  • 错误捕获:完整捕获标准输出和错误输出,便于调试
  • 与 Velite 兼容:使用 @mdx-js/mdx 作为验证引擎,与博客项目保持一致
// Node.js MDX 验证脚本
import { compile } from "@mdx-js/mdx";
const result = await compile(content);
console.log(JSON.stringify({ success: true }));

亮点四:批量操作设计模式

实现了健壮的批量操作机制:

  • 失败即停策略:任一操作失败立即停止,防止数据不一致
  • 进度实时反馈:通过事件机制实时更新操作进度
  • 可取消操作:支持用户中途取消批量操作
  • 详细日志记录:记录每个操作项的成功/失败状态

亮点五:音效反馈系统

提升了桌面应用的用户体验:

  • 多场景音效:成功、错误、警告、提示、点击等不同音效
  • 异步播放:不阻塞主线程,不影响操作流畅性
  • 可配置开关:用户可自由开启/关闭音效
  • 资源嵌入:音效文件嵌入程序资源,无需外部依赖

亮点六:MDX 同步状态判断

实现了 MD 文件与 MDX 文件的智能同步检测:

  • SHA256 哈希比较:精确检测内容变化
  • Frontmatter 处理:去除 Frontmatter 后比较 Markdown 内容
  • 四种状态区分:不支持MDX、MDX不存在、MDX不同步、MDX同步
  • 批量状态检验:支持一键检验所有文档的同步状态

项目截图

1 1 1

相关链接