min10

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

 

大家都知道,在petshop4.0中,使用了消息处理订单数据,以实现数据的异步插入,提高系统的数据库访问性能,可是我看了半天,也没看懂这个异步是怎么实现的,无奈之下,只得再细细的读petshop4.0 详解之三(PetShop数据访问层之消息处理)(转帖) ,后来才有了自己的一下想法,也不知道对不对,先写下来:

首先,在BLL中,Category.cs,Inventory.cs,Item.cs,Product.cs这些类处理数据都是使用的PetShop.DALFactory.DataAccess.Create...,是直接将数据插入数据库,没有用到消息队列。只有Order.cs中涉及到了消息的使用,看下面的代码:

 

Code

 

 

petshop4.0 详解之三(PetShop数据访问层之消息处理)(转帖) 里面讲到这段代码用到什么“策略模式”,

我的理解就是IBLLStrategy这个项目吧,这个项目里定义了一个接口IOrderStrategy,BLL中的OrderAsynchronous.cs(异步)和OrderSynchronous.cs(同步)都继承了这个接口,也都实现了接口里的public void Insert(PetShop.Model.OrderInfo order)方法,不同的是一个是异步,一个是直接PetShop.DALFactory.DataAccess.Create...。而在BLL中的Order.cs中,具体是使用的异步还是同步,就决定于上面的代码了。而上面的代码中在创建PetShop.IBLLStrategy.IOrderStrategy接口时,读取了配置文件,所以真正决定是使用异步还是同步方式的是配置文件 ,如果要使用异步,则创建OrderAsynchronous.cs类,否则是OrderSynchronous.cs类。

posted on 2008-10-27 16:32  min10  阅读(266)  评论(0编辑  收藏  举报