|
分布式處理在大型企業應用系統中,最大的優勢是將負載分布。通過多臺服務器處理多個任務,以優化整個系統的處理能力和運行效率。分布式處理的技術核心是完成服務與服務之間、服務端與客戶端之間的通信。在.NET 1.1中,可以利用Web Service或者.NET Remoting來實現服務進程之間的通信。本文將介紹一種基于消息的分布式處理架構,利用了.NET Remoting技術,并參考了CORBA Naming Service的處理方式,且定義了一套消息體制,來實現分布式處理。
一、消息的定義
要實現進程間的通信,則通信內容的載體——消息,就必須在服務兩端具有統一的消息標準定義。從通信的角度來看,消息可以分為兩類:Request Messge和Reply Message。為簡便起見,這兩類消息可以采用同樣的結構。
消息的主體包括ID,Name和Body,我們可以定義如下的接口方法,來獲得消息主體的相關屬性:
public interface IMessage:ICloneable
{
IMessageItemSequence GetMessageBody();
string GetMessageID();
string GetMessageName();
void SetMessageBody(IMessageItemSequence aMessageBody);
void SetMessageID(string aID);
void SetMessageName(string aName);
}三、業務服務對于消息的處理
前面實現的服務架構,已經較為完整地實現了分布式的服務處理。但目前的實現,并未體現對消息的處理。我認為,對消息的處理,等價與具體的業務處理。這些業務邏輯必然是在服務端完成。每個服務可能會處理單個業務,也可能會處理多個業務。并且,服務與服務之間仍然存在通信,某個服務在處理業務時,可能需要另一個服務的業務行為。也就是說,每一種類的消息,處理的方式均有所不同,而這些消息的唯一標識,則是在SendRequest()方法已經有所體現的aMessageName。
雖然,處理的消息不同,所需要的服務不同,但是根據我們對消息的定義,我們仍然可以將這些消息處理機制抽象為一個統一的格式;在.NET中,體現這種機制的莫過于委托delegate。我們可以定義這樣的一個委托:
public delegate void RequestHandler(string aMessageName,IMessageItemSequence
aMessageBody,ref IMessageItemSequence aReplyMessageBody);
NET技術:基于消息與.Net Remoting的分布式處理架構,轉載需保留來源!
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。