初探remoting双向通信(一)

本文通过一个简单的示例介绍.NET Remoting的双向通信,探讨了客户端如何获取服务器端对象的引用,以及调用的方法是在哪一侧执行。同时,解释了.NET Remoting在跨应用程序域通信中的作用,讨论了其相对于直接引用DLL的优势,尤其是当涉及事件和委托时的潜力。

 

   我始终认为,在项目中边学边用才能将某项技术真正掌握,才能真正理解。最近做了个项目,简单介绍下:主要用Winform,内嵌有百度和谷歌2种类型的地图,此为服务器端。客户端是由另外一家公司做的一个板子,通俗点说就是GSM+GPS,可以利用TCP实时的给地图上传各种信息。客户端是安装的每辆行驶在高速公路的车辆上的,以此实现对高速公路安全的预警和监控。现在项目第一版已经差不多了,要去给客户安装软件。可问题来了,值班室可能有5-8个人要使用软件,而且其中一个还要安装在大屏幕上。呢就必须让这几个软件同步执行,当一个车辆上传坐标时,应该同时出现在8个机子上才对,当有一个机子的值班人员需要在地图上标记一个预警信息时,其他7个机子也应该同步更新信息才对。为此,我就开始了我的Remoting学习之路。

一、从一个小例子开始

    我想这种方式是现今大多数程序员最喜欢的方式了。“只要有DEMO,就别跟我说技术,是不?”哈哈,都是百度程序员。好了我就用百度程序员的方式开始,下面用某位仁兄的例子开始,这也是我网上搜的:

1.0定义对象

namespace RemoteSample
{
public class RemoteObject : System.MarshalByRefObject
{
    public RemoteObject()
   {
         System.Console.WriteLine("我被构造了!");
   }
   public int sum(int a, int b)
  {
    return a + b;
  }
}
}

 

将其编译为一个lib文件:csc /t:library RemoteObjec.cs


2.0服务器端

using System;
using System.Runtime;
using System.Runtime.Remoting;
using System.Runtime.Remoting.Channels;
using System.Runtime.Remoting.Channels.Tcp;
using RemoteSample;
namespace RemoteSampleServer
{
public class RemoteServer
{
  public static void Main(String[] args)
{
       TcpServerChannel channel =new TcpServerChannel(6666);
       ChannelServices.RegisterChannel(channel);
       RemotingConfiguration.RegisterWellKnownServiceType(typeof(RemoteObject),
            "
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值