业务层错误和服务层处理——最好的方法?

Posted

技术标签:

【中文标题】业务层错误和服务层处理——最好的方法?【英文标题】:Business Layer errors and Service Layer handling - Best way? 【发布时间】:2011-07-10 10:05:29 【问题描述】:

我们正在构建一个包含多个层的大型网络应用程序。为了与业务层通信,我们使用了一个服务层,Web 层在需要数据时调用该服务层。不幸的是,如果在业务层抛出异常,似乎Web端的服务正在包装异常并重新抛出它们。我们正在寻找一种清晰的方法来封装错误并记录它,而 WCF 不会在原始异常周围包装新的异常。

谢谢

【问题讨论】:

【参考方案1】:

FWIW,我们每个公开的 WCF 服务层方法都会捕获一个 System.Exception 并将其传递给 HandleException 帮助器(我猜这也可能是一个基本服务类方法)

处理异常:

    记录错误 将异常重新格式化应用于 SOAP 错误(目前我们使用WCF Exception Shielding) 应用任何特定于异常的处理(格式为if (ex is SomeTypeOfException) ...)

【讨论】:

【参考方案2】:

有多种方法可以做到这一点。我相信您提出的解决方案还不错,尽管它的规模不大(将业务特定的错误处理与网络相关的代码混合会产生某种耦合)。所有这一切都取决于您的架构:您可以添加一个肤浅的、轻量级的层,将业务错误转换为 Web 错误,并在 Web 层错误处理代码中进行处理。你也可以你 AoP 并拦截调用并为上面的层转换错误。

【讨论】:

以上是关于业务层错误和服务层处理——最好的方法?的主要内容,如果未能解决你的问题,请参考以下文章

Spring数据访问和数据访问层与业务或服务层之间的交互

实现服务层方法的指南

控制器逻辑与服务/业务层逻辑

MVC设计模式与三层架构

尝试抓住问题

将业务层和数据层结合在一个 WCF 服务中的优缺点