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

时间:2010-02-01 10:02:33  来源:第二电脑网  作者:第二电脑网

  第二电脑网导读:如果将实体提供给您不完全信任的业务过程,应在业务实体组件和数据访问逻辑组件中实现授权检查。然而,如果在这两个层次上都实现检查,可能会产生保持安全性策略同步的维护问题。   业务实体组件不应处理通信安全性或数据加密,应把这些任务留给相应的数据访问逻辑组件。     部署     本节提供一些建议以帮助您确定如何部署数据访问...
  正文:业务实体组件中的安全性建议
    如果将业务实体实现为数据结构(如 XML 或 DataSet),则不需要实现安全性检查。然而,如果将业务实体实现为带有 CRUD 操作的自定义业务实体组件,请考虑以下建议:
  
  如果将实体提供给您不完全信任的业务过程,应在业务实体组件和数据访问逻辑组件中实现授权检查。然而,如果在这两个层次上都实现检查,可能会产生保持安全性策略同步的维护问题。
  业务实体组件不应处理通信安全性或数据加密,应把这些任务留给相应的数据访问逻辑组件。
    部署
    本节提供一些建议以帮助您确定如何部署数据访问逻辑组件和业务实体组件。
  
    部署数据访问逻辑组件
    部署数据访问逻辑组件的方法有两种:
  
  与业务过程对象一起部署数据访问逻辑组件。这种部署方法具有最佳的数据传输性能,还有一些额外的技术优势:
  事务处理可以在业务过程对象和数据访问逻辑组件之间无缝流动。然而,事务处理不能跨越远程通道无缝流动。在远程方案下,需要使用 DCOM 来实现事务处理。此外,如果业务过程与数据访问逻辑组件被防火墙分开,还需要打开这两个物理层之间的防火墙端口以启用 DTC 通信。
  一起部署业务过程对象和数据访问逻辑组件可以减少事务处理失败节点的数目。
  安全性环境自动在业务过程对象和数据访问逻辑组件之间流动,无需设置当事人对象。
  与用户界面代码一起部署数据访问逻辑组件。有时需要直接从 UI 组件和 UI 过程组件使用数据访问逻辑组件。为提高 Web 方案下的性能,可以与 UI 代码一起部署数据访问逻辑组件;这种部署方法可以使 UI 层充分利用数据读取器流以获得最佳性能。然而,在使用这种部署方法时必须牢记以下事项:
  不与 UI 代码一起部署数据访问逻辑组件的一个常见原因是防止通过 Web 领域直接对数据源进行网络访问。
  如果您的 Web 领域部署在 DMZ 环境中,则必须打开防火墙端口才能访问 SQL Server。如果使用 COM+ 事务处理,还必须为 DTC 通信打开其他的防火墙端口。
    部署业务实体
    应用程序的许多不同层都要使用业务实体。根据业务实体的实现方式,如果您的应用程序跨越各个物理层,则需要将业务实体部署到多个位置。下面列出了在不同实现方案中部署业务实体的方法:
  
  部署作为有类型的 DataSet 实现的业务实体。有类型的 DataSet 类必须由数据访问逻辑组件和调用应用程序访问。因此,建议在一个要部署在多个层的公共程序集中定义有类型的 DataSet 类。
  部署作为自定义业务实体组件实现的业务实体。根据数据访问逻辑组件中定义的方法签名,自定义实体类可能需要由数据访问逻辑组件访问。请遵循与有类型的 DataSet 相同的建议,即在一个要部署在多个层的公共程序集中定义自定义实体类。
  部署作为通用 DataSet 或 XML 字符串实现的业务实体。通用 DataSet 和 XML 字符串不表示单独的数据类型。以这两种格式实现的业务实体不存在部署问题。
    如何定义数据访问逻辑组件类
    以下代码示例定义一个名为 CustomerDALC 的类,它是用于 Customer 业务实体的数据访问逻辑组件类。CustomerDALC 类为 Customer 业务实体实现 CRUD 操作,并提供了其他方法为此对象封装业务逻辑。
  
  public class CustomerDALC
  {
  private string conn_string;
  public CustomerDALC()
  {
  // 从安全或加密的位置获取连接字符串
  // 并将其分配给 conn_string
  }
  
  public CustomerDataSet GetCustomer(string id)
  {
  // 检索包含 Customer 数据的有类型的 DataSet
  }
  
  public string CreateCustomer(string name,
  string address, string city, string state,
  string zip)
  {
  // 根据传递给此方法的标量参数,在数据库中创建一个
  // 新客户。
  // 从此方法返回 customerID。
  }
  
  public void UpdateCustomer(CustomerDataSet updatedCustomer)
  {
  // 根据作为类型 CustomerDataSet 的参数发送的 Customer 数据,更新 "数据层组件设计与数据传递15"由第二电脑网原创提供,转载请注明:http://www.002pc.com/master/College/Programming/aspnet/12705.html


关键字:

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

站内搜索: 高级搜索

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