![]() |
1
10
这个问题强调了异常处理、事务和想法的适当使用之间的重要区别 工作流“补偿” 这就是提问者在正确陈述以下内容时试图达到的目的:
数据事务最初是按照复式记账法建模的——一种 以及相应的 借记 补偿 进来。 Here's one introduction to those concepts 例如,如果你从亚马逊订购一本书,他们可能不会在你的购物车中“锁定”该记录,甚至在确认订单时使用严格的交易来确定该书是否仍在库存中。不管怎样,他们都会把它卖给你,并在可能的时候把它运出去。如果他们在几周内还没有设法把它上市,他们可能会给你发一封电子邮件,告诉你他们正在努力满足你的需求,你可以继续等待他们把它上市,或者你可以取消订单。这称为补偿,在许多实际业务流程中都是必需的。 最后,还有一个问题 没什么特别的 good rules for when to throw an exception )。您也不应该依赖特定于工具(WCF?)的机制来查看或处理服务实现中发生的异常。通信故障应该是数据契约(故障契约)的正常部分。
总结:
祝你好运- |
![]() |
2
1
|
![]() |
3
1
我认为如果你用这些术语来思考的话,你真的过度使用了异常! 返回表示失败的值而不是抛出异常是完全可以的。通常情况下更好。当您无法在抽象级别恢复时,最好使用异常,但不应将其用作控制流的主要手段,否则您的程序将很难阅读。
|
![]() |
4
1
如果你有一些具体的问题,很乐意深入研究一下。 |
![]() |
5
1
理想情况下,对web服务的调用应该是这样的。
为每个人打一个web服务调用是昂贵的。在服务器端,您需要迭代列表并执行操作。 服务器端代码可能引发2个异常: BulkOperationFailedException-如果由于数据库关闭或配置文件丢失而出现致命错误。无法进一步处理。 BulkOperationException-包含一系列与个人相关的异常。您可以保留一些id以唯一地引用每个对象。 您的代码如下所示:
当没有引发异常时,操作被视为成功。您可以为失败设置自定义错误代码,而不是使用用户定义的异常。 在服务器端构建BulkOperationException是一件棘手的事情。其次,您需要将服务器端抛出的错误分类为BulkOperationFailedException和BulkOperationException。在我的一个项目中,我就是这样处理的 |
![]() |
7
0
我可能会返回类型为的结果映射
然后,我将遍历地图并使用
在我的一些服务中,我喜欢将所有调用都实现为单个项调用,然后在我的服务中使用逻辑对它们进行批处理,并将它们作为一个组进行处理。批处理是使用
在这个场景中,我返回一个
|
![]() |
8
0
另一种方法,特别是对于高吞吐量系统,将使用基于队列的设计,其中处理实体将对对象执行操作,然后根据结果将对象放入不同的队列中,以便其他实体进行额外处理,然后继续。这将减少因额外处理而产生的瓶颈,例如处理缺货产品的订单 |