技术开发 频道

ASP.NET2.0:AdventureWorks贸易系统


7. 实现业务逻辑层

    本节将关注业务逻辑层的实现,该层封装在类库AdventureWorksTraderBiz中。首先,使用Visual Studio 2005,创建新的名为AdventureWorksTraderBiz的Visual C#类库项目。此后,添加上一节中创建的AdventureWorksTraderDataAccess的引用。一旦项目创建后,可将名为ProductCategoryBiz的类添加到项目中,接着如示例6所示修改代码。

    示例6:实现ProductCategoryBiz类

using System; 
using System.Collections.Generic;
using System.Text;
using AdventureWorksTraderEntities;
using AdventureWorksTraderDataAccess;
using Microsoft.Practices.EnterpriseLibrary.ExceptionHandling;

namespace AdventureWorksTraderBiz
{
public class ProductCategoryBiz
{
public IList<ProductCategory> GetProductCategories()
{
try
{
ProductCategoryDB category = new ProductCategoryDB();
return category.GetProductCategories();
}
catch (Exception ex)
{
bool rethrow = ExceptionPolicy.HandleException(ex, "Log Only Policy");
if (rethrow)
{
throw;
}
return null;
}
}
}
}
    示例6中所示的GetProductCategories()是主要方法,该方法通过调用数据访问层的GetProductCategories()方法来获取所需数据。业务逻辑层中生成的任何异常都在catch块中通过EntLib异常处理块处理。这是下一节关注的重要问题。

    由于业务逻辑层中剩余类(ProductSubcategoryBiz和ProductBiz)的实现与ProductCategoryBiz非常相似——除了它们调用的对应数据访问层类的方法不同——所以将不会详细讲解剩余类。然而,读者可从www.wrox.com下载本实例的完整代码。
8. 快速浏览企业库中的异常处理块

    开发人员编写的每个.NET应用程序都需要处理异常以及从异常中恢复。微软没有采取在.NET应用程序中创建,测试和维护传统代码的方法,而是创建了称为企业库异常处理块(或者称为EntLib异常处理块)的应用程序块。该应用程序块提供了实现异常处理所需的所有底层传统代码。为达成本实例的目的,将以统一高效的方式使用EntLib异常处理块处理异常。在讨论异常处理块与Web站点AdventureWorksTrader集成的所需步骤之前,读者需要理解异常处理块的基础知识。

异常处理块中的关键组件

    为理解异常处理块需要了解三个重要概念:

    异常处理:当在代码中检测到异常时,处理异常的过程。
    异常日志:记录异常的过程,该过程包括将格式化异常发送到事件日志或者发送电子邮件。异常处理块利用日志和监测应用程序块来实现此功能。
    异常处理策略:允许控制异常处理和使用外部配置文件记录的行为,而不用在代码中实施这样的规则。换句话说,开发人员可在一个策略文件中定义异常处理,然后在不改变代码的情况下,在测试、调试、产品定型期间修改行为。

    使用异常处理块,在代码中检测到异常时,可做以下三件事情:

    第一,可把异常封装为一个新的异常,以便加入新的上下文信息或详细信息。当新的异常传递到调用堆栈时,仍可通过InnerException属性访问原始的异常。
    第二,可用一个新的异常取代原有异常。通常,这样做的目的是不想让原始异常的详细信息跨应用程序边界传递。
    第三,能够记录异常。当然,也可结合使用封装或取代的方法达成此目的,或者记录原始异常并把它传递到调用堆栈。
0
相关文章