BizTalk 映射 functoid 与 BizTalk 映射 xslt

BizTalk map functoid vs BizTalk map xslt

我正在使用 BizTalk MAP,在 BizTalk 映射内部我正在使用 table 循环、table 提取器、脚本、循环 functoid。

同样可以通过引用 XSLT 在 BizTalk 映射中实现。

所以在性能方面,使用 BizTalk 映射或引用 XSLT 的 BizTalk 映射哪种方法更好。

实际上,您使用 BizTalk 映射器创建的可视化 BizTalk 映射是 XSLT。只有您的 functoid 是 libraries/functions,它可以是 XSLT 或内联 C# 代码。检查这一点的一种方法是右键单击您的 .btm 地图并单击 'validate'。在输出 window 中,您将看到 XSLT 文件的 link。

XSLT 的性能非常棘手。您可以以非常好的方式或以不适合使用的方式编写 XSLT。 对于非常基本的映射,性能差异会存在,但会非常小(如果有的话)。正如 Dijkgraaf 所说:检查这一点的唯一方法就是测试它。

如果您当前的实现给您带来性能问题,请尝试将其完全写入 XSLT,这两种方式都非常优化。尝试不同的 approaches/techniques.

一般来说,我总是建议编写 XSLT 而不是使用映射器,但老实说:这是个人喜好。 我为此写了一篇博客 post,请在此处查看:https://pvandenheede.wordpress.com/2016/09/20/the-case-for-xslt/

XSLT 的好处

  • 导入通用或通用样式表
  • 如果您的架构符合要求,请使用通用模板
  • 内联评论
  • 在调试期间禁用(注释掉)代码块
  • 审核更轻松
  • 可以跟踪源存储库中的更改
  • 可以从分支合并

我一直赞成使用 XSLT,这也是 Microsoft 创建 functoid 和 biztalk 映射的唯一原因,因此开发人员只需拖放即可。如果您根本没有兴趣学习 XSLT。

我可能是比较喜欢使用映射工具的人,因为它也可以生成 XSLT。

我认为更容易与同事讨论地图中发生的事情,因为它是可视化的,并且其他人更容易维护,因为并不是所有的代码都使用 XSLT。

我唯一三次遇到生成的 XSLT 性能问题是

  • 在两个传入 XML 映射中使用一个 XML 作为查找 table - BizTalk 2006 中的一个错误,已通过 2006 R2 解决。
  • 从 SSO 获取连接字符串时 - 通过将脚本移动到全局 Functiod 运行 一次解决
  • 使用累积最大值 - 由 this method
  • 求解

我认为这取决于具体情况,但是当您使用地图 GUI 创建地图时,bizTalk 会创建很多变量、代码等。我有过在地图 GUI 中制作地图但随后将其清除并留在 XSLT 中的经历。