UPPERIOC
这是一个由个人开发的用于辅助上位机系统开发的 IOC 多功能插件模块,具备良好的可扩展性和灵活性。 该模块基于控制反转(Inversion of Control, IOC)理念,支持插件扩展、事件注入和依赖注入,大幅提升了上位机开发过程中的模块组织效率与系统解耦能力。 This is a multifunctional IOC plugin module independently developed to assist in host system (HMI) development.
Install / Use
/learn @mrwangshipei/UPPERIOCREADME
UPPERIOC
UPPERIOC 是一款专为 WinForms 和 WPF 上位机项目设计的轻量级 IOC(控制反转)插件系统,旨在简化模块化设计,提升系统解耦度,支持依赖注入、插件动态加载、事件总线等功能,适用于工业控制、数据采集、设备通信等领域。
<p align="center"> <a href="https://github.com/mrwangshipei/UPPERIOC"> <img src="https://badgen.net/badge/Github/mrwangshipei/21D789?icon=github"> </a> <img src="https://img.shields.io/badge/NetStandard-2.0-blue"> <a href="https://github.com/mrwangshipei/UPPERIOC/blob/master/LICENSE"> <img alt="GitHub" src="https://img.shields.io/github/license/mrwangshipei/UPPERIOC?style=flat-square"> </a> <img alt="GitHub last commit" src="https://img.shields.io/github/last-commit/mrwangshipei/UPPERIOC?style=flat-square"> <img alt="GitHub Repo stars" src="https://img.shields.io/github/stars/mrwangshipei/UPPERIOC?style=social"> </p>
目录
项目简介
UPPERIOC 旨在通过依赖注入、插件扩展等机制,使得上位机系统的模块化开发更加高效和灵活。通过实现 插件化 架构,你可以动态加载、卸载和更新系统中的功能模块,而无需修改主程序代码,从而提高系统的可维护性和扩展性。
功能亮点
- IOC 容器:自动管理对象的生命周期和依赖关系,实现模块之间的解耦。
- 插件系统:支持动态加载和卸载插件,模块功能可以按需扩展。
- 事件总线:模块之间的通信通过事件机制实现,不直接依赖。
- 注入机制:支持通过属性注入和构造函数注入依赖对象。
快速开始
安装
首先,您需要通过 NuGet 安装 UPPERIOC:
dotnet add package UPPERIOC
基本用法
- 容器的初始化:
在上位机的Program.cs,窗体打开之前使用如下代码初始化:
UpperIocApplication.RunInstance(md=>{});
- 注册依赖:
U.C.Register<MainForm>();
// or
MainForm m = new();
U.C.Register<MainForm>(m);
- 注入依赖:
var f = U.C.GetInstance<MainForm>();
public class MainForm
{
[IOCProperties]
public IMyService MyService { get; set; }
public MainForm()
{
// 使用 MyService
}
}
- 插件加载:
UpperIocApplication.RunInstance(md=>{
md.AddModule<XXXModule>();
});
- 发布事件:
U.E.Publish<MyEvent>();
系统架构
系统架构通过 IOC 容器、插件加载器 和 事件总线 实现解耦。各模块之间的交互通过注入和事件驱动进行。
架构图
## 1. 事件系统加载
- 加载事件系统
- 推送事件 "事件加载成功"
## 2. 日志中心加载
- 加载日志中心
- 推送事件 "日志中心加载成功"
## 3. IOC 和插件生命周期混合加载
- 初始化 IOC 容器
- 插件加载开始
- 插件初始化
- 插件生命周期事件推送
- IOC 生命周期事件推送
## 4. 生命周期事件推送
- 推送插件初始化成功事件
- 推送 IOC 容器初始化成功事件
## 5. 注册软件退出事件
- 注册容器注销前事件
- 注册容器注销后事件
## 6. 退出操作
- 容器注销
- 触发 "容器注销前" 事件
- 触发 "容器注销后" 事件
关键模块
- IOC 容器:负责管理服务的注册与注入。
- 插件系统:动态加载、卸载插件。
- 事件总线:实现松散耦合。
插件开发
UPPERIOC 提供了简洁的插件开发接口,帮助你快速构建可插拔的功能模块。
插件基本模板
每个插件需要实现 IUPPERModule 接口:
public class MyPlugin : IUPPERModule
{
}
可以通过实现生命周期接口来注册生命周期
示例项目
你可以参考以下示例项目来快速上手:
常见问题
1. 如何定义插件间的依赖?
可以通过 IOC 容器管理插件之间的依赖关系,确保插件按正确顺序加载。
2. 是否支持跨项目使用?
是的,你可以将 UPPERIOC 作为一个共享库引入到多个项目中。
许可证
该项目使用 MIT 许可证。
Related Skills
node-connect
341.2kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
84.5kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
341.2kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
commit-push-pr
84.5kCommit, push, and open a PR
