.NET Remoting——practice & progress(3):Client Activated客户端激活
来源:互联网 发布:java constructor类型 编辑:程序博客网 时间:2024/06/06 05:56
当服务器端将远程对象注册到服务器端时,远程对象并没有实例化。当客户端获取远程对象时,远程对象被实例化,而且支持参数化的构造,这点与服务器端激活模式是显著的不同。而且,服务器端激活模式只支持默认构造函数。
服务器端注册远程对象的代码事例如下:
//服务器端激活模式只能提供默认构造器的远程对象实例。客户端激活模式支持带参构造,并且向服务器环境注册时,又必须是已实例化的对象。因此,没有URI也不能有URI,注册时,服务器端根本无法不知道客户端会选择哪种构造器实例化远程对象。
RemotingConfiguration.ApplicationName = "CalculatorService";
//因为注册时,并没有提供URI,所以需设置RemotingConfiguration的ApplicationName,以便让客户端找到该远程对象。
RemotingConfiguration.RegisterActivatedServiceType(typeof(Calculator));
服务器端注册远程对象的配置文件事例如下:
<application name="CalculatorService">
<service>
<activated type="Inovout.Remoting.RemotingObject.Calculator,RemotingObjectClassLibrary"/>
</service>
客户端获取远程对象的代码事例如下:
object[] activatorAttribute = {new UrlAttribute("tcp://localhost:8891/CalculatorService")};
Calculator calculator = (Calculator)Activator.CreateInstance(
typeof(Calculator), null, activatorAttribute);
客户端获取远程对象的配置事例如下:
<client url="tcp://localhost:8891/CalculatorService">
<activated type="Inovout.Remoting.RemotingObject.Calculator,RemotingObjectClassLibrary"/>
</client>
客户端运行结果效果图
客户端激活模式相对于服务器端激活模式,具有非常灵活的特性,几乎与本地对象没有区别。但是这是以牺牲服务器端资源为代价的。服务器端模式无论是Singleton还是SingleCall都是远程对象方法被调用时才会被实例化,Singleton至多只会有一个实例,SingleCall干脆就不会存在。但是,选择客户端模式激活的远程对象是在new的时候就被创建实例化对象,而且会为每个客户端生成一个远程对象实例。
服务器激活模式与客户端激活模式比较如下:
比较项目
服务器端激活
客户端激活
实例化对象时间
远程对象方法被调用
New的时候
实例化对象个数
Singleton至多有1个/SingleCall多个
多个
构造函数
默认空构造函数
支持参数化构造
状态
Singleton有状态/SingleCall无状态
可以进行状态管理
占用服务器资源
不大
较大
客户端激活模式支持参数化构造函数,这对于开发人员来说是非常重要的特性,非常有利于开发人员采用面向对象思想来设计和开发.NET Remoting(为达到维护远程对象完全可以通过相关方法来实现,但那些都不是面向对象思想的体现)。
?疑问:客户端激活模式的URL和URI设置感觉不是很方便,特别别扭,不知道为什么.NET Remoting不能提供象服务器端激活模式那样的设置方式吗?
- .NET Remoting——practice & progress(3):Client Activated客户端激活
- .NET Remoting——practice & progress(4):Parameter参数
- .NET Remoting——practice & progress(1):Configuration Files配置文件
- .NET Remoting——practice & progress(2):WellKnown已知类型
- 应用框架的设计与实现——.NET平台(4.2 Remoting 客户端激活)
- Remoting 客户端激活代理
- Webcast.NET Remoting学习笔记(3)对象激活
- 使用客户端激活对象通过 .NET Remoting 实现 Broker
- 动态修改客户端激活的.Net Remoting地址
- .NET Romoting 学习总结(一)——Remoting技术之激活模式全接触
- How to dispose a .Net Remoting Host Server(Server Activated Objects)
- .NET Remoting 体系结构 之 对象的激活
- .NET Remoting——first things first(1):抛砖引玉
- 一个简单的.net remoting客户端例子
- 一个简单的.net remoting客户端例子
- .NET Remoting服务器端订阅客户端事件
- .Net Remoting服务端与客户端调用示例
- .NET Remoting——first things first(3):RemoteObject远程对象
- .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
- 运气比选择重要,选择比努力重要
- 人体十大最佳黄金时间
- 与测试同行分享一本好书——《全程软件测试》
- Oracle 跨库 查询 复制表数据(转)_CAD/CAM/CAE/CAPP/CA......