我遇到了一个面试问题,我从朋友和同伴那里得到了不同的答案,所以我想我会问这里。
我们通常使用插件排名来定义不同插件执行的顺序,以克服依赖性问题。
问题
如果一个实体有多个插件(来自不同的dll或相同的dll)在同一个事件和同一个阶段注册,并且所有插件的排名/顺序都是1 - 他们得到的顺序是什么触发?
他们都并行执行吗?它取决于首先注册的插件等吗? 如果可以,请指出任何MSDN参考。
提前致谢。
答案 0 :(得分:6)
您好请在下面复制MSDN
,
执行顺序:
Specifies the order, also known as rank, that plug-ins are executed within a
pipeline stage. Plug-ins registered with an order value of 1 are executed
first, followed by plug-ins registered with an order of 2, and so on. However,
if there is more than one plug-in in a stage with the same order value, then
the plug-in with the earliest compilation date is called first.
答案 1 :(得分:0)
作为一种良好的做法(也是一个很好的面试答案),依靠编译日期逻辑的 CRM产品的后备计划是不安全的。根据我们的要求明智地使用执行顺序。
如果此CRM逻辑明天发生变化,或者Dev团队在同一个程序集/消息/阶段添加了一个新插件,该插件必须在其他插件之上或之间执行,那么依赖性问题就会增加。所以设计得很好。
答案 2 :(得分:0)
SdkMessageProcessingStep.SdkMessageFilterId是在所有其他因素相同时管理插件执行顺序的
。编译日期已记录在多年前。 IDK如果当时是真的,但现在不是。