在Wifi网络环境下,我们常用WebService作为服务程序构建分布式的应用程序系统,但是现在越来越多的应用在GPRS网络,因此WebService访问性能的问题渐渐体现出来.为了解决GPRS网络下快速构建分布式应用系统的问题,必须找到一种访问效率高于WebService,且开发效率高于直接采用Socket的方式.基于以上原因,我们尝试采用Remoting技术作为服务程序提供服务.
         Remoting技术实质上是Dll的远程调用技术,由于该技术支持HTTP,TCP和IPC方式,因此,直觉上感觉使用该技术传输XML,效率要高于WebService和Servlet方式,本文设计了一个简单的用于XML传送的Remoting,并与WebService做了测试,实验表明,Remoting采用Tcpip时运行效率远高于WebService.
         采用Remoting方式传输字符串时需要构建一个中间DLL,该DLL需要同时加载到服务器端和客户端,客户端通过实例化服务器端的DLL中的类对象,并调用其中的方法实现XML字符串的传递.
         程序实现如下:
1.公共DLL
namespace StringBridge
{
    public class StringBridge: System.MarshalByRefObject
    {
        protected string strXml = "";
        public StringBridge()
        {
            ......
        }
        //客户端调用,用于获取传送过来的字符串
        public void SetString(string strXml)
        {
            this.strXml = strXml;
     Console.Writeln(strXml); //测试输出
            return;

}
    }
}
注:从System.MarshalByRefObject类继承出来的对象在运行时不会离开自己的程序域,事实上从该基类下派生的子类可以被客户端远程调用.
2.服务器端:
创建控制台应用程序,导入System.Runtime.Remoting命名空间,然后再导入StringBridge库.
 using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.Remoting;
using System.Runtime.Remoting.Channels;
using System.Runtime.Remoting.Channels.Tcp;
namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            TcpServerChannel tcpServer = new TcpServerChannel(8086);
            ChannelServices.RegisterChannel(tcpServer, false);
            System.Runtime.Remoting.RemotingConfiguration.RegisterWellKnownServiceType(typeof(StringBridge.StringBridge), "Hi",
                WellKnownObjectMode.SingleCall); //告诉远程客户端,那个对象可以被调用.
            System.Console.WriteLine("Press return to exit");
            System.Console.ReadLine();
        }
    }
}
WellKnownObjectMode.SingleCall属性告诉服务程序每次有客户端登录时为客户端创建一个独立的实例.
注意:System.Runtime.Remoting命名空间要通过"引用"-"添加引用"-".Net"-"System.Runtime.Remoting"来引用.
3.客户端:
创建控制台应用程序,同样导入System.Runtime.Remoting命名空间,然后再导入StringBridge库.
using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.Remoting;
using System.Runtime.Remoting.Channels;
using System.Runtime.Remoting.Channels.Tcp;
namespace ConsoleApplication2
{
    class Program
    {
        static void Main(string[] args)
        {
            ChannelServices.RegisterChannel(new TcpClientChannel(), false);
            StringBridge.StringBridge obj = (StringBridge.StringBridge)Activator.GetObject(typeof(RemoteHello.Hello),"tcp://localhost:8086/Hi");

obj.SetString("<MESSAGE><HEAD><ACTIONID>LOGIN</ACTIONID></HEAD></MESSAGE>"); //调用方法传送字符串          
            Console.ReadLine();
        }
    }
}

运行服务器端程序,然后在运行客户端程序,会看到客户端的XML发送到了服务器端.
建立实现相同功能的WebService,分别在WebService上和Remoting方式调用1000次该操作,共做10组操作,WIFI网络上平均运行时间分别8900ms和691ms,由此可见,后者比前者性能提高10倍,完全可以适应GPRS这种低速网络

转载于:https://www.cnblogs.com/wude/archive/2008/04/17/1941629.html

使用Remoting技术相关推荐

  1. Remoting技术简介

    一 Remoting技术出现的背景 1)分布式应用需求的迅速增长(Peer-to-Peer, Grid等技术的出现) 2)原有的C/S, B/S模式和技术已经不能胜任(串口RS232,Socket,R ...

  2. 跟我一起学WCF(2)——利用.NET Remoting技术开发分布式应用

    一.引言 上一篇博文分享了消息队列(MSMQ)技术来实现分布式应用,在这篇博文继续分享下.NET平台下另一种分布式技术--.NET Remoting. 二..NET Remoting 介绍 2.1 . ...

  3. 在使用 .NET Remoting 技术开发跨进程通信时可能遇到的各种异常

    在使用 .NET Remoting 开发跨进程应用的时候,你可能会遇到一些异常.因为这些异常在后验的时候非常简单但在一开始有各种异常烦扰的时候却并不清晰,所以我将这些异常整理到此文中,方便小伙伴们通过 ...

  4. Remoting 技术

    Remoting 是基于TCP连接的,要实现她要先创建一个类库,然后将类库的dll文件引用到服务端和客户端 类库的主要代码: 创建一个类库叫Compute ,在类库中创建一个接口ICompute IC ...

  5. Remoting技术使用配置文件示例

    1.创建类库工程RemotableType.dll (提供remotable 类型). RemotableType.cs using System; using System.Collections. ...

  6. .net remoting 技术

    Remoting 编辑 目 录 1简介 2主要元素 3两种通道 4激活方式 5对象定义 6服务器 7客户 8基础补充 9小结 1简介 什么是Remoting,简而言之,我们可以将其看作是一种分布式处理 ...

  7. 基于.net平台remoting、DB2技术的大型分布式HIS系统架构及开发(项目架构师方向)...

    课程链接:http://***/goods.php?id=131 培训定位: 适合于.net方向有一定的工作经验提高用.本次课程涉及到系统架构.DB2.抽象工厂.组件式编程.基于角色和个人的混合授权思 ...

  8. PostSharp的AOP设计在.NET Remoting中的应用

    在.NET Remoting技术中实现用户的验证和授权并不那么容易,尤其是将其宿主在windows service这样的环境中的时候.大部分时候,我们都需要实现自定义的验证方式.具体来说也不是那么复杂 ...

  9. 初识用.NET Remoting来开发分布式应用 (转载)

    初识用.NET Remoting来开发分布式应用 一..NET Remoting简介: .NET Remoting从某种意义上讲是DCOM的替代品.ASP.NET Web服务十分有用,但是这项技术在企 ...

最新文章

  1. Inno Setup 系列之安装、卸载时调用bat
  2. STM32(Cortex-M3)启动过程+IAR中xcl及icf文件详解
  3. SAP FBCJ现金日记帐增强操作手册
  4. 【HNOI2007】紧急疏散
  5. WORD 粘贴代码 不检查语法
  6. 计算机硬件系统一直延用,会计从业资格证考试:会计电算化计算机硬件系统
  7. 【数据结构与算法】图的邻接矩阵表示及其BFS、DFS的Java实现
  8. 面对自然灾害,科技能做什么?
  9. editor.md实现拖拽剪切复制粘贴上传图片,文件插件
  10. 30. 价格区间设置
  11. JZOJ 4.2 C组 打鼹鼠
  12. oracle空间查询
  13. 7216:Minecraft题解
  14. MATLAB读取MIT心电信号
  15. 新库上线 | CnOpenData制造业工商注册企业基础信息数据
  16. linux 的源码怎么查看,查看linux源代码
  17. 大数据外部性案例分析_外部性案例分析
  18. 腾讯地图获取当前定位的经纬度、地址的详细名称和地图上的显示
  19. IJK 使用中遇到的问题
  20. wma转换成mp3格式,wma转mp3快速完成

热门文章

  1. 前端学习(3132):react-hello-react之受控组件
  2. PS教程第十课:像素计算
  3. [vue] 怎么修改vue打包后生成文件路径?
  4. [css] 你知道什么是流体排版吗?说说它的原理是什么?
  5. [css] 检测sass中错误的指令是哪个?
  6. 工作218:页面样式调整
  7. 前端学习(2486):$emit
  8. 前端学习(2226):react之组件
  9. 前端学习(1325):await关键字
  10. 前端学习(905):js执行机制