一. .NET Remoting 簡介:
.NET Remoting 從某種意義上講是 DCOM 的替代品。 ASP.NET Web 服務(wù)十分有用,但是這項技術(shù)在企業(yè)內(nèi)聯(lián)網(wǎng)的解決方案中,對于某些業(yè)務(wù)請求來說并不快,也沒有足夠的靈活性,而且, ASP.NET Web 服務(wù)需要有運(yùn)行時的支持。使用 .NET Remoting 技術(shù)后,可以將 Web 服務(wù)提供給世界上的任何地方。而且可以在所有的應(yīng)用程序類型中運(yùn)行 Web 服務(wù)。
二. .NET Remoting 的基本原理:
體系結(jié)構(gòu)圖如下:
三.幾個重要的概念:
1 .遠(yuǎn)程對象:
遠(yuǎn)程對象類是從 MarshalByRefObject 類中派生的。跨越應(yīng)用程序域調(diào)用這個類需要使用代理。 .NET Remoting 支持兩種類型的遠(yuǎn)程對象:知名的( Well-known )遠(yuǎn)程對象和客戶激活( Client-activated )遠(yuǎn)程對象。遠(yuǎn)程對象其實包括兩層含義:
操作遠(yuǎn)程對象:對象運(yùn)行在遠(yuǎn)程,客戶段向他發(fā)送消息;
傳遞遠(yuǎn)程對象:將遠(yuǎn)程對象拿到本地,或者將本地對象發(fā)送過去,對副本進(jìn)行操作。
2 .激活:
使用 new 運(yùn)算符可以激活遠(yuǎn)程對象。還有其它一些方式也可以激活遠(yuǎn)程對象,在以后的隨筆里面我會介紹。
3 .通道:
一個遠(yuǎn)程對象使用通道發(fā)送和接收消息。服務(wù)器選擇一個通道來監(jiān)聽請求,客戶端選擇通道來和服務(wù)器通訊。 Remoting 提供了內(nèi)置的通道: TCP 通道和 HTTP 通道,我們也可以編寫自己的通道。
4 .編組:
數(shù)組通過應(yīng)用程序域被傳遞的過程稱為編組。將變量作為遠(yuǎn)程對象的參數(shù)來發(fā)送時,這個變量必須被轉(zhuǎn)換,以便能夠通過應(yīng)用程序域發(fā)送該變量。
5 .監(jiān)聽:
使用監(jiān)聽,能夠?qū)⒛承┕δ苤萌氲椒椒ㄕ{(diào)用鏈中。如果調(diào)用某個對象的方法,監(jiān)聽層便能夠捕獲調(diào)用來轉(zhuǎn)換方法調(diào)用,或是完成某些日志記錄。 .NET Remoting 調(diào)用鏈的每一部分都是用監(jiān)聽。
四.開發(fā) Remoting 三步走:
開發(fā) .NET Remoting 分三步走,在這里以一個簡單的例子來說明。
1 .創(chuàng)建遠(yuǎn)程對象:
繼承
System.MarshalByRefObject
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2.創(chuàng)建宿主應(yīng)用程序:
注冊通道
注冊服務(wù)器激活的遠(yuǎn)程對象
運(yùn)行宿主程序
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
3.建立客戶端程序:
注冊通道
根據(jù) URL 得到對象代理
使用代理調(diào)用遠(yuǎn)程對象
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061
微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元

