谷歌旗下Gmail周四宕机90分钟:480万用户受影响
2012-06-08 10:07
483 查看
.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"/>
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"/>
相关文章推荐
- 谷歌将整合旗下产品用户信息 3月更新服务条款
- 谷歌测试多账户登陆 用户可同时登陆多个Gmail
- Gmail服务突然中断1个多小时 多国用户遭受影响
- 50万用户数据泄露 谷歌将关闭旗下社交网络Google+
- Gmail用户信息丢失 谷歌称***导致
- 谷歌对用户搜索加密这一做法对seo的影响!
- 谷歌推出新安全措施 保护Gmail等服务用户
- Gmail电子邮件曝全球性故障 谷歌向用户道歉
- 谷歌google搜索打不开、谷歌gmail邮箱及相关服务无法登录的解决办法
- 用户行为是如何影响网站的搜索排名
- 网站嵌入谷歌广告或功能,影响页面显示
- 谷歌开放自有开发工具:曾用于创建Gmail
- 谷歌上不去,长期的解决方案。在稳定高速Google和Gmail
- 谷歌将在AMP页面中移除前缀 保证用户完整体验
- 谷歌的产品观:超越用户的需求
- 从谷歌宕机事件认识互联网工作原理
- 总结哪些因素影响谷歌排名
- 超过50万用户受到四个恶意Chrome扩展的影响
- 安全资讯丨雅虎又有10亿的用户信息遭泄露,影响此次的收购计划吗?
- 设计影响用户心情(三)