Microsoft Remoting 初步研究笔记二三事(针对.NET2.0)
来源:互联网 发布:mac版千牛怎么打单 编辑:程序博客网 时间:2024/04/30 16:25
(一)Remoting的签名反射问题:
制作一个简单的Remoting案例,只要客户端和服务端的签名相同就可以反射获得成员。
程序通过反射机制进行获得对应的值。
1)但是成员必须是公用的public的,而且成员同样也不能是静态,否则。
An exception occured: 权限被拒绝: 无法远程调用非公共或静态方法。错误。
2)为了Remoting可以反射,客户端的远程类,可以是内部internal的,服务端也可以是Internal的,但是签名的格式必须相同,可见性可以不同。但是服务端一定要public的。
例如:
客户端的:
namespace RemoteOBJ{ internal class ServerObject : ContextBoundObject { internal int Add() { return 0; } public ServerObject() { ; } public ServerObject(string name, int age) { ; } public override string ToString() { return base.ToString(); } }}服务端的:
namespace RemoteOBJ{ internal class ServerObject :ContextBoundObject { private int count=0; internal delegate void AddHandler(); internal event AddHandler OnAdd; public int Add() { this.count+=1000; return count; } public ServerObject() { } private string _name; private int _age; public ServerObject(string name,int age) { this._name = name; this._age = age; } public override string ToString() { return String.Format("Name:{0},Age:{1}", _name, _age); } }}
以上的Add是可以使用的,其他的我没有试过。
最低的可见性也得Internal,不可能是private,protected的,因为根本就无法访问嘛。不说也罢。
(二)Remoting事件处理问题
关于Remoting编写事件的时候,和普通的差别有这样四条,而且经常让我们望而生畏的就是出现BUG,但是为什么呢,其实和委托的本质有关,所以C#规定了使用Remoting事件的4个原则,而且我们出错的最多的就是第四个问题(红色部分)。
● 服务器中的远程对象必须声明一个带有方法签名的外部函数(委托),以便客户端在处理程序
中实现这些外部函数。
● 由于与处理程序函数一起传递给客户端的参数必须是可编组的,因此发送给客户端的所有
数据必须是序列化的。
● 远程对象也必须声明一个委托函数的实例,委托函数可以通过event关键字更改。客户端将
使用该实例注册处理程序。
中实现这些外部函数。
● 由于与处理程序函数一起传递给客户端的参数必须是可编组的,因此发送给客户端的所有
数据必须是序列化的。
● 远程对象也必须声明一个委托函数的实例,委托函数可以通过event关键字更改。客户端将
使用该实例注册处理程序。
● 客户端必须创建一个带有处理程序方法的接收器对象,其中的处理程序方法必须与委托定
义的接受器对象有一样的签名。此外,客户端必须注册接收器对象,这个接收器对象带有
远程对象中的事件。
义的接受器对象有一样的签名。此外,客户端必须注册接收器对象,这个接收器对象带有
远程对象中的事件。
原理如图:
记住事件基于由于委托属于另外的类,使用EventSink接收器是必须的,要不就会报错。
可以参看:http://www.cnblogs.com/wayfarer/articles/75213.html
后记:设置visio 的构造型(衍类)
- Microsoft Remoting 初步研究笔记二三事(针对.NET2.0)
- NET2.0 Remoting 开发
- Remoting研究
- Remoting研究
- Microsoft .Net Remoting
- Microsoft .Net Remoting
- Microsoft .Net Remoting
- Microsoft .NET Remoting
- Microsoft .Net Remoting
- Microsoft .Net Remoting技术
- 初步接触remoting
- java学习笔记-线程的初步研究
- Remoting 笔记
- remoting的研究
- .NET2.0学习笔记1
- asp.net2.0学习笔记
- ASP.NET2.0 控件笔记
- Microsoft .NET Remoting:技术概述
- 未能找到clazz=com.sysway.boss.service.party.role.IHobbyService的mock实现,请确认已有该接口的mock实
- 品牌电商成本核算与精细化成本控制
- MYSQL 存储过程,游标和触发器
- 【CC攻击是什么?linux下该如何解决这个问题】
- 系统理解Win32 API和MFC
- Microsoft Remoting 初步研究笔记二三事(针对.NET2.0)
- DEDE 列表页中调用图集图片
- .pch/release-shared-emb-arm/QtGui: No such file or directory
- SAP内存计算--HANA 走近SAP HANA
- Matlab快速删除矩阵中满足条件的行、列的方法
- 【linux基础】Gcc编译选项
- openstack负载均衡及高可用配置
- 中国移动SP短信网关接入平台
- 帮助你生成超酷计时器和时钟效果的jQuery插件 - FlipClock.js