关于Remoting的一个简单的调用列子

关于Remoting,在.net framework  2.0开始的,到3.5已经集成到WCF中,可一些老的项目还是用到了,现在写一个简单的例子帮助你去改一些比较老的项目。

Remoting就是客户端,通过服务器端去访问方法,符合分布式开发。下面将例子。

1、首先定义类库,也就是我们到时候要调用的方法。

/// <summary>
    /// 允许在支持远程处理的应用程序中跨应用程序域边界的访问对象
    /// 必须继承MarshalByRefObject
    /// </summary>
    public class MYRemotingMethod:MarshalByRefObject
    {
        public int AddMethod(int i, int j)
        {
            return i * j;
        }
    }

2、定义服务端,服务端定义为一个应用程序,代码如下,总共有三种调用方式,代码里面有详细的介绍

//创建tcp remoting通道
            TcpChannel tcpCh = new TcpChannel(1001);
            //创建 httpremoting通道
            HttpChannel httpCh = new HttpChannel(1002);
            //IPC通道  IPC只适合同系统内的通信,不需要设置端口号和主机名
            IpcChannel ipcCh = new IpcChannel("ipcServer");
            //注册通道
            ChannelServices.RegisterChannel(tcpCh);
            ChannelServices.RegisterChannel(httpCh);
            ChannelServices.RegisterChannel(ipcCh);
            //打印出 tcp  http  ipc通道的名称和优先级
            Console.WriteLine("TCP通道的名称是" + tcpCh.ChannelName);
            Console.WriteLine("TCP通道的优先级" + tcpCh.ChannelPriority);

Console.WriteLine("---------------");
            Console.WriteLine("TCP通道的名称是" + httpCh.ChannelName);
            Console.WriteLine("TCP通道的优先级" + httpCh.ChannelPriority);
            Console.WriteLine("---------------");
            Console.WriteLine("TCP通道的名称是" + ipcCh.ChannelName);
            Console.WriteLine("TCP通道的优先级" + ipcCh.ChannelPriority);
            Console.WriteLine("---------------");

//注册方法到remoting 库中,
           //配置远程通信的框架
            RemotingConfiguration.RegisterWellKnownServiceType(typeof(RemotingObject.MYRemotingMethod), "abc", WellKnownObjectMode.Singleton);
            Console.WriteLine("Press any key to exit!");
            System.Console.ReadLine();

3、客户端调用的方法如下:

try
            {
                string urlTcp = "tcp://localhost:1001/abc";
                RemotingObject.MYRemotingMethod proxyObjectTcp = (RemotingObject.MYRemotingMethod)Activator.GetObject(typeof(RemotingObject.MYRemotingMethod), urlTcp);

//通过代理访问对象的方法,输出结果
                Console.WriteLine("This call object by TcpChannel = {0}", proxyObjectTcp.AddMethod(100, 200));
                Console.ReadLine();
            }
            catch(Exception ex)
            {
                Console.WriteLine(ex.Message);
                Console.ReadLine();
            }

总结:有人会问,在客户端调用的时候,你可以直接实例类库的方法,为什么还要通过代理去访问类库的方法呢?我现在的理解是,这是分布式开发的思想,我还没有捅破那层窗户纸,以后会咋补上自己的理解,如果你有独到的见解,可以到群里跟我讨论QQ:115180614

关于Remoting的一个简单的调用列子,布布扣,bubuko.com

时间: 2024-08-07 01:52:30

关于Remoting的一个简单的调用列子的相关文章

C# Remoting的一个简单例子

.Net对于远程调用提供了两种方法:Remoting和WebService.WebService现在是如火如荼,特别是有一种比较流行的架构:Winform+WebService(Java..Net),我曾经做过的一个项目就是这样子的,分布式.跨平台.极佳的用户体验,这三者结合起来是不是很诱人?不过,这里我只说Remoting,Remoting具有以下特点:1.Tcp通道的Remoting速度非常快2.虽然是远程的,但是非常接近于本地调用对象3.可以做到保持对象的状态4.没有应用程序限制,可以是控

迅为4412开发板编写简单应用调用驱动

