`

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中有关消息的配置:

<!--Orderprocessingoptions(Asynch/Synch)-->
<addkey="OrderStrategyAssembly"value="PetShop.BLL"/>
<addkey="OrderStrategyClass"value="PetShop.BLL.OrderSynchronous"/>
<!--AsynchronousOrderoptions-->
<addkey="OrderMessaging"value="PetShop.MSMQMessaging"/>
<addkey="OrderQueuePath"value="FormatName:DIRECT=OS:MachineNamePrivate$PSOrders"/>


分享到:
评论

相关推荐

    petshop 4详解

    非原创) petshop4.0 详解之一(系统架构设计 petshop4.0 详解之二(数据访问层之数据库访问设计 petshop4.0 详解之三(PetShop数据访问层之消息处理) petshop4.0 详解之四(PetShop之ASP.NET缓存) ...

    PetShop4.0源码 详细的解析资料 两种同步和基于MSMQ的异步处理 缓存处理策略 Master Pages Wizard Control

    微软提供PetShop4.0,最佳的ASP.NET学习资料。附上了详细的解析。 功能介绍: 1.System.Transactions替代了服务组件。System.Transactions是.NET Framework 2.0下出现的一个事务控制的命名空间,它是处理替代COM+...

    PetShop4.0中缓存的相关处理类

    简化版的PetShop4.0缓存相关处理类,下载后把所有类文件导入的一个新的类库项目中,注意更改命名空间,然后建立想要监视的数据库表的类 继承自TableCache类,调用父类构造方法传送表名称

    宠物商店V4.0版源码 (PetShop V4.0)

    使用了消息队列来实现异时订单处理 使用说明: 数据库在DB_51aspx文件中,四个数据库附加就可以,然后相应的去改改Web.config。 登陆用户名和密码份分别是:51aspx/51aspx.com 此项目没有后台管理,可供学习使用 如果...

    petshop(宠物商店) V4.0源码文件

    可以说,学习PetShop 4.0是深入掌握ASP.NET 2.0技术的捷径。 大名鼎鼎的PetShop(宠物商店)V4.0 1.System.Transactions替代了服务组件。System.Transactions是.NET Framework 2.0下出现的一个事务控制的命名空间,...

    宠物商店V4.0版源码

    使用了消息队列来实现异时订单处理 使用说明: 数据库在DB_51aspx文件中,四个数据库附加就可以,然后相应的去改改Web.config。 此项目没有后台管理,可供学习使用 如果项目中出现 MSDTC 不可用 解决:在windows控制...

    宠物商店 v4.0 源码.rar

    使用了消息队列来实现异时订单处理 使用说明: 数据库在App_data文件中,四个数据库附加就可以,然后相应的去改改Web.config。 登陆用户名和密码份分别是:51aspx/51aspx.com 此项目没有后台管理,可供学习使用 ...

    Petshop5.0详解文档+Petshop5.0源代码

    因为在PetShop 5.0中引入了异步处理机制。插入订单的策略可以分为同步和异步,两者的插入策略明显不同,但对于调用者而言,插入订单的接口是完全一样的,所以PetShop 5.0中设计了IBLLStrategy模块。虽然在...

    PetShop最新源代码合集(5.0、4、3版本合集)

    PetShop4.0源代码 .NET Pet Shop4 应用程序的设计说明了构建企业 n 层 .NET 2.0 应用程序的最佳做法,这种应用程序可能需要支持各种数据库平台和部署方案。 .NET Pet Shop 4 项目的目标是: 工作效率:减少了 ...

    《解剖PetShop》之三:PetShop数据访问层之消息处理

    本文主要讲解PetShop4.0的数据访问层的消息处理部分,需要的朋友可以参考下。

    Microsoft PetShop资料汇总.chm

    PetShop 4 的系统架构设计 || PetShop 4 数据访问层之数据库访问设计 ||PetShop 4 数据访问层之消息处理 || PetShop 4 之ASP.NET缓存 ||PetShop 4 之业务逻辑层设计||PetShop 4 之表示层设计 || 架构经验小结

    宠物商店 v4.0

    使用了消息队列来实现异时订单处理 使用说明: 数据库在App_data文件中,四个数据库附加就可以,然后相应的去改改Web.config。 登陆用户名和密码份分别是:51aspx/51aspx.com 此项目没有后台管理,可供学习使用 如果...

    .NET网络书店 v1.1

    借鉴PetShop4.0的三层架构,数据库操作全部使用存储过程,使用NUnit进行数据操作层的测试,并附上开发文档数据库使用:数据库在DB_51aspx文件夹中附加即可,必须使用2005。注册用户登录用例:admin/admin管理员登录...

    .NET网络书店 v1.1.rar

    借鉴PetShop4.0的三层架构,数据库操作全部使用存储过程,使用NUnit进行数据操作层的测试,并附上开发文档 数据库使用:数据库在DB_51aspx文件夹中附加即可,必须使用2005。 注册用户登录用例:admin/admin 管理...

    《解剖PetShop》之二:PetShop数据访问层数之据库访问设计

    在PetShop 4.0中,由于引入了ASP.Net 2.0的一些新特色,所以数据层的内容也更加的广泛和复杂,包括:数据库访问、Messaging、MemberShip、Profile四部分。在系列二中,我将介绍有关数据库访问的设计。  在PetShop中...

    网络书店v1.1源码(三层、附设计文档)

    其他:借鉴PetShop4.0的三层架构,数据库操作全部使用存储过程,使用NUnit进行数据操作层的测试,并附上开发文档 数据库使用:数据库在DB_51aspx文件夹中附加即可,必须使用2005。 注册用户登录用例:admin/admin ...

    pet shop 4.0 有详细架构文档 代码 三层解析

    《解剖PetShop》系列之三 PetShop数据访问层之消息处理 14 《解剖PetShop》系列之四 PetShop之ASP.NET缓存 22 《解剖PetShop》系列之五 PetShop之业务逻辑层设计 35 《解剖PetShop》系列之六 PetShop之表示层设计 44

    有关网络书店的源代码

    借鉴PetShop4.0的三层架构,数据库操作全部使用存储过程,使用NUnit进行数据操作层的测试,并附上开发文档 数据库使用:数据库在DB_51aspx文件夹中附加即可,必须使用2005。 注册用户登录用例:admin/admin 管理员...

    网络书店(附有详细的开发文档)

    其他:借鉴PetShop4.0的三层架构,数据库操作全部使用存储过程,使用NUnit进行数据操作层的测试,并附上开发文档 数据库使用:数据库在DataBase文件夹中附加即可,必须使用2005。 注册用户登录用例:admin/admin ...

    网络书店源码

    借鉴PetShop4.0的三层架构,数据库操作全部使用存储过程,使用NUnit进行数据操作层的测试,并附上开发文档。 网站后台功能: **后台登录 **修改密码 **系统设置 **图书管理 *图书分类 *添加图书 **订单管理 *订单...

Global site tag (gtag.js) - Google Analytics