当前位置: 首页> 房产> 建筑 > 爱网逛_游戏开发是什么_青岛seo网站管理_百度自动优化

爱网逛_游戏开发是什么_青岛seo网站管理_百度自动优化

时间:2025/7/12 6:23:00来源:https://blog.csdn.net/qq_40374647/article/details/146372803 浏览次数:2次
爱网逛_游戏开发是什么_青岛seo网站管理_百度自动优化

深入解析 TouchSocket 插件系统架构与实践

        • 一、概述
        • 二、产品特点
        • 三、应用场景
        • 四、与传统事件/委托的区别
        • 五、创建插件
          • 5.1 定义插件接口及事件类
          • 5.2 实现插件接口
        • 六、订阅插件
          • 6.1 创建插件管理器
          • 6.2 添加订阅插件
            • 6.2.1 按类型添加
            • 6.2.2 按实例添加
            • 6.2.3 按委托添加
        • 七、触发插件
        • 八、插件特性
        • 九、提升插件性能
          • 9.1 性能测试
          • 9.2 注册委托
          • 9.3 源生成插件
        • 十、示例代码仓库

一、概述

TouchSocket 的插件系统是一组能够实现多播订阅、可中断的触发器,其核心功能是提供类似事件或委托的通知机制。该系统的设计灵感来源于 AspNetCore 的中间件,不仅具备与中间件相似的使用体验,还提供了更高的灵活性和自由度。

二、产品特点
  • 简单易用:开发者可以轻松定义和实现插件。
  • 易扩展:支持继承、扩展以及依赖注入,便于构建模块化功能。
三、应用场景

适用于所有需要事件或委托通知的场景,例如:

  • 数据处理管道
  • 中间件逻辑
  • 模块化功能开发
四、与传统事件/委托的区别
特性插件系统传统事件/委托
订阅方是否需要知道被订阅方不需要需要
是否支持中断支持不支持
是否支持回调支持不支持
是否支持继承支持不支持
是否支持依赖注入支持不支持
五、创建插件
5.1 定义插件接口及事件类
public class MyPluginEventArgs : PluginEventArgs
{public string Words { get; set; }
}public interface ISayPlugin : IPlugin
{Task Say(object sender, MyPluginEventArgs e);
}
5.2 实现插件接口

推荐继承 PluginBase 类以简化实现过程:

public class SayHelloPlugin : PluginBase, ISayPlugin
{public async Task Say(object sender, MyPluginEventArgs e){Console.WriteLine($"{this.GetType().Name}------Enter");if (e.Words == "hello"){Console.WriteLine($"{this.GetType().Name}------Say");return;}await e.InvokeNext();Console.WriteLine($"{this.GetType().Name}------Leave");}
}
六、订阅插件
6.1 创建插件管理器
IPluginManager pluginManager = new PluginManager(new Container())
{Enable = true
};
6.2 添加订阅插件
6.2.1 按类型添加
pluginManager.Add<SayHelloPlugin>();
6.2.2 按实例添加
pluginManager.Add(new SayHelloPlugin());
6.2.3 按委托添加
pluginManager.Add(typeof(ISayPlugin), () => 
{Console.WriteLine("在Action1中获得");
});
七、触发插件
await pluginManager.RaiseAsync(typeof(ISayPlugin), new object(), new MyPluginEventArgs()
{Words = Console.ReadLine()
});
八、插件特性
  • 中断传递:通过设置 e.Handled = true 或不调用 e.InvokeNext(),可以中断后续插件的执行。
九、提升插件性能
9.1 性能测试

在这里插入图片描述

9.2 注册委托

通过注册委托提升性能:

pluginsManager.Add(typeof(ISayPlugin), this.Say);
9.3 源生成插件

使用源生成器自动生成委托调用,减少运行时开销。


十、示例代码仓库
  • GitHub: https://github.com/RRQM/TouchSocket
  • Gitee: https://gitee.com/rrqm_Home/touchsocket

希望本文对您理解 TouchSocket 插件系统的使用有所帮助!

关键字:爱网逛_游戏开发是什么_青岛seo网站管理_百度自动优化

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: