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

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

来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 13/01/12
体调用的写日志的方法:

  1. public class Write  
  2. {  
  3. public static bool WriteLog(ILog log)  
  4. {  
  5. //具体的写如日志的方法。  
  6. return true;  
  7. }  
  8. }  
  9. 具体相关的产品类与产品分类对象的使用:  
  10. /// <summary>  
  11. /// 产品类  
  12. /// </summary>  
  13. public class Product : BaseWrite  
  14. {  
  15. //产品的相关属性  
  16. public int ProductID { get;set;}  
  17. public int ProductName { get;set;}  
  18. public int ProductClassID { get;set;}  
  19. public int ProductSort { get;set;}  
  20. public int ProductIsEnable { get;set;}  
  21. //产品类相关的方法  
  22. public List<Product> GetAll()  
  23. {  
  24. return new List<Product>();  
  25. }  
  26. }  
  27. public class ProductClass : BaseWrite  
  28. {  
  29. //产品分类相关属性  
  30. public int ProductClassID { get;set;}  
  31. public int ProductClassName { get;set;}  
  32.  public int ProductClassCategory { get;set;}  
  33. public int ProductClassSort { get;set;}  
  34. public int ProductClassIsEnable { get;set;}  
  35.  //产品分类相关的信息  
  36. public List<ProductClass> GetAll()  
  37. {  
  38. return new List<ProductClass>();  
  39. }  

我们看到了在活动记录模式中会将数据访问层的代码写在该层,但是领域模型中一般不会出现这样的代码。领域模型中只关心跟业务流程相关的内容,具体的数据持久化之类的内容一概不关心。领域模型中是一系列的对象之间的交互,那么我们可能会关心,如何将领域模型中的这些对象的状态进行保存呢,那么就会牵扯到对象模型到关系型数据库中持久化的个问题了,在持久化的问题上,我们可能有几种选择,一种是采用现有的ORM框架去实现对象数据的自动持久化,当然这是一种解决办法。有时候我们是通过手动的方式来进行持久化,可能就不存在这样的问题。

我们通常在持久化数据的问题上我们希望能做到持久化的透明性,这样就可以说具体的业务层不需要书写持久化的操作代码,当然我们现在设计的时候可能都是要么是通过特性来实现持久化,或者是通过继承基类的方式来做持久化的操作,那么可能带来如下的问题。

498)this.width=498;'' onmousewheel = ''javascript:return big(this)'' alt="" src="/uploadfile/201301/12/2A122036175.png" />

一般我们知道,一个类如果想不写相应的持久化代码还能实现持久化的话,那么我们只能通过动态的注入持久化代码的方式来实现这样的持久化透明的方案,微软的EntityFrameWork2.0中的POCO中的ORM方案,就是通过这样的方式来实现的。我们更关心的是代码应该放在何处,是在领域模型中还是领域模型外呢,当然目前的一些常见的框架中已有实现方案,其中大家熟知的NHibernate就是持久化透明的方式,大家如果感兴趣可以参考NHibernate的实现思路来做。一般对于这种动态注入代码的这样的方案,这里简单介绍下可能的实现,由于.NET framework 中提供了一个派生自特性类型的代理类,通过代理类来动态的将这个类的相关功能追加到指定的对象中,这就是所谓的动态代理,当然针对某个特定的类型这样来做,WCF也是通过代理类的

网学推荐

免费论文

原创论文

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