在BizTalk业务流程中使用类和方法

时间:2017-01-27 11:20:07

标签: biztalk

我继承了支持并将BizTalk应用程序作为我的开发角色的一部分。 我是一名普通的C#开发人员,所以我很高兴看到我可以创建Classes并从Orchestration的Expression形状中调用Methods。 这意味着我可以使用我熟悉且速度更快的代码来完成所有数据操作,而不是学习BizTalk方法。

此时我并不关心这是不是一个好主意。

是否有任何纯技术原因我不应该这样做?

4 个答案:

答案 0 :(得分:1)

您必须确保您调用的任何外部方法都具有多线程功能,并且可以处理高吞吐量。

如果你没有达到上述目的,那么你会遇到一些非常奇怪的问题(由交叉线程污染引起)或者你会在BizTalk中造成瓶颈,这会降低消息吞吐量。

您还需要确保在失败时正确处理,重试和传播错误到调用的业务流程。我遇到了一个解决方案,开发人员出于某种原因决定使用外部类调用Web服务。这个Web服务经常会抛出一个错误,但是这个类只会在返回Orchestration时传递错误消息,就像它是一个有效的响应消息一样。当Orchestration尝试使用该消息并且与预期消息不匹配时,这将导致稍后失败。当我获得分配预算时,我使用正确配置的发送端口替换了此类,该端口在遇到Web服务错误时自动重试该消息,然后成功处理。

答案 1 :(得分:0)

从技术上讲,您正在使用外部组件添加部署和维护复杂性,例如,某些合同中的任何更改都需要更改程序集和业务流程。 而且你正在失去BizTalk映射引擎在数据转换方面的所有优势,这通常是一个容易学习的部分。

答案 2 :(得分:0)

我这样说,对于将来可以在BizTalk Way"开发BizTalk应用程序的可维护性非常重要。

例如,如果你在外部类中进行了消息操作,这应该在Map或XPath中完成,那么在Code Review中我会失败,你必须重构。

原因是因为任何可能从你那里接过来的人应该期待一个BizTalk应用程序。我已经看到过你所描述的情况,它确实使得升级,增强,支持新业务需求变得更加困难,因为现在开发人员必须适应BizTalk和外部流程。

答案 3 :(得分:0)

从技术上讲,使用.NET类不会破坏BizTalk中的任何内容。许多BizTalk组件都基于.NET框架,例如适配器,管道组件等。在我看来,根据场景使用BizTalk和.NET中的最佳组件。例如如果您需要将入站XML映射到出站XML使用BizTalk映射,因为它们更容易和更快地实现,在这种情况下使用.NET类比使用map更繁琐。我不认为使用BizTalk功能(如地图,编排,管道组件)存在很大的学习曲线。