原创 .Net PetShop 4.0的消息处理收藏

 .Net PetShop 4.0对订单的处理提供了两种方式以供选择,一种是同步处理,一种是异步处理。同步处理就不再多说了,使用普通的数据库存取方式;异步处理便是采用消息处理方式。

MSDN中介绍说利用消息队列,应用程序开发人员可以通过发送和接收消息方便地与应用程序进行快速可靠的通信。消息处理为您提供了有保障的消息传递和执行许多业务处理的可靠的防故障方法。具体来说,当数据库出现短时异常时,利用消息处理方式,可以对已提交的消息进行恢复,提高系统的可靠性。

下面重点来探讨.Net PetShop 4.0中的订单处理和消息处理。

PetShop.IMessaging
PetShop.MSMQMessaging
PetShop.MessagingFactory
PetShop.IBLLStrategy
PetShop.BLL
PetShop.OrderProcessor

一、PetShop.IMessaging命名空间

PetShop.IMessaging提供了一个接口IOrder,这个接口包含Receive和Send方法。

二、PetShop.MSMQMessaging命名空间

PetShop.MSMQMessaging提供了两个类Order和PetShopQueue。PetShopQueue实现了IDisposable接口,该类中还使用了.NET框架System.Messaging命名空间中的MessageQueue和Message类。

Order类继承PetShopQueue类,并实现IOrder接口。

三、PetShop.MessagingFactory命名空间

PetShop.MessagingFactory提供了一个自封装的类QueueAccess,该类同样实现了工厂模式,只不过这个工厂只生产一个“商品”——PetShop.MSMQMessaging.Order。

四、PetShop.IBLLStrategy命名空间

PetShop.IBLLStrategy提供了一个接口IOrderStrategy,该接口只有一个方法Insert。

五、PetShop.BLL命名空间

PetShop.BLL是.Net PetShop 4.0的业务逻辑层命名空间,其中包含Cart、Order、Item、Product等类,本文只关心其中的三个类:OrderAsynchronous、OrderSynchronous和Order。

OrderAsynchronous和OrderSynchronous是对IOrderStrategy接口的实现,前者是异步方式,后者是同步方式。Order类有三个主要的方法,分别是获取订单GetOrder、插入订单Insert和从队列里接收订单ReceiveFromQueue。

插入订单Insert有两种方式:同步和异步,它通过调用Order类的一个私有方法LoadInsertStrategy产生一个OrderAsynchronous或OrderSynchronous的实例,是工厂模式的又一次应用。

而获取订单GetOrder则是在订单处理完成之后再从数据库中获取的,它只与数据访问层(DAL)有关。由于.Net PetShop 4.0在数据访问层上也使用了工厂模式,因此在这里是通过调用PetShop.DALFactory.DataAccess.CreateOrder()创建一个实例dal,通过调用实例的GetOrder方法获取订单对象。

从队列里接收订单ReceiveFromQueue是在异步方式中使用的,这个方法将在订单处理PetShop.OrderProcessor中调用,在异步方式中将订单保存到数据持久层。

六、PetShop.OrderProcessor命名空间

PetShop.OrderProcessor提供了一个Program类,它是一个控制台程序。只如其注释里所写,在实际应用中,一般更愿意将其作为一个Windows Service程序来实现。它的功能是在异步方式中将订单保存到数据持久层。当然,保存订单还是通过调用业务逻辑层的Order类的Insert方法,将其保存到数据库中的。

需要说明的是,消息队列在Windows中必须进行安装。在控制面析->添加/删除程序->添加/删除Windows 组件中,选择消息队列复选框进行安装。

下面是web.config中有关消息的配置:

<!-- Order processing options (Asynch/Synch) -->
<add key="OrderStrategyAssembly" value="PetShop.BLL"/>
<add key="OrderStrategyClass" value="PetShop.BLL.OrderSynchronous"/>
<!-- Asynchronous Order options -->
<add key="OrderMessaging" value="PetShop.MSMQMessaging"/>
<add key="OrderQueuePath" value="FormatName:DIRECT=OS:MachineNamePrivate$PSOrders"/>

发表于 @ 2006年09月08日 14:31:00|评论(loading...)

新一篇: Oracle乱码的一种解决方法 | 旧一篇: .Net PetShop 4.0的配置文件属性管理

用户操作
[即时聊天] [发私信] [加为好友]
fengfangfang
订阅我的博客
XML聚合  FeedSky
订阅到鲜果
订阅到Google
订阅到抓虾
fengfangfang的公告

文章分类
收藏
    JBoss应用配置
    Windows平台下的安装与配置
    应用目录配置为根目录
    配置SSL
    .Net PetShop
    分布式数据库设计
    层次结构
    消息处理
    缓存处理
    配置文件属性管理
    Biztalk 实例
    从SQL Server中获取数据
    传输文本文件
    分割SQL记录集
    平面文件架构
    调用Web Services
    SQL Server 开发
    使用触发器自动编号
    分页存储过程
    复制表数据的SQL脚本生成器
    数据记录拼接聚合
    ASP.NET中使用Excel
    1 权限设置
    2 读取Excel文件
    3 写Excel文件
    4 上传并读取Excel文件
    Biztalk 开发
    使用动态端口输出文件
    如何快速创建架构
    架构和实例的验证
    架构的发布
    配置HTTP接收适配器
    重启Biztalk主机的秘密
    存档
    软件项目交易
    Csdn Blog version 3.1a
    Copyright © fengfangfang