3

我遇到了一个面试问题,我从朋友和同行那里得到了不同的答案,所以我想我会在这里问。

我们通常使用插件排名来定义不同插件的执行顺序,以克服依赖问题。

问题

如果一个实体在同一事件和同一阶段注册了多个插件(来自不同的 dll 或相同的 dll),并且它们的等级/顺序都为 1 - 它们被触发的顺序是什么?

它们都并行执行吗?这是否取决于哪个插件首先注册等?如果可以,请向我指出任何 MSDN 参考资料。

提前致谢。

4

3 回答 3

8

嗨,请在下面找到复制自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 的插件注册工具

于 2017-11-23T05:54:48.757 回答
3

SdkMessageProcessingStep.SdkMessageFilterId用于管理在所有其他因素相同时执行插件的顺序。

编译日期是几年前记录的。IDK 如果当时是真的,但现在不是。

于 2019-02-20T00:42:55.153 回答
1

作为一个好的实践(也是一个好的面试答案),依赖CRM 产品的编译日期逻辑的后备计划是不安全的。根据我们的要求明智地使用执行顺序。

如果明天这个 CRM 逻辑发生变化,或者开发团队向同一个程序集/消息/阶段添加了一个新插件,该插件必须在顶部或其他插件之间执行,那么依赖性问题就会上升。所以设计好。

于 2017-11-23T13:30:05.457 回答