一. .NET Remoting 简介:
.NET Remoting 从某种意义上讲是 DCOM 的替代品。 ASP.NET Web 服务十分有用,但是这项技术在企业内联网的解决方案中,对于某些业务请求来说并不快,也没有足够的灵活性,而且, ASP.NET Web 服务需要有运行时的支持。使用 .NET Remoting 技术后,可以将 Web 服务提供给世界上的任何地方。而且可以在所有的应用程序类型中运行 Web 服务。
二. .NET Remoting 的基本原理:
体系结构图如下:
三.几个重要的概念:
1 .远程对象:
远程对象类是从 MarshalByRefObject 类中派生的。跨越应用程序域调用这个类需要使用代理。 .NET Remoting 支持两种类型的远程对象:知名的( Well-known )远程对象和客户激活( Client-activated )远程对象。远程对象其实包括两层含义:
操作远程对象:对象运行在远程,客户段向他发送消息;
传递远程对象:将远程对象拿到本地,或者将本地对象发送过去,对副本进行操作。
2 .激活:
使用 new 运算符可以激活远程对象。还有其它一些方式也可以激活远程对象,在以后的随笔里面我会介绍。
3 .通道:
一个远程对象使用通道发送和接收消息。服务器选择一个通道来监听请求,客户端选择通道来和服务器通讯。 Remoting 提供了内置的通道: TCP 通道和 HTTP 通道,我们也可以编写自己的通道。
4 .编组:
数组通过应用程序域被传递的过程称为编组。将变量作为远程对象的参数来发送时,这个变量必须被转换,以便能够通过应用程序域发送该变量。
5 .监听:
使用监听,能够将某些功能置入到方法调用链中。如果调用某个对象的方法,监听层便能够捕获调用来转换方法调用,或是完成某些日志记录。 .NET Remoting 调用链的每一部分都是用监听。
四.开发 Remoting 三步走:
开发 .NET Remoting 分三步走,在这里以一个简单的例子来说明。
1 .创建远程对象:
继承
System.MarshalByRefObject
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2.创建宿主应用程序:
注册通道
注册服务器激活的远程对象
运行宿主程序
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.建立客户端程序:
注册通道
根据 URL 得到对象代理
使用代理调用远程对象
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

