.NETRemoting框架的使用

原创 2007年09月28日 09:29:00
Microsoft .NET Remoting 提供了一种允许对象通过应用程序域与另一对象进行交互的框架。其目的之一是为了提供一种必要的基础接口,一隐藏远程对象调用的方法和返回结果的复杂性。
下面就来介绍该框架的使用方法:
    首先我们要引入必要的名字空间
            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();

 

HTML5前端UI框架 ZUI

zui框架是什么? zui是禅道项目管理软件团队在完善自己产品过程中形成的一个开源前端实践方案,帮助你快速构现代跨屏应用。它的特点如下:  > 简单美观,易于使用,快速构建简洁大方的现代web...
  • helloworldmyself
  • helloworldmyself
  • 2015年10月30日 19:34
  • 2377

require框架的基本使用

require是一个轻量级、按需求、异步加载文件的JavaScript框架。require可以解决传统JavaScript代码开发中的两个问题: 避免同时加载多个文件,可以按需、异步加载,加快页面的响...
  • csm0912
  • csm0912
  • 2016年10月25日 14:47
  • 774

ORM框架使用优缺点

1. 什么是ORM? 对象-关系映射(Object-Relational Mapping,简称ORM),面向对象的开发方法是当今企业级应用开发环境中的主流开发方法,关系数据库是企业级应用环境中永久存...
  • sinat_34093604
  • sinat_34093604
  • 2016年11月08日 14:37
  • 6802

阿里dubbo框架使用系列:简介

阿里的dubbo框架是一个分布式服务的中间件,那么什么是分布式服务中间件呢? 如图所示我们,现在有一个用户系统,它对外提供一个查询用户信息的接口(这里我们统称为用户服务),其它系统可以调用它,这...
  • u011325787
  • u011325787
  • 2016年05月09日 16:33
  • 4083

为什么要用SSM框架?

1.背景和使用 作为Java Web程序员,我们从学校到就业到工作中,接触的最多的可能就是三大框架,学习的时候老师经常跟我们重复和强调,学会用SSH,可以保证就业,保证薪水,那时候没有人想过为什么要学...
  • xiao2shiqi
  • xiao2shiqi
  • 2016年12月15日 20:14
  • 7932

【SSH三大框架】Struts2基础第八篇:Struts2用AJAX实现JSON插件的使用

AJAX的详细描述就不做介绍了,大家基本都懂这个。 下面我们会通过两个具体的案例,来做具体的实现: 案例一: 案例描述:输入用户名,把用户名通过AJAX异步传输的方式发送至后台,判断此用户名是否存在。...
  • u010800530
  • u010800530
  • 2014年08月30日 14:12
  • 2204

Nodejs的Express框架简单使用

一、什么是ExpressExpress就是一个为nodejs设计的web开发框架,它基于nodejs平台,本身功能极简,灵活,它提供了一系列强大的特性来帮助创建各种web和移动设备应用 。 特点: ...
  • Sophie_U
  • Sophie_U
  • 2016年11月02日 00:08
  • 3588

Mina框架的使用

什么是Mina框架Apache Mina是一个能够帮助用户开发高性能和高伸缩性网络应用程序的框架。它通过Java nio技术基于TCP/IP和UDP/IP协议提供了抽象的、事件驱动的、异步的API。是...
  • tangsilian
  • tangsilian
  • 2016年04月22日 12:02
  • 1715

CI框架简单使用方法

CodeIgniter框架   1、回忆MVC   1.1、M:模型,提供数据,保存数据   1.2、V:视图,只负责显示,表单form   1.3、C:控制器,协调模型和视图   1.4、actio...
  • admin_admin
  • admin_admin
  • 2016年06月27日 17:22
  • 5605

在做java 的web开发,为什么要使用框架

现在做项目都会使用框架,现在很常见的框架就是SSH(Struts+SpringMVC+Spring+Hibernate),SSM(Struts/springMVC+Spring+Hibernate),...
  • tang_huan_11
  • tang_huan_11
  • 2015年08月22日 09:02
  • 11782
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:.NETRemoting框架的使用
举报原因:
原因补充:

(最多只允许输入30个字)