本文转自迅为4412精英版群: 本期实验比较简单,就是写一个简单的应用程序调用前面写的驱动. 硬件工具 1)iTOP4412 开发板 2)U 盘或者 TF 卡 3)PC 机 4)串口 9.1.1.2软件工具 1)虚拟机 Vmware 2)Ubuntu12.04.2 3)超级终端(串口助手) 4)实验配套源码文件夹“invoke_hello” 视频资源 本节配套视频为“视频 09-编写简单应用调用驱动” 学习目标 本章需要学习以下内容: 学会调用设备节点 实验操作 本期实验很简单,在前面 Linu

Venus 是一个简单的、高性能、高并发能力的java 开源Remoting框架

Venus 是一个简单的.高性能.高并发能力的java 开源Remoting框架 wiki地址:http://wiki.hexnova.com/display/Venus/HOME 性能测试:http://wiki.hexnova.com/pages/viewpage.action?pageId=1507358 产品发布日志: http://wiki.hexnova.com/pages/viewrecentblogposts.action?key=Venus 1. 如何服务化 采用接口与实现分离

一个简单的webservice的demo(下)winform异步调用webservice

绕了一大圈,又开始接触winform的项目来了,虽然很小吧.写一个winform的异步调用webservice的demo,还是简单的. 一个简单的Webservice的demo,简单模拟服务 一个简单的Webservice的demo(中)_前端页面调用 当winform同步调用服务时,由于调用服务不能像C/S那样快,winform的UI进程一直在等待服务的返回结果,就无法响应用户事件.为了解决这种问题,我们用异步调用. 首先,先准备一个模拟用的webservice,如下: 1 using Sys

一个简单的AXIS远程调用Web Service示例

我们通常都将编写好的Web Service发布在Tomcat或者其他应用服务器上,然后通过浏览器调用该Web Service,返回规范的XML文件.但是如果我们不通过浏览器调用,而是通过客户端程序调用,该如何实现?      接下来,我们利用Eclipse作为开发工具,演示一个Axis调用WebService的简单示例.步骤如下:           第一步:新建Web Project (一定要是web project,不能是java project).      第二步:导入AXIS类库.(官

使用Socket模拟一个简单的Webservice调用

webservice是对socket的一个封装,让远程调用调用变得更加简单,那么使用socket究竟有多么麻烦呢?来看看. 做一个简单的天气查询: 服务端: public class SocketServer { public static void main(String[] args) { DataInputStream dataInputStream = null; DataOutputStream dataOutputStream = null; try { // 启动socket服务端

一个简单的WCF服务的编写和调用

1.如图所示:这个简单的WCF Demo中主要包括3个文件:1个接口(定义了该服务提供的方法).1个实体类 .一个.Svc文件(方法的实现过程) 2.编写好服务的代码之后,编辑WCF配置文件,如果所示: 3.在客户端的终结点和绑定中写好配置信息,保存. 4.按F5运行,会调用WCF测试客户端.如果所编写的服务和配置都正常,客户端的界面是这样: 使用该工具可以测试接口中的方法返回的数据,至此一个简单的WCF服务程序就写好了.接下来就是把WCF服务发布到IIS中 5.右键解决方案,点击发布,将WCF

一个简单的C共享库的创建及python调用此库的方法

/*********************************************************************  * Author  : Samson  * Date    : 02/02/2015  * Test platform:  *              3.13.0-24-generic  *              GNU bash, 4.3.11(1)-release  * ************************************

.Net remoting方法实现简单的在线升级(上篇:更新文件)

一.前言:       最近做一个简单的在线升级Demo,使用了微软较早的.Net Remoting技术来练手. 简单的思路就是在服务器配置一个Remoting对象,然后在客户端来执行Remoting对象中的方法. 过程: (1) 读取本地dll文件的名称与版本号,与服务器的进行对比 (2) 确认需要升级的文件名称与版本号并告诉服务器,服务器将其复制到一个临时文件夹并压缩成zip (3) 将服务器的zip下载到本地的临时文件夹,并解压. 定义服务器端为UpdateServer,其配置文件为: <