999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

Remoting技術在遠程事件處理中的應用

2009-04-29 00:00:00謝日星
軟件工程 2009年12期

摘要:.NET Remoting是一種允許對象通過應用程序域與另一對象進行交互的框架,與Socket直接通信以及ASP.NET WEB服務相比有著自身明顯的特點,在一定條件下有著處理事件速度快、開發難度相對較低的優點,本文主要說明了高效應用.NET Remoting實現遠程事件處理的技術方案及關鍵技術,以提高分布式系統的整體性能。

關鍵詞:Remoting;遠程事件處理;消息發送

1 Remoting基礎

Remoting就是DCOM的一種升級,通過通道(channel)來實現兩個應用程序域之間對象的通信,原理如圖1所示。

Remoting中主要包括HTTP和TCP兩種通道,HTTP通道默認使用SOAP格式序列化消息對象,具有更好的互操作性,而TCP通道則默認采用二進制格式,具有更高的傳輸性能,因此,在局域網內的應用常選擇TCP通道,而在需要穿越防火墻的情況下,則選擇HTTP通道。

01

在Remoting中,遠程對象的激活分為服務器端激活和客戶端激活兩大類,其中服務器端激活又稱為WellKnow方式,因為服務器應用程序在激活對象實例之前會在已公布的URL上發布對應類型,并為此類型配置一個WellKnow對象。服務器端激活方式中又可以分成SingleTon模式和SingleCall模式兩種,其中SingleTon模式中有狀態模式,Remoting將為所有客戶端建立同一個對象實例;SingleCall模式是無狀態模式,Remoting會為每一個客戶端建立一個遠程對象實例。客戶端激活模式則在激活每個對象實例時,為每個客戶端激活的類型給定一個URL。

Remoting傳遞的對象是通過引用的方式實現的,因此所傳遞的遠程對象類必須繼承MarshalByRefObject。MarshalByRefObject是通過使用代理交換消息來跨越應用程序域邊界進行通信的對象的基類。服務器端運行過程中,一般通過注冊通道、注冊遠程對象和注銷通道三個步驟完成工作;而客戶端則主要完成注冊通道和獲得遠程對象兩件事。

2 分布式應用技術

Remoting技術在分布式處理程序中的應用中,通常由遠程對象、服務端、客戶端三部分組成,常用的事件處理形式包括:服務端訂閱客戶端事件、客戶端訂閱服務端事件和客戶端訂閱客戶端事件三種,事件處理的實現是Remoting在分布式應用中的難點。

服務器端訂閱客戶端事件是由客戶端發送消息,服務端捕捉消息然后處理對應事件。客戶端訂閱服務端事件,則是由服務端發送消息,所有客戶端都捕獲消息,激發事件,形成廣播形式的消息發送和捕獲方式。客戶端訂閱客戶端事件是某個客戶端發出消息,其他客戶端捕獲消息,激發事件。所有事件處理形式中,真正包含事件的都是遠程對象。

在分布式應用中,目前大部分實時數據處理系統中,都必須實現服務端訂閱客戶端事件,當客戶端需要向服務端發送消息,要求服務端處理相關數據或事件時,只需要通過已激活遠程對象發送消息,則服務端將接收到消息,并能自動調用已注冊好的事件處理程序,啟動事件處理流程,再把處理的結束發送回客戶端,則客戶端與服務端完成一次消息傳遞和事件處理,并且調用服務端完成業務及數據的處理。通過這種方式實現客戶端對服務端功能的調用比簡單地通過套接字進行消息的傳遞要方便很多,并能更好地保證系統質量。

3 服務端訂閱客戶端事件實現

簡單的服務端訂閱客戶端事件的實現并不特別困難,但必須注意,客戶端由于程序代碼可能需要部署到客戶計算機,因此對于關鍵性業務處理的類的相關代碼不應該被部署到客戶端,才能提高系統的安全性,以防止中間代碼被反編譯而導致關鍵機密被破解。

為保證客戶端與服務端能正常進行通信,必須定義客戶端與服務端之間的接口能統一,因頁設計一個遠程對象的公共接口,此接口僅定義通信接口,而接口中各消息的處理(也就是接口中的方法),只在處理業務的遠程對象類中實現,這些處理業務的遠程對象類將被設計到獨立的一個程序集中,此程序集被不被引用到客戶端系統中,僅會引用到服務端,以實現業務的處理,也就是完成對客戶端消息的處理。

遠程對象的公共接口(RemoteICommon.dll):

public delegate void MessageEventHandler(string message);

public interface IBusiness

{

void SendMessage(string message);

}

具體處理傳真業務的遠程對象類(RemoteObj)程序集中,引用遠程對象公共接口程序集,實現遠程對象類:

public class Business:MarshalByRefObject, IBusiness

{

public static event MessageEventHandler MessageSendedEvent;

public void SendMessage (string message)

{

if (MessageSendedEvent!= 1)

{

MessageSendedEvent (fax);

}

}

public override object InitializeLifetimeService()

{

return 1;

}

}

其中遠程對象中的事件類型是公共接口中定義的委托類型,并且實現了接口中的方法,這個方法的實現就是開始啟動客戶端消息處理的地方,而覆蓋MarshalByRefObject接口中的InitializeLifetimeService,并返回1則可以使遠程對象的生命周期為無限大。

在服務端中,引用遠程對象類所在的程序集,并且在服務端啟動服務過程中注冊通道和遠程對象,最后再注冊事件處理程序,方法為:

BinaryServerFormatterSinkProvider serverProvider = new

BinaryServerFormatterSinkProvider();

BinaryClientFormatterSinkProvider clientProvider = new

BinaryClientFormatterSinkProvider();

serverProvider.TypeFilterLevel = TypeFilterLevel.Full;

IDictionary props = new Hashtable();

props[\"port\"] = 8000;/*端口*/

HttpChannel channel = new HttpChannel(props, clientProvider, serverProvider);

System.Runtime.Remoting.Channels.ChannelServices.RegisterChannel(channel);

remotingServer = new Business();

ObjRef objref = RemotingServices.Marshal(remotingServer, remoteURL);

remotingServer. MessageSendedEvent += new Message

EventHandler(OnMessageSended);

客戶端僅引用遠程對象公共接口程序集(RemoteICommon.dll),在激活遠程對象后,通過調用遠程對象的方法,完成向服務端發送相應的消息,方法為:

IBusiness remotingAgent = (ITraderBusiness)Activator.GetObject(typeof(ITraderBusiness), \"http://serverIP:port/remoteURL\");

remotingAgent. SendMessage(“發送的消息內容”);

4 結論

應用Remoting技術實現遠程事件處理比直接應用Socket發送數據的方式,能較大程序的降低開發技術難度,減少開發工作量,提高系統穩定性;與ASP.NET WEB服務相比,當Remoting應用TCP通道時,系統每秒處理事務的數量比ASP.NET WEB服務要高,而且Remoting應用HTTP通道時,系統每秒處理事務的數量則比ASP.NET WEB服務要低很多;綜合各種技術方案的特點,在系統條件滿足時,應優先選擇Remoting 在 TCP 上使用二進制序列化方案實現遠程事件處理。

參考文獻

[1]Ingo Rammer.Advanced .NET Remoting.New York:Springer-Verlag New York Inc.2008.

[2]微軟公司.基于C#的.NET Framework程序設計[M].北京:高等教育出版社,2004.

[3]微軟公司.組件應用程序設計——COM+應用程序設計[M].北京:高等教育出版社,2004.

[4]微軟公司.基于.NET的需求分析和解決方案設計[M].北京:高等教育出版社,2004.

[5]微軟公司.基于C#的Windows應用程序設計[M].北京:高等教育出版社,2004.

主站蜘蛛池模板: 亚洲国产精品久久久久秋霞影院| 久久青青草原亚洲av无码| 欧美日本在线一区二区三区| 91亚瑟视频| 国产美女久久久久不卡| 农村乱人伦一区二区| 99国产精品一区二区| 麻豆精品国产自产在线| 国产在线无码av完整版在线观看| 国产永久在线观看| 欧美日韩久久综合| 免费Aⅴ片在线观看蜜芽Tⅴ| 韩日免费小视频| 中文字幕亚洲另类天堂| 国产麻豆91网在线看| 亚洲天堂日本| 日韩国产一区二区三区无码| 2020精品极品国产色在线观看| 亚洲精品欧美日本中文字幕| av在线手机播放| 久久 午夜福利 张柏芝| 亚洲色图综合在线| 久久精品娱乐亚洲领先| 理论片一区| 精品自拍视频在线观看| aⅴ免费在线观看| 亚洲区一区| 欧美a级完整在线观看| 国产手机在线ΑⅤ片无码观看| 伊人色在线视频| 国产乱子伦一区二区=| 丁香婷婷在线视频| 人禽伦免费交视频网页播放| 色偷偷男人的天堂亚洲av| 中文字幕久久波多野结衣| 久久婷婷综合色一区二区| 久久精品亚洲专区| 亚洲人成网站在线观看播放不卡| 欧美三级视频网站| 久久人与动人物A级毛片| 亚洲人成电影在线播放| 国产精品久久久久久久伊一| 国产成人一区二区| 最新国产精品第1页| 91成人免费观看在线观看| 成人免费视频一区二区三区| 91精品人妻一区二区| 久草青青在线视频| 天天色综网| 午夜欧美理论2019理论| 高清视频一区| 性视频一区| 伊人久久大香线蕉综合影视| 亚洲高清免费在线观看| 国产在线观看高清不卡| 91视频区| 国产免费福利网站| 99激情网| 一本综合久久| 狠狠色噜噜狠狠狠狠色综合久| 亚洲国产日韩欧美在线| 亚洲欧洲日韩综合| 中国国产高清免费AV片| 亚洲国产天堂在线观看| 一区二区三区国产| 国产欧美日韩91| 国产小视频网站| 亚洲国产欧美国产综合久久| 欧美精品一区在线看| 国产精品无码AⅤ在线观看播放| 国产精品成人一区二区| 很黄的网站在线观看| 国产区91| 国产在线观看成人91| 色综合久久88色综合天天提莫| 色亚洲成人| 狼友视频一区二区三区| 人妻无码AⅤ中文字| 成人国产一区二区三区| 亚洲第一成年网| 在线一级毛片| 久久福利网|