65.9K
CodeProject 正在变化。 阅读更多。
Home

BizTalk 值映射缓存模式

emptyStarIconemptyStarIconemptyStarIconemptyStarIconemptyStarIcon

0/5 (0投票)

2012年1月9日

CPOL

3分钟阅读

viewsIcon

19324

downloadIcon

100

本文试图解释在 BizTalk 集成中使用值映射缓存模式的时机。

了解典型集成中的值映射问题!

在一些集成项目中,需要反复映射源值和目标值。 考虑一个场景,在进行任何映射之前,必须查找目标值。 换句话说,对于每个插入或更新目标记录的请求,都必须对目标系统进行查找。 这意味着仅仅为了进行正确的插入或更新,就要对目标系统调用太多的调用。

考虑一个场景,需要更新带有“货币”值的“付款”记录。 为了在目标系统上更新此记录,必须获取货币值的货币“GUID”(例如,USD),然后向目标系统发送另一个请求,以使用插入的正确值来更新付款记录。 这被称为“聊天式”调用,这意味着对目标系统进行了太多的调用。

BizTalk_ChattyCalls.png
  • 步骤 1:源系统调用一个“Web 服务”以“更新”或“插入”目标系统中的记录。
  • 步骤 2:为了在目标系统中“插入”或“更新”一个值,查询 WS 用于检索合适的“GUID”值。
  • 步骤 3:然后使用“GUID”值来调用插入/更新 WS,以正确更新“付款”记录。
这不是一个好方法,因为我们对目标系统进行了太多的调用。

有没有更好的方法?

这个想法是建立一个“缓存”并偶尔刷新它。 缓存将保存所有目标映射值,例如,在我们的示例方案中,各种货币的所有“GUID”。

为什么要缓存映射值?

这将非常有益,以便通过至少提高两倍来提高系统的性能。

您想缓存什么?

这将包含所有目标映射值。 在我们的场景中,各种货币的所有“GUID”。

SimpleDBCacheView.PNG

一个典型的缓存数据库将包含“GUID”值,可以通过传递“货币代码”和“目标代码”来检索这些值。 此缓存表由业务流程定期更新。 这将帮助我们减少对目标系统的方法调用量,从而提高性能。

了解值映射缓存模式

ValueMapCachingODX.PNG

步骤 1:循环直到缓存中有数据

声明一个“布尔”标志以确定何时退出主循环。 仔细观察业务流程结构,如果您将“terminate”标志设置为 false(默认值),则业务流程将等待预定义的时间,然后再重新刷新缓存。

步骤 2:编写业务流程的核心代码

使用一个异常“范围”来调用 Web 服务,以便检索所有值以构建值映射缓存。 请注意,此业务流程仅用于在自定义集成数据库中构建缓存。

步骤 3:缓存刷新周期

使用“timespan”对象来配置业务流程的“延迟”形状。 这将确定缓存刷新周期之间的时滞。

步骤 4:不要忘记添加配置条目

我们需要在“BizTalk”配置文件中或使用“SSO DB”配置来配置“terminate”标志和“延迟时间”以刷新缓存。

我们是否有其他更简单的替代方案?

好消息是,我们有。 有几种更简单的替代方案,特别是在使用“BizTalk Xref 数据”方面,Michael Stephenson 的文章对此进行了详细描述,请参阅“参考资料”部分。

供进一步阅读的参考资料

© . All rights reserved.