当前位置: 网学 > 编程文档 > 其他类别 > 正文

系统架构师谈企业应用架构之业务逻辑层

来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 13/01/12
于数据集上的映射细化到表中行记录的细粒度的映射,并且映射的对象中包含相应的数据库表中的数据信息,并且包含对象的行为。例如,我们现在如果想将产品表中的产品信息映射到数据库中的表product中的行记录,那么我们需要构建一个product类,该类中的属性与product表中的列信息一一对应。并且product类中还包含该对象所有的行为。例如CRUD的操作,其他的行为等。

首先我们需要知道活动记录的优势是什么?首先我的理解就是活动记录模式容器理解,简单,并且目前有很多的框架支持这样的模式。首先就像Linq、Castle框架都是采用这样的模式。。一般情况下,活动记录模式在关系型模型中可以很好的支持。如果在应用程序中不使用关系型模型来设计业务层的话,那么需要我们人工来组织,协调活动记录与数据模型之间,其实这个就可以简单的理解为数据映射,一般的ORM框架中都提供这样的功能。

我们需要知道,如果活动记录模式下的对象发生改变了,那么数据库也得跟着修改,或者数据库表发生改变了,那么你不得不修改对应的活动记录对象及相关代码。

总而言之,如果我们在使用活动记录模式的过程中如果不能保证对象模型与数据模型之间的对应关系,那么我们将会很快失控,那么领域模型显然能够解决这样的问题。下面我们来看下活动记录模式的实例。我们还是以购物流程为例。

  1. public class Order  
  2. {  
  3. private int _orderID;  
  4. public Order(int orderID)  
  5. {  
  6. _orderID = orderID;  
  7. }  
  8. public int OrderID  
  9. {  
  10. get 
  11.  {  
  12. return this._orderID;  
  13. }  
  14. set 
  15. {  
  16. this._orderID = value;  
  17.  }  
  18. }  
  19. private int _orderState;  
  20. public int OrderState  
  21. {  
  22. get 
  23. {  
  24. return this._orderState;  
  25. }  
  26. set 
  27. {  
  28. this._orderState = value;  
  29. }  
  30. }  
  31. /// <summary>  
  32. /// 返回订单对应的所有产品信息  
  33. /// </summary>  
  34. /// <returns></returns>  
  35. public List<Product> Products()  
  36. {  
  37. return this.GetProducts();  
  38. }  
  39. private List<Product> GetProducts()  
  40. {  
  41. List<Product> lists = new List<Product>();  
  42. return lists;  
  43. }  
  44. public int Update()  
  45. {  
  46. return 0;  
  47. }  
  48. public int Delete()  
  49. {  
  50. return 0;  
  51. }  
  52. public int Insert()  
  53. {  
  54. return 0;  
  55. }  

我们可以看到区别,从原来的表模式中的通过ADO.NET提供的内存集合表中的形式,修改为通过对象中的属性的形式来保存对象的数据信息,显然这就是表模式与活动记录模式的最大区别。不过实现的思想上差别不大。

我们都知道数据库表之间如果有关联的话,那么我们通过的是外键的形式来进行关联,那么我们在活动记录中一般如何来标识某个类对应的外键对象信息呢。

那么我们在订单中可能会有对应的用户ID,不过在不同的框架中可能对外键对应的对象信息的存储方式会有所不同,有些框架中在外键对象上通过属性的方式返回对象的实例的应用。简单来说下这2种方式的区别:例如:

  1. public class Order  
  2. {  
  3. private int _orderID;  
  4. public Order(int orderID)  
  5. {  
  6. _orderID = orderID;  
  7. }  
  8. public int OrderID  
  9. {  
  10.  get 
  11. {  
  12. return this._orderID;  
  13. }  
  14. set 
  15. {  
  16. this._orderID = value;  
  17. }  
  18. }  
  19. private int _orderState;  
  20. public int OrderState  
  21. {  
  22. get 
  23. {  
  24. return this._orderState;  
  25. }  
  26. set 
  27. {  
  28. this._orderState = value;  
  29.  }  
  30. }  
  31. private int _userID;  
  32. public int UserID  
  33. {  
  34. get 
  35. {  
  36. return this._userID;  
  37.  }  
  38. set 
  39. {  
  40. this._userID=value;  
  41. }  
  42. }  
  43.  } 

网学推荐

免费论文

原创论文

浏览:
设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
湘ICP备09003080号