.net core开源工作流程框架elsa源码阅读之容器的理解

news/2024/9/24 14:34:25/文章来源:https://www.cnblogs.com/HelloQLQ/p/18429086
官方文档:https://v3.elsaworkflows.io/
这个框架的依赖注入容器,底层是靠原生的IServiceCollection,没有使用其他的三方容器;然后在这个基础上,作者进行了封装。
主要是用了Module类和继承了IFeature接口的类完成了依赖注入容器的封装。Module是用来管理feature和依赖的。
Module我称之为模块,它的核心方法有三个:
 
0
 
0
成员:
0
前面的configure是注册feature的,后面的Apply方法是注册feature的依赖对象和配置的管道。
feature,我的理解是特性,它的方法:
0
这个是所有特性类的基类。
这个Module怎么工作的呢?它是根据一个扩展类:
 
0
AddElsa就是入口,有意思的是这个Modules成员,它的key尽然是一个服务容器,我的理解是,它可能是不同的模块用不同的容器吧。
注意这个AppFeature,它是完成所有服务注册的关键:
 
0
这个类有个属性,叫DependsOn....这个属性是用于注册这个类所依赖的对象的,所以这里会注册ElsaFeatrue:
 
0
 
0
configure里就是注册的管道的,而其依赖中,最关键的WorkFlowsFeatrue最为关键:
 
0
 
这是其中一个Use
 
0
 
0
它这里就把module和feature解耦了,通过这个Action参数,作为连接,我module不直接调用feature的方法,而是这个特性告诉模块,我传给你个action委托,你调用这个委托就行了,这算是.net core框架代码的基本操作了。
以上,简单的介绍了elsa的依赖注入容器的一个大致内容。就通过Module的configure来调用featrure的委托参数,用module的apply来注册featrue的依赖对象和管道,这就是我的个人理解。
最后,一个官方的示例代码:
 
0
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/802833.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

22320102 张怡晨9.24

思维导图:亿图 Xmind PDF转换器 :CAJ lightPDF(免费)www.light pdf.com pdf Candy

详解Diffusion扩散模型:理论、架构与实现

本文深入探讨了Diffusion扩散模型的概念、架构设计与算法实现,详细解析了模型的前向与逆向过程、编码器与解码器的设计、网络结构与训练过程,结合PyTorch代码示例,提供全面的技术指导。关注TechLead,复旦AI博士,分享AI领域全维度知识与研究。拥有10+年AI领域研究经验、复旦…

2024.9.24第二次课

思维导图制作:使用Xmind

中国大陆用户如何使用Jetbrains内置的AI插件AI Assistant

1 安装AI Assistant插件 AI功能依赖AI Assistant插件:2 功能 解释代码、回答有关代码片段的 问题、提交消息等等。 在需要时更快地编码 AI Assistant 可以自动补全单行、函数和整个代码块,并与您的编码样式、项目上下文和命名约定保持一致。AI Assistant 还可以根据您的自然语…

一种单目标A*算法设计与实现

一种单目标A*算法设计与实现 作者:吴屏珊最近在学习简单的单目标A*算法,其中在CSDN上阅读到的一篇博文给了我很大启发,于是在该博文的基础上,笔者记录了一点自己对于A*算法的体会和感悟。 原文链接目录 目录一种单目标A*算法设计与实现目录1. A*算法简单介绍1.1 A*算法的基…

AI智能写作时代来临:如何高效提升你的文案创作能力

随着人工智能技术的飞速发展,AI智能写作已经不再是遥不可及的概念,而是逐渐成为内容创作者的得力助手。在这个信息过载的时代,如何利用AI智能写作工具高效提升文案创作能力,成为了许多创作者关注的焦点。以下将从几个方面探讨如何在AI智能写作时代,提升个人的文案创作能力…

南沙C++信奥老师解一本通题 1264:【例9.8】合唱队形

​【题目描述】N位同学站成一排,音乐老师要请其中的(N−K)位同学出列,使得剩下的K位同学排成合唱队形。 合唱队形是指这样的一种队形:设KK位同学从左到右依次编号为1,2,…,K1,2,…,K,他们的身高分别为T1,T2,…,TK,则他们的身高满足T1<T2<…<Ti,Ti>Ti+1>…&…

Accelerate 1.0.0

Accelerate 发展概况 在三年半以前、项目发起之初时,Accelerate 的目标还只是制作一个简单框架,通过一个低层的抽象来简化多 GPU 或 TPU 训练,以此替代原生的 PyTorch 训练流程:自此,Accelerate 开始不断扩展,逐渐成为一个有多方面能力的代码库。当前,像 Llama 这样的模型…

CloudFlare对接来此加密:实现域名自动验证 快速申请证书

使用ACME可以方便的申请证书,其中相对比较麻烦的是如何自动验证域名。 CloudFlare有两种接口凭证对接方式。 a)具有限制性的API Tokens。 b)具有所有权限的API Keys。 为了安全起见,来此加密只采用具有限制性的API Tokens,用户可以随时取消或修改,以保护CloudFlare的安全。…

后台管理前端设计器,个人商用1999!源码学习

WEB组态和大屏设计器,在IoT项目中十分常见,通常是这样:WEB组态 大屏设计器 但实际项目除了展示,通常还有后台管理。此前,这部分通常需要vue开发。有了UIOTOS,就能0基础,组态一样,搭建整个管理界面。 示例效果 这是一款前端零代码组态工具,无需学习js、html、css,能…