业务层错误和服务层处理——最好的方法?
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 并拦截调用并为上面的层转换错误。
【讨论】:
以上是关于业务层错误和服务层处理——最好的方法?的主要内容,如果未能解决你的问题,请参考以下文章