当前位置: 首页 > news >正文

轻量级任务管理系统框架开发总结

Taskon是一个基于ASP.NET Core 8 Blazor+AntDesignBlazor打造的一个跨平台、轻量级、适合快速开发的小项目框架。

框架仅提供导航监控面板日志管理三个基础功能,但支持以插件的形式扩展功能与页面。

框架原生支持配置的热更新,理论上插件修改了配置后只需在监控面板软重启便可应用配置,无需重启进程。

除AntDesign字体图标外,框架还内置MaterialDesign字体图标,无需额外配置自动导入,直接使用类名即可。

更多图标参考MaterialDesign图标库:Material Design Icons - Icon Library - Pictogrammers

<iclass="mdi mdi-stop"></i>

实现原理很简单,另外注册一个虚拟文件提供程序,将字体及样式表文件放到wwwroot目录下并设置为嵌入的资源。

// 从磁盘加载静态资源 app.UseStaticFiles(); // 从Taskon程序集加载嵌入的静态资源 app.UseStaticFiles(new StaticFileOptions { FileProvider = new ManifestEmbeddedFileProvider(typeof(TaskonApplication).Assembly, "wwwroot") });

开始

新建一个Blazor Server项目,修改Main方法为如下:

public static void Main(string[] args) { var app = new TaskonApplication(); var additionalAssemblies = [typeof(Program).Assembly]; var pluginType = typeof(DataCoHj212Plugin); app.Run(args, additionalAssemblies, pluginType, builder => { if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) { builder.Host.UseWindowsService(); } else if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux)) { builder.Host.UseSystemd(); } }); }

其中additionalAssemblies参数用于附加业务程序集,指定pluginType以创建插件实例。

二次开发

开发业务项目时需要实现插件TaskPlugin,并使用TaskPluginMetadata描述插件元数据,公开接口定义如下:

public abstract class TaskPlugin { /// <summary> /// 菜单信息 /// </summary> public abstract List<MenuItem> Menus { get; } /// <summary> /// 配置服务依赖 /// </summary> /// <param name="services"></param> public abstract void Install(IServiceCollection services); /// <summary> /// 获取插件状态 /// </summary> public bool IsEnabled { get; } /// <summary> /// 启动插件 /// </summary> public void Start() { OnStarting(); _isEnabled = true; } protected abstract void OnStarting(); /// <summary> /// 停止插件 /// </summary> public void Stop() { OnStopping(); _isEnabled = false; } protected abstract void OnStopping(); /// <summary> /// 重启插件 /// </summary> public void Restart() { Stop(); Start(); } /// <summary> /// 获取任务插件的Id /// </summary> public string Id => _metadata.Id; /// <summary> /// 创建视图 /// </summary> /// <param name="title">标题</param> /// <param name="content">视图组件</param> protected void AddView(string title, RenderFragment content) { _views.Add(new ComponentView { Id = _views.Count, Title = title, Content = content }); } }

对于业务插件而言,需要实现的接口为:InstallOnStartingOnStoppingMenus

框架提供的监控面板页面默认提供启动/停止插件查看插件信息功能,具体的监控页面由插件实现,通过AddView方法将页面托管至监控面板。AddView方法可调用多次,当插件添加了多个视图时,监控面板呈现为多Tab形式。

除监控面板以外的页面建议添加为菜单,菜单图标仅支持AntDesignBlazor内置图标。

示例

以下代码定义了一个数据转发插件。

[TaskPluginMetadata("DataCo_HJ212", "万维盈创数据转发程序", "从万维盈创数采仪读取数据并通过HJ212协议上传至道农云")] public class DataCoHj212Plugin : TaskPlugin { public override List<MenuItem> Menus => new() { new MenuItem { Key = "setting", Title = "参数设置", Href = "/setting", IconType = "setting" } }; public DataCoHj212Plugin() { AddView("实时监控", builder => { builder.OpenComponent<RealtimeMonitor>(0); builder.CloseComponent(); }); } public override void Install(IServiceCollection services) { services.AddSingleton(xxx); } protected override void OnStarting() { // 实现插件启动逻辑 } protected override void OnStopping() { // 实现插件停止逻辑 } }

截图




http://www.jsqmd.com/news/1299493/

相关文章:

  • 山东邦达新型建材有限公司:全国雪弗板生产厂家,布局山东临沂等地区,绿色建材优选 - 十大品牌榜
  • 2026民办四大名校软硬件条件实力解析,避坑择校零套路 - myqiye
  • 终极指南:如何用OnmyojiAutoScript一键解放双手,轻松玩转阴阳师
  • Rust实战:从命令行工具到GUI应用,构建文件批处理与音乐播放器
  • 【合肥理工学校】招生办电话是多少?升学逆袭路径说明 - zshll
  • Python xhs库:破解小红书数据采集的技术壁垒与工程实践
  • Windows平台APK安装三步法:零基础实现安卓应用直接运行
  • 2026 长沙手机维修、电脑回收实测,闲置数码处理别盲目踩坑 - LYL仔仔
  • SpringBoot公寓报修管理系统开发与优化实践
  • 2026湖南口碑不错的商务车租赁企业推荐,价格透明避坑 - myqiye
  • 苏州制造业企业宣传片怎么拍? - 江苏费尔蒙
  • 降 AI 工具改写质量盲测:同一段话五家改完,谁读起来更像人写的
  • Python游戏开发实战:从零构建“武装飞船”射击游戏
  • Nginx HTTPS端口接收HTTP请求的400错误:原理、排查与解决方案
  • 爬虫代理池搭建指南:从IP采集到自动淘汰的完整流程
  • Steam Achievement Manager:深度解析开源成就管理工具的技术实现与实战应用
  • AWS 开源 aws-bench:AI Agent 终于有了统一的云操作评估标准
  • 昆明代理记账怎么选?这家机构把 11236 条税法政策做成了每日推送 - 品牌品鉴馆
  • 2026盘点:西安摩天地标公司实力全解析,谁在定义城市天际线? - 装修教育财税推荐2026
  • 同余,逆元与exgcd
  • Qoder自动化额度重置工具:邮件触发与API调用的完整实现方案
  • 终极消息防撤回神器:RevokeMsgPatcher让Windows微信QQ消息永久可见的完整指南
  • 大冶市防水补漏_2026鄂东千年矿冶名城漏水维修价格行情与五大正规团队推荐 - 雨婺虹房屋维修
  • 西安全屋定制公司靠谱榜单,避坑指南助你选对不踩雷 - myqiye
  • 企业级Data Agent开发平台选型指南:6大维度评估与8大品牌深度解读
  • 终极指南:如何用猫抓浏览器扩展一键捕获网页视频和音频资源
  • 2026高质量数据集管理平台:行业趋势、权威评估体系与主流厂商深度解析
  • LLM:Agent 的大脑
  • 震惊!一台高性能LED推拉力测试机,价格竟让你意想不到!
  • 2026年权威揭秘!成都电缆厂家大曝光,谁能拔得头筹? - 企业推荐官