我遇到了一个面试问题,我从朋友和同行那里得到了不同的答案,所以我想我会在这里问。
我们通常使用插件排名来定义不同插件的执行顺序,以克服依赖问题。
问题
如果一个实体在同一事件和同一阶段注册了多个插件(来自不同的 dll 或相同的 dll),并且它们的等级/顺序都为 1 - 它们被触发的顺序是什么?
它们都并行执行吗?这是否取决于哪个插件首先注册等?如果可以,请向我指出任何 MSDN 参考资料。
提前致谢。
我遇到了一个面试问题,我从朋友和同行那里得到了不同的答案,所以我想我会在这里问。
我们通常使用插件排名来定义不同插件的执行顺序,以克服依赖问题。
问题
如果一个实体在同一事件和同一阶段注册了多个插件(来自不同的 dll 或相同的 dll),并且它们的等级/顺序都为 1 - 它们被触发的顺序是什么?
它们都并行执行吗?这是否取决于哪个插件首先注册等?如果可以,请向我指出任何 MSDN 参考资料。
提前致谢。
嗨,请在下面找到复制自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.
使用 Microsoft Dynamics CRM 2011 和 Microsoft Dynamics CRM Online 的插件注册工具
SdkMessageProcessingStep.SdkMessageFilterId用于管理在所有其他因素相同时执行插件的顺序。
编译日期是几年前记录的。IDK 如果当时是真的,但现在不是。
作为一个好的实践(也是一个好的面试答案),依赖CRM 产品的编译日期逻辑的后备计划是不安全的。根据我们的要求明智地使用执行顺序。
如果明天这个 CRM 逻辑发生变化,或者开发团队向同一个程序集/消息/阶段添加了一个新插件,该插件必须在顶部或其他插件之间执行,那么依赖性问题就会上升。所以设计好。