拓冰建站拓冰建站
首页 / 资讯中心 / 正文

Jot是什么:.NET应用状态持久化库完全指南,告别繁琐的设置文件

Jot是什么.NET应用状态持久化库完全指南告别繁琐的设置文件【免费下载链接】JotJot is a library for persisting and applying .NET application state.项目地址: https://gitcode.com/gh_mirrors/jot1/JotJot 是一个轻量级的.NET 应用状态持久化库它的核心使命只有一个让你彻底告别手写配置文件的读写代码。在 Windows 桌面开发中无论是保存窗口的大小位置、记住用户上次输入的数据还是持久化应用偏好设置Jot 都能用几行声明式代码轻松搞定。本篇文章是面向新手的 Jot 完全指南将带你认识这个开源状态持久化库的概念、安装方法、经典使用场景和进阶玩法帮你写出更简洁、更优雅的 .NET 代码。Jot是什么一个帮你记住一切的 .NET 状态持久化库几乎每一个应用都需要记录自己的状态比如️ UI 中可移动、可调整大小的元素窗体、工具栏、停靠面板的尺寸和位置 用户上次输入的数据用户名、选中的 Tab 页、最近打开的文件⚙️ 各种设置和用户偏好传统做法是把这些数据写进.settings文件然后在代码里手动读取、赋值、再写回。这种写法充满样板代码枯燥、易错、毫无乐趣。而 Jot 的思路完全不同你只需要声明要跟踪哪些对象的哪些属性以及何时保存、何时恢复剩下的交给库来做。这是一种更高级的抽象让代码可读性更强、更简洁。为什么需要 Jot传统 .settings 文件的三大痛点拿保存窗口大小和位置这个最常见的需求举例。使用.settings文件的传统方案每个属性要在五个地方出现设置文件里定义一次、构造函数里赋值一次、OnClosed里写回两次再加一次Save()。如果界面里有 10 个可调整大小的元素设置文件就会变成一堆命名相似的属性丛林极其痛苦。对比维度传统 .settings 方案Jot 方案每个属性出现次数5 次1 次代码量大量样板代码声明式配置新增跟踪属性要改 5 处改 1 处出错概率高容易漏写、写错极低Jot 快速安装教程一行命令引入 NuGet 包Jot 已发布在 NuGet 上安装非常简单在包管理器控制台执行install-package Jot或者在你的项目文件中添加包引用后还原即可。安装完成后核心的Tracker类、TrackingConfiguration配置类和JsonFileStore存储类就都可用啦。Jot 入门示例让 WPF 窗口自动记忆大小和位置这是 Jot 最经典的场景。整个过程分两步第一步在启动类中配置 Tracker告诉它如何跟踪 Window 对象// 创建全局 Tracker 实例也可以交给 IOC 容器管理 public static Tracker Tracker new Tracker(); // 配置如何跟踪 Window 对象 Tracker.ConfigureWindow() .Id(w w.Name, SystemInformation.VirtualScreen.Size) // 用窗口名屏幕分辨率作为标识 .Properties(w new { w.Top, w.Width, w.Height, w.Left, w.WindowState }) // 要跟踪的属性 .PersistOn(nameof(Window.Closing)) // 窗口关闭时保存 .StopTrackingOn(nameof(Window.Closing)); // 关闭后停止跟踪第二步在每个窗口构造函数里跟踪实例public MainWindow() { InitializeComponent(); Services.Tracker.Track(this); // 恢复上次状态 开始监听保存事件 }就这么简单之后用户拖动窗口、改变大小、关闭程序下次启动时窗口会自动恢复到上次的位置和尺寸。细心的你可能注意到我们在Id中加入了屏幕分辨率——这样即使显示器被拔掉或分辨率变化Jot 也会为每种屏幕配置分别保存状态永远不会把窗口定位到不存在的屏幕上。这一场景的完整代码可以参考 Demo 项目Demo/TestWPF/Services.cs 和 Demo/TestWPF/MainWindow.xaml.cs。WinForms 窗口位置记忆Jot 实战配置方法WinForms 相比 WPF 有两个小坑一是窗体最大化/最小化时会返回错误的尺寸数据需要取消保存二是Top/Left属性在构造函数里设置会被覆盖必须在OnLoad中跟踪。配置示例tracker.ConfigureForm() .Id(f f.Name, SystemInformation.VirtualScreen.Size) .Properties(f new { f.Top, f.Width, f.Height, f.Left, f.WindowState }) .PersistOn(nameof(Form.Move), nameof(Form.Resize), nameof(Form.FormClosing)) .WhenPersistingProperty((f, p) p.Cancel (f.WindowState ! FormWindowState.Normal (p.Property nameof(Form.Height) || p.Property nameof(Form.Width) || p.Property nameof(Form.Top) || p.Property nameof(Form.Left)))) .StopTrackingOn(nameof(Form.FormClosing));然后在窗体的OnLoad中调用tracker.Track(this)。此外 Jot 也支持 Avalonia UI处理逻辑与 WPF 类似只需额外注意最小化和负坐标的边界情况。WinForms 完整示例见 Demo/TestWinForms/TestForm.cs。Jot 数据存储在哪认识默认的 JsonFileStoreJot 的Tracker构造函数可以接收一个IStore存储实现内置的默认实现是 JsonFileStore.cs。不传参数时数据会以JSON 文件形式保存在%AppData%\[公司名]\[应用名]目录下每个被跟踪对象一个独立文件读写都很快。你也可以自定义存储位置// 存到公共数据目录每台机器共享 var tracker new Tracker(new JsonFileStore(Environment.SpecialFolder.CommonApplicationData)); // 或指定任意文件夹 var tracker new Tracker(new JsonFileStore(c:\example\path\));如果想把数据存到数据库、云端多设备同步设置甚至其他地方只需要实现超级简单的 IStore.cs 接口——它只有获取和保存字典数据两个方法自由度极高。Jot 高级玩法属性追踪、事件触发与 IOC 集成用属性标注代替配置代码除了 Fluent 配置Jot 还支持用特性Attribute声明跟踪。给属性加上[Trackable]给事件加上[PersistOn]/[StopTrackingOn]Jot 会自动识别。相关特性定义见 Jot/Configuration/Attributes/ 目录。手动控制保存时机除了事件自动触发你还可以随时手动保存tracker.Persist(target); // 保存单个对象 tracker.PersistAll(); // 保存所有仍存活的对象通常放在应用退出时 tracker.StopTracking(target);// 停止跟踪如窗体已销毁值转换与取消挂钩Jot 提供四个钩子WhenPersistingProperty、WhenApplyingProperty、WhenAppliedState、WhenPersisted可以在保存/恢复时做值转换或取消操作比如 WinForms 中最大化时取消保存尺寸。继承支持与运行时配置继承为基类配置的跟踪规则会自动复制给派生类你只需补充额外属性。例如配置了Form后再为MyForm添加一个 Tab 索引属性即可。ITrackingAware当编译期无法确定要跟踪哪些属性时让对象实现 ITrackingAware.cs 接口在ConfigureTracking方法中按实例动态配置比如动态跟踪 DataGridView 所有列宽。IOC 容器自动跟踪这是 Jot 最酷的特性之一结合 SimpleInjector 等 IOC 容器一行代码即可让容器创建的所有对象自动被跟踪container.RegisterInitializer(d { tracker.Track(d.Instance); }, cx true);从此以后想让任何对象的任何属性持久化只需修改该类型的跟踪配置即可堪称配置即持久化。总结为什么新手也值得试试 JotJot 作为一款 .NET 状态持久化库把保存应用状态这件事从繁琐的手工劳动变成了优雅的声明式配置。它代码量少、抽象清晰、支持 WPF / WinForms / Avalonia还有存储可扩展、IOC 集成等进阶能力。核心源码都在 Jot/Tracker.cs 和 Jot/Configuration/TrackingConfiguration.cs 中非常值得阅读学习。如果你想运行自带 Demo 亲自体验可以克隆仓库git clone https://gitcode.com/gh_mirrors/jot1/Jot然后打开Jot.sln解决方案运行 WPF 或 WinForms 示例拖动几下窗口再重启你就会惊叹原来窗口位置记忆可以这么简单【免费下载链接】JotJot is a library for persisting and applying .NET application state.项目地址: https://gitcode.com/gh_mirrors/jot1/Jot创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门