.NET Remoting——practice & progress(2):WellKnown已知类型
来源:互联网 发布:java constructor类型 编辑:程序博客网 时间:2024/06/06 08:51
当服务器端将远程对象注册到服务器端时,远程对象并没有实例化。当客户端获取远程对象时,远程对象仍然没有实例化。只有当客户端调用远程对象方法时,远程对象才会在服务器端生成实例化对象。
服务器端激活模式又分为Singleton和SingleCall两种模式:
ØSingleton
Singleton从字面上很容易获知,当选择Singleton模式时,在服务器端的远程对象将会有零或至多一个实例化对象。
服务器端注册远程对象的代码事例如下:
RemotingConfiguration.RegisterWellKnownServiceType(typeof(Calculator),
"CalculatorService", WellKnownObjectMode.Singleton);
服务器端注册远程对象的配置文件事例如下:
<wellknown mode="Singleton" type="Inovout.Remoting.RemotingObject.Calculator,RemotingObjectClassLibrary"
objectUri="CalculatorService"/>
客户端获取远程对象的代码事例如下:
calculator = (Calculator)Activator.GetObject(
typeof(Calculator), "tcp://localhost:8891/CalculatorService");
客户端获取远程对象的配置事例如下:
<wellknown
type="Inovout.Remoting.RemotingObject.Calculator,RemotingObjectClassLibrary"
url="tcp://localhost:8891/CalculatorService" />
Calculator calculator = new Calculator();
客户端运行结果效果图
ØSingleCall
SingleCall与Singleton的不同在于,SingleCall可以在客户端调用远程对象方法时,为每个客户端生成远程对象实例对象。但是,当远程对象方法调用完成后,刚生成的远程对象实例化对象会立即销毁。当下次再次调用远程对象方法,会再次生成远程对象实例化对象。
服务器端注册远程对象的代码事例如下:
RemotingConfiguration.RegisterWellKnownServiceType(typeof(Calculator),
"CalculatorService", WellKnownObjectMode. SingleCall);
服务器端注册远程对象的配置文件事例如下:
<wellknown mode="SingleCall" type="Inovout.Remoting.RemotingObject.Calculator,RemotingObjectClassLibrary"
objectUri="CalculatorService"/>
客户端获取远程对象的代码事例如下:
Calculator calculator = (Calculator)Activator.GetObject(
typeof(Calculator), "tcp://localhost:8891/CalculatorService");
客户端获取远程对象的配置事例如下:
<wellknown
type="Inovout.Remoting.RemotingObject.Calculator,RemotingObjectClassLibrary"
url="tcp://localhost:8891/CalculatorService" />
calculator = new Calculator();
客户端运行结果效果图
服务器激活模式对于客户端而言,所有代码完全相同,原因很容易解释。因为在这种激活模式下,是由服务器端来决定远程对象相关信息和状态。但是,由于.NET Remoting为开发人员做了非常好的封装,也使开发人员非常容易完成Singleton和SingleCall两种服务器激活模式的注册工作,而且两种模式的代码几乎完全一样。两种服务器激活模式具体不同点如下:
比例项目
Singleton
SingleCall
实例化对象个数
1
为每个客户端生成一个实例化对象
生存周期
由服务器端租约决定
调用完方法后立即销毁
状态
有
无
- .NET Remoting——practice & progress(2):WellKnown已知类型
- .NET Remoting——practice & progress(4):Parameter参数
- .NET Remoting——practice & progress(1):Configuration Files配置文件
- .NET Remoting——practice & progress(3):Client Activated客户端激活
- .NET Remoting——first things first(1):抛砖引玉
- .NET Remoting——first things first(2):Channel信道
- .net Remoting小结2
- [Remoting] 一:.NET Remoting
- [Remoting] 一:.NET Remoting
- .NET Remoting专题系列2
- .net remoting 小结(一)
- .Net Remoting基础(一)
- .Net Remoting基础(二)
- JObject——直接转化为已知的对象类型
- 应用框架的设计与实现——.NET平台(4.2 Remoting 客户端激活)
- 应用框架的设计与实现——.NET平台(4.2 Remoting 无配置文件)
- .NET Romoting 学习总结(一)——Remoting技术之激活模式全接触
- .NET Romoting 学习总结(二)—— Remoting技术之远程调用三步走
- 魔力AJAX:在现有的网页中使用AJAX
- .NET Remoting——first things first(4):Summary概述
- .NET Remoting——practice & progress(1):Configuration Files配置文件
- VMware 上网方式
- 转:漫话验证码缘起,程序原理及其他
- .NET Remoting——practice & progress(2):WellKnown已知类型
- SQL聚合函数功能和用法解析
- .NET Remoting——practice & progress(3):Client Activated客户端激活
- 用户权限
- .NET Remoting——practice & progress(4):Parameter参数
- Smart Client智能客户端技术初探
- Linux下的杀毒软件Avast
- 运气比选择重要,选择比努力重要
- 人体十大最佳黄金时间