数据层组件设计与数据传递13

时间:2010-02-02 08:29:47  来源:第二电脑网  作者:第二电脑网

  第二电脑网导读:异常,它包括:   ADO.NET   数据库连接   资源(如数据库、网络共享、消息队列等)不可用   业务逻辑异常,它包括:   验证错误   实现业务逻辑的存储过程中的错误     在数据访问逻辑组件中管理异常的建议     数据访问逻辑组件应该传播异常,并...
  正文:异常管理
  
    当 .net 应用程序出现错误时,通常的建议是发出异常而不是从方法返回错误值。这一建议暗示了您编写数据访问逻辑组件和业务实体组件的方式。异常大体上有两种:
  
  技术异常,它包括:
  ADO.NET
  数据库连接
  资源(如数据库、网络共享、消息队列等)不可用
  业务逻辑异常,它包括:
  验证错误
  实现业务逻辑的存储过程中的错误
    在数据访问逻辑组件中管理异常的建议
    数据访问逻辑组件应该传播异常,并且仅在能够使客户端对异常的管理更加容易时才包装异常类型。将异常包装为两种主要异常类型(技术异常和业务异常)有利于各种可能的调用程序的异常处理结构和异常发布逻辑。
  
    您的应用程序应当发布异常信息。可以将技术异常发布到一个由系统管理员或 Windows 管理规范 (WMI) 监视工具(如 Microsoft Operations Manager)监视的日志中;将业务异常发布到一个特定的应用程序日志中。通常,应允许从数据访问逻辑组件传播异常并允许由调用程序发布异常,以便您了解异常的整个环境。
  
    以下示例说明了这些建议:
  
  public class CustomerDALC
  {
  public void UpdateCustomer(Dataset aCustomer)
  {
  try
  {
  // 更新数据库中的客户...
  }
  catch (SqlException se)
  {
  // 捕获并包装异常,然后重新发出
  throw new DataAccessException("数据库不可用", se);
  }
  finally
  {
  // 清除代码
  }
  }
  }
  
     在业务实体组件中管理异常的建议
  
    业务实体组件应当向调用程序传播异常。在业务实体组件执行验证或者当调用程序试图执行某一操作而未提供该操作所需的数据时,业务实体组件也可以产生异常。
  
    以下示例显示了业务实体组件如何产生异常。在此示例中,如果没有提供客户的名字,Update 方法将发出一个异常:
  
  public class CustomerEntity
  {
  public void Update()
  {
  // 检查用户已提供了所需数据。这里是客户
  // 的名字
  if (FirstName == "" )
  {
  // 发出一个已定义的新的应用程序异常
  throw new MyArgumentException("您必须提供名字。");
  }
  ...
  }
  }
  
    授权与安全
  
    本节说明如何将安全性应用于数据访问逻辑组件和业务实体组件。.NET 公共语言运行库使用权限对象实现其对托管代码的强制限制机制。权限对象有三种,各自具有特定的用途:
  
  代码访问安全性。这些权限对象用于防止未经授权使用资源和操作。
  身份标识。这些权限对象指定运行程序集时所必需的身份标识特征。
  基于角色的安全性。这些权限对象提供了一个机制,用于判断用户(或用户的代理人)是否具有特定身份标识,或者是否是指定角色的成员。PrincipalPermission 对象是唯一基于角色的安全性权限对象。
    托管代码可以使用 Principal 对象(包含对 Identity 对象的引用)来判断当事人的身份标识或角色。把 Identity 对象和 Principal 对象与用户、组帐户等大家所熟悉的概念比较可能会更容易理解。在 .NET Framework 中,Identity 对象表示用户,而角色表示成员身份和安全性环境。Principal 对象封装了 Identity 对象和角色。.NET Framework 中的应用程序根据 Principal 对象的身份标识或角色成员身份(后者更常见)授予 Principal 对象权限。

"数据层组件设计与数据传递13"由第二电脑网原创提供,转载请注明:http://www.002pc.com/master/College/Programming/aspnet/12727.html


关键字:

关于《数据层组件设计与数据传递13》文章的评论

站内搜索: 高级搜索

热门搜索: Windows style 系统 tr IP QQ CPU 安装 function 注册 if td