.Net PetShop 4.0的消息处理

2023-12-11 07:48
文章标签 处理 消息 net 4.0 petshop

本文主要是介绍.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" />

这篇关于.Net PetShop 4.0的消息处理的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/479967

相关文章

C#借助Spire.XLS for .NET实现在Excel中添加文档属性

《C#借助Spire.XLSfor.NET实现在Excel中添加文档属性》在日常的数据处理和项目管理中,Excel文档扮演着举足轻重的角色,本文将深入探讨如何在C#中借助强大的第三方库Spire.... 目录为什么需要程序化添加Excel文档属性使用Spire.XLS for .NET库实现文档属性管理Sp

Python+FFmpeg实现视频自动化处理的完整指南

《Python+FFmpeg实现视频自动化处理的完整指南》本文总结了一套在Python中使用subprocess.run调用FFmpeg进行视频自动化处理的解决方案,涵盖了跨平台硬件加速、中间素材处理... 目录一、 跨平台硬件加速:统一接口设计1. 核心映射逻辑2. python 实现代码二、 中间素材处

Go异常处理、泛型和文件操作实例代码

《Go异常处理、泛型和文件操作实例代码》Go语言的异常处理机制与传统的面向对象语言(如Java、C#)所使用的try-catch结构有所不同,它采用了自己独特的设计理念和方法,:本文主要介绍Go异... 目录一:异常处理常见的异常处理向上抛中断程序恢复程序二:泛型泛型函数泛型结构体泛型切片泛型 map三:文

SpringBoot+Vue3整合SSE实现实时消息推送功能

《SpringBoot+Vue3整合SSE实现实时消息推送功能》在日常开发中,我们经常需要实现实时消息推送的功能,这篇文章将基于SpringBoot和Vue3来简单实现一个入门级的例子,下面小编就和大... 目录前言先大概介绍下SSE后端实现(SpringBoot)前端实现(vue3)1. 数据类型定义2.

SpringSecurity中的跨域问题处理方案

《SpringSecurity中的跨域问题处理方案》本文介绍了跨域资源共享(CORS)技术在JavaEE开发中的应用,详细讲解了CORS的工作原理,包括简单请求和非简单请求的处理方式,本文结合实例代码... 目录1.什么是CORS2.简单请求3.非简单请求4.Spring跨域解决方案4.1.@CrossOr

requests处理token鉴权接口和jsonpath使用方式

《requests处理token鉴权接口和jsonpath使用方式》文章介绍了如何使用requests库进行token鉴权接口的处理,包括登录提取token并保存,还详述了如何使用jsonpath表达... 目录requests处理token鉴权接口和jsonpath使用json数据提取工具总结reques

C# 空值处理运算符??、?. 及其它常用符号

《C#空值处理运算符??、?.及其它常用符号》本文主要介绍了C#空值处理运算符??、?.及其它常用符号,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录一、核心运算符:直接解决空值问题1.??空合并运算符2.?.空条件运算符二、辅助运算符:扩展空值处理

浅析Python中如何处理Socket超时

《浅析Python中如何处理Socket超时》在网络编程中,Socket是实现网络通信的基础,本文将深入探讨Python中如何处理Socket超时,并提供完整的代码示例和最佳实践,希望对大家有所帮助... 目录开篇引言核心要点逐一深入讲解每个要点1. 设置Socket超时2. 处理超时异常3. 使用sele

C#借助Spire.XLS for .NET实现Excel工作表自动化样式设置

《C#借助Spire.XLSfor.NET实现Excel工作表自动化样式设置》作为C#开发者,我们经常需要处理Excel文件,本文将深入探讨如何利用C#代码,借助强大的Spire.XLSfor.N... 目录为什么需要自动化工作表样式使用 Spire.XLS for .NET 实现工作表整体样式设置样式配置

SpringMVC配置、映射与参数处理​入门案例详解

《SpringMVC配置、映射与参数处理​入门案例详解》文章介绍了SpringMVC框架的基本概念和使用方法,包括如何配置和编写Controller、设置请求映射规则、使用RestFul风格、获取请求... 目录1.SpringMVC概述2.入门案例①导入相关依赖②配置web.XML③配置SpringMVC