程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> 關於.NET >> .Net PetShop 4.0的消息處理

.Net PetShop 4.0的消息處理

編輯:關於.NET

.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"/>

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved