.NETRemoting框架的使用
来源:互联网 发布:ubuntu eclipse ndk 编辑:程序博客网 时间:2024/06/06 08:34
下面就来介绍该框架的使用方法:
首先我们要引入必要的名字空间
using System;
using System.Runtime.Remoting;
using System.Runtime.Remoting.Channels;
using System.Runtime.Remoting.Channels.Tcp;
名字空间的用途相信大家是知道的吧。其实就是为了方便下面写代码(个人认为)
下面我们来介绍一下这几个名字空间的方法
System想信我不说大家也知道,在每个.NET程序中都会引用该名字空间
名字空间using System.Runtime.Remoting;提供了创建远程分布式应用程序所需要的基类和接口,主要有3个类RemotingConfiguration,RemtoingServices和ObjRef类
RemotingConfiguration类通过一系列的静态方法来配置远程分布式程序
RemtoingServices类提供一系列使用和发布远程对象的方法
ObjRef类封装了用于远程对象的所有必要信息
名字空间System.Runtime.Remoting.Channels提供了使用和操作“通道”的各种类
名字空间System.Runtime.Remoting.Channels.Tcp提供了用于TCP协议建立“通道”的各种类
接下去就是建立远程对象类
public class RemoteObject : System.MarshalByRefObject
{
public RemoteObject()
{}
public void SayHello() //远程对象的方法
{
Console.Write(“Hello this is a test“); //在客户端打印
}
}
远程对象必须继承自Systen.MarshalByRefObject,作为远程对象还必须定义其为公共对象这样才能被客户端调用,我们这里定义的远程对象包含了一个方法SayHello。
远程对象被客户端访问还要建立服务器代码,下面我们就来介绍服务器端代码
在服务器端的Main()方法内写如下代码
RemoteObject remoteobject; //在服务器端初始化远程对象
TcpChannel channel=new TcpChannel(8090); //用构造函数初始化监听端口
ChannelServices.RegisterChannel(channel); //注册该端口
RemotingConfiguration.RegisterWellKnownServiceType(typeof(RemoteObject),
“RemoteHello“,WellKnownObjectMode.Singleton);
remoteobject=(RemoteObject)Activator.GetObject(typeof(RemoteObject),“tcp://localhost:8090/RemoteHello“);
服务器主要实现代码就这些,下面就来解释这些代码的含义。
RemoteConfiguration类的RegisterWellKnownServiceType是用来注册远程对象的,它有3个参数,第一个参数用于指定远程对象的类型,第2个参数是远程对象的URI,要从客户端访问该对象时要用到该参数,最后一个参数是远程对象的模式,有2个模式可供选择既Singleton和SingleCall,下面就来说说这两种方式的区别:SingleCall方式表示不保存状态,也就是每次调用一次远程对象都要创建一个新实例;Singleton方式服务器的所有客户都可以共存对象。
Activator类的GetObject是用来创建远程对象的,它有2个参数,第一个参数用来指定远程对象的类型,第2个参数是远程对象的URI,这里RemoteHello是对象的URI,也就是我们用RemoteConfiguration类的RegisterWellKnownServiceType方法注册时指定的。
下面我们就来介绍客户端代码,在客户端的Main()方法内写如下代码
RemoteObject remoteobject; //初始化远程对象
TcpChannel channel=new TcpChannel(0); //用构造函数初始化连接端口,在下面我们会另外说明
ChannelServices.RegisterChannel(channel); //注册该端口
remoteobject=(RemoteObject)Activator.GetObject(typeof(RemoteObject),
“tcp://localhost:8090/RemoteHello“);
remoteobject.SayHello(); //调用远程方法
客户端主要代码就这些
TcpChannel channel=new TcpChannel(0); 中初始化的端口并不是0端口,在客户端会自动分配一个可用端口连接远程服务器。
要想在客户端简单的用new来激活远程对象还有一个方法
RemotingConfiguration.RegisterWellKnownClientType(typeof(RemoteObject),
“RemoteHello“,WellKnownObjectMode.Singleton);
RemoteObject remoteobject=new RemoteObject();
- .NETRemoting框架的使用
- 微软的远程处理框架.NETRemoting(2)
- 简单的.NETRemoting
- WebService与.NetRemoting的区别
- 7-.netRemoting
- .netremoting激活模式
- 远程数据传输之NetRemoting
- 应用程序框架的使用
- DWR框架的使用
- tiles框架的使用
- TILES框架的使用
- 框架的使用介绍
- ProtoType框架的使用
- springmvc框架的使用
- MyBatis框架的使用
- * 几何框架的使用
- 框架的使用
- MyBatis框架的使用
- Ajax 简介
- ArcGIS坐标纠正方法
- MBA案例分析(管理之道在于“借力”)
- 程序启动大汇总
- 截取字符串,获取时间,并提取星期
- .NETRemoting框架的使用
- SQL语句中的JION语句的认识
- .NET框架与COM
- junit简单配置及心得
- 搜索引擎算法研究(三)
- MBA案例分析(管理之道在于“借力”二)
- 服务器中的mysql启动正常,但是程序就是不能连接,为什么?
- 图片经过指定时间变化一次
- Junit基本教程