Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 如何使用代码添加自定义BizTalk持久点?_.net_C# 4.0_Biztalk_Biztalk Orchestrations - Fatal编程技术网

.net 如何使用代码添加自定义BizTalk持久点?

.net 如何使用代码添加自定义BizTalk持久点?,.net,c#-4.0,biztalk,biztalk-orchestrations,.net,C# 4.0,Biztalk,Biztalk Orchestrations,是否有任何方法可以使用.NET代码在BizTalk业务流程流中添加持久点?我找了又找,但没有找到任何有用的东西。请帮助,任何人?在原子作用域中包装代码将在遇到作用域时创建一个持久点 这就是为什么通常认为使用原子作用域是不好的做法,除非您真的需要它们,因为持久性是一种成本,并且会引入复杂性 在理想情况下,您的编排将被设计为幂等式,因此不需要持久性—您的编排将加载一次,然后保留在内存中,直到它完成(baring deteration) 如果编排失败,它应该可以作为一个整体重新播放。然而,这并不总是可

是否有任何方法可以使用.NET代码在BizTalk业务流程流中添加持久点?我找了又找,但没有找到任何有用的东西。请帮助,任何人?

在原子作用域中包装代码将在遇到作用域时创建一个持久点

这就是为什么通常认为使用原子作用域是不好的做法,除非您真的需要它们,因为持久性是一种成本,并且会引入复杂性

在理想情况下,您的编排将被设计为幂等式,因此不需要持久性—您的编排将加载一次,然后保留在内存中,直到它完成(baring deteration)

如果编排失败,它应该可以作为一个整体重新播放。然而,这并不总是可能的,因此需要持久性点

但我想这是一个坏习惯

我会将在长时间运行的流程中创建持久性需求归类为有时不可避免的糟糕设计


想象一下,作为业务流程的一部分,您必须调用具有非幂等API的外部资源。一个很好的例子是web服务,它期望调用以特定的顺序到达。在这种情况下,您必须在服务调用之前和之后保持业务流程的状态,否则,如果您的流程发生故障,然后恢复,您将面临使用过时或不正确的调用数据再次调用服务的风险。如果服务调用本身失败,您还将被迫编写复杂的补偿逻辑,以确定再次调用服务是否安全

只需将代码包装在原子作用域中。您的意思是在表达式形状中调用函数并将该表达式放置在原子作用域中吗?这难道不意味着持久性就要结束了吗?我已经回答得更详细了。这就成功了!尽管如此,在某些地方,将代码包装在作用域中并不起作用。为了创建持久性点,必须将调用表达式保留在原子的可序列化范围之外。工作做完了,但我想这是个坏习惯。。?