【问题标题】:WCF Exception handling with batch operations使用批处理操作处理 WCF 异常
【发布时间】:2010-12-10 09:18:49
【问题描述】:

我需要关于这个架构问题的提示。

我的应用程序调用不同的 wcf 服务来执行返回模型对象列表的特定任务。

比如说,我有一项服务,它可以查询证券交易所的标题,返回 List<SeTitle>。 [纯属虚构的例子,我正在读一本关于这个主题的书]

如果此列表的一个或几个元素发生异常,我在 wcf 服务中有两个选项:

  • 捕获异常,记录它并返回列表,但这样我将丢失应用程序中所有错误项的证据。
  • 在第一个错误时抛出异常,但这样即使只有一个项目“有问题”,我也不会收到任何信息。

我的意愿是选择第三种选择,这意味着我将始终归还我的清单,但要提供有缺陷的物品的证据。

我的想法是让我所有的模型对象扩展一个简单的接口,比如(请原谅名字,它们太可怕了)

public interface IWcfReturnObject
{
    public List<WarningModel> Warnings;
}

public class SeTitle : IWcfReturnObject

以这种方式,列表的每个元素都可以有一个相关的警告/错误列表,然后返回给应用程序,然后返回到界面。

我的问题是:

  • 我的问题清楚明白吗?! ;)
  • 您认为我的愿望(从 wcf 接收所有带有警告的元素)在架构上是否良好?
  • 您认为是否存在解决此问题的更好方法?

谢谢

M.

编辑:我正在研究并查看第一个答案,我认为提供一个我在 NET 上找到的解决方案很有用

可能的解决方案

  1. 我的方式
  2. 具有某种相关性的日志,并按照 decyclone 的建议将其引用到业务层
  3. AggregateException

【问题讨论】:

    标签: c# exception exception-handling wcf


    【解决方案1】:

    我认为您应该记录您的异常/错误/警告,而不是将它们与结果数据一起发送。您可以随时参考日志,也可以创建一个界面来查看错误日志。但是,公共结果数据不应与异常数据混合。

    【讨论】:

    • 我明白你的意思。尽管如此,我认为这是一个共同的需求,可以解决。我正在编辑我的问题以澄清我的观点。
    猜你喜欢
    • 2011-06-06
    • 2011-04-28
    • 1970-01-01
    • 1970-01-01
    • 2013-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多