1.Wexflow简介
解析:高性能,可扩展,模块化和跨平台的工作流引擎。Wexflow提供了一个跨平台的工作流服务器和一个跨平台的后端,可以轻松灵活地管理、设计和跟踪工作流。

2.Windows Container
解析:Windows Container是微软在Windows上的虚拟化实践,它可以提供操作系统级别的虚拟化。

3.Drools.NET介绍
解析:Drools.NET是.NET版的Drools,一款基于Charles Forgy的RETE算法的开源的业务规则引擎。

4.elsa-core

5.Task.Run
解析:Task.Run简化Task.Factory.StartNew的使用,除非需要指定一个线程是长时间占用的,否则就使用Task.Run。
[1]无返回值的类型异步方法对应的lambda

async()=>{}对应于Func委托Func<Task>

[2]带返回值类型的异步方法对应的lambda

async () => { return TResult; }对应于Func委托Func<Task<TResult>>

6.泛型约束类型
解析:
[1]类名:只有这个类型的类或从它继承的类才能用作类型实参
[2]class:任何引用类型,包括类、数组、委托和接口都可以用作类型实参
[3]struct:任何值类型都可以用作类型实参
[4]接口名:只有这个接口或实现这个接口的类型才能用作类型实参
[5]new():任何带有无参公共构造函数的类型都可以用作类型实参,这叫做构造函数约束

7.where子句约束顺序
解析:
[1]最多只能有一个主约束,如果有则必须放在第一位
[2]可以有任意多的接口名约束
[3]如果存在构造函数约束,那么必须放在最后

8.泛型类扩展方法
解析:
[1]必须声明为static
[2]必须是静态类的成员
[3]第一个参数类型中必须有关键字this,后面是扩展的泛型类的名字

9.可枚举类型和可枚举类
解析:
[1]可枚举类型:带有GetEnumerator方法的类型,它返回用于项的枚举器
[2]可枚举类:实现了IEnumerable接口的类,该接口只有一个成员GetEnumerator方法,它返回对象的枚举器

10.IEnumerator接口
解析:实现了IEnumerator接口的枚举器包含3个函数成员:
[1]Current:返回序列中当前位置项的属性
[2]MoveNext:把枚举器位置前进到集合中下一项的方法。它也返回布尔值,指示新的位置是有效位置还是已经超过了序列的尾部
[3]Reset:把位置重置为原始状态的方法

11.IEnumerable和IEnumerator接口
解析:
[1]IEnumerable是一个声明式的接口,声明实现该接口的类是"可枚举"的,但并没有说明如何实现迭代器
[2]IEnumerator是一个实现式的接口,声明实现该接口的类就可以作为一个迭代器

12.迭代器状态机
解析:由编译器生成的枚举类是包含4个状态的状态机:
[1]Before:首次调用MoveNext的初始状态
[2]Running:调用MoveNext后进入这个状态。在这个状态中,枚举器检测并设置下一项的位置。在遇到yield return、yield break或在迭代器体结束时,退出状态
[3]Suspended:状态机等待下次调用MoveNext的状态
[4]After:没有更多项可以枚举

13.async/await特性结构
解析:异步方法在处理完成之前就返回到调用方法:
[1]调用方法:该方法调用异步方法,然后在异步方法[可能在相同的线程,也可能在不同的线程]执行其任务的时候继续执行
[2]异步[async]方法:该方法异步执行其工作,然后立即返回到调用方法
[3]await表达式:用于异步方法内部,指明需要异步执行的任务。一个异步方法可以包含任意多个await表达式,不过如果一个都不包含的话编译器会发出警告

14.取消一个异步操作
解析:
[1]CancellationToken对象包含一个任务是否应被取消的信息
[2]拥有CancellationToken对象的任务需要定期检查其令牌[token]状态。如果CancellationToken对象的IsCancellationRequested属性为true,任务需要停止其操作并返回
[3]CancellationToken是不可逆的,并且只能使用一次。即一旦IsCancellationRequested属性被设置为true,就不能更改了
[4]CancellationTokenSource对象创建可分配给不同任务的CancellationToken对象。任何持有CancellationTokenSource的对象都可以调用其Cancel方法,这会将CancellationToken的IsCancellationRequested属性设置为true

15.Task.Delay方法
解析:
[1]Task.Delay方法创建一个Task对象,该对象将暂停其在线程中的处理,并在一定时间之后完成
[2]与Thread.Sleep阻塞线程不同的是,Task.Delay不会阻塞线程,线程可以继续处理其它工作

16.Task.Yield
解析:
[1]Task.Yield方法创建一个立即返回的awaitable。等待一个Yield可以让异步方法在执行后续部分的同时返回到调用方法
[2]可以将其理解为离开当前的消息队列,回到队列末尾,让处理器有时间处理其它任务

17.public static ParallelLoopResult.For(int fromInclusive, int toExclusive, Action body)
解析:
[1]fromInclusive:迭代系列的第一个整数
[2]toExclusive:比迭代系列最后一个索引号大1的整数,即和表达式index<ToExclusive一样
[3]body:接受单个输入参数的委托,body的代码在每一次迭代中执行一次

18.static ParallelLoopResult ForEach<TSource>(IEnumerable<TSource> source, Action<TSource> body)
解析:
[1]TSource:集合中对象的类型
[2]Source:一组TSource对象的集合
[3]body:要应用到集合中每一个元素的Lambda表达式

19.BeginInvoke和EndInvoke
解析:如果委托对象在调用列表中只有一个方法[引用方法],它就可以异步执行这个方法。委托类有两个方法,叫做BeginInvoke和EndInvoke,它们就是用来这么做的。
[1]当调用委托的BeginInvoke方法时,它开始在一个独立线程上执行引用方法,并且立即返回到原始线程。原始线程可以继续,而引用方法会在线程池的线程中并行执行
[2]当程序希望获取已完成的异步方法的结果时,可以检查BeginInvoke返回的IsAsyncResult的IsCompleted属性,或调用委托的EndInvoke方法来等待委托完成

20.程序集清单
解析:
[1]程序集名称标识符
[2]组成程序集的文件列表
[3]一个指示程序集中内容在哪里的地图
[4]关于引用的其它程序集的信息

21.单文件程序集结构
解析:
[1]清单
[2]类型元数据
[3]CIL代码
[4]资源

22.多文件程序集
解析:
[1]主模块含有程序集的清单和到次要模块的引用
[2]次要模块的文件名以扩展名.netmodule结尾
[3]多文件程序集被视为一个单一单元,它们一起部署并一起定版

23.System.Exception异常类
解析:
[1]SystemException:所有预定义系统异常的基类
[2]ApplicationException:所有非致命的、应用程序定义的异常的基类

24.预处理指令
解析:
[1]#define identifier:定义编译符
[2]#undef identifier:取消定义编译符
[3]#if expression:如果表达式是true,编译下面的片段
[4]#elif expression:如果表达式时true,编译下面的片段
[5]#else:如果之前的#if或#elif表达式是false,编译下面的片段
[6]#endif:标记为一个#if结构的结束
[7]#region name:标记一段代码的开始,没有编译效果
[8]#endregion name:标记一段代码的结束,没有编译效果
[9]#warning message:显示编译时的警告信息
[10]#error message:显示编译时的错误信息
[11]#line indicator:修改在编译器消息中显示的行数
[12]#pragma text:指定有关程序上下文的信息

25.反射
解析:一个运行的程序查看本身的元数据或其它程序的元数据的行为叫做反射。

参考文献:
[1]推荐一个很棒的开源工作流elsa-core:https://mp.weixin.qq.com/s/gleuHOfzLl571XGyOcCgFA
[2]LiteDB:http://www.litedb.org/
[3]Wexflow RESTful API:https://github.com/aelassas/Wexflow/wiki/RESTful-API
[4]Wexflow Wiki:https://github.com/aelassas/Wexflow/wiki
[5]Wexflow Docker:https://github.com/aelassas/Wexflow/wiki/Docker
[6]Wexflow在GitHub:https://github.com/aelassas/Wexflow

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