zoukankan      html  css  js  c++  java
  • .net remoting范例

    1:创建类库:

    using System;

    namespace RemoteHello
    {
     /// <summary>
     /// Hello 的摘要说明。
     /// </summary>

     public class Hello : System.MarshalByRefObject
     {
      public Hello()
      {
       //
       // TODO: 在此处添加构造函数逻辑
       //
       Console.WriteLine("Constructor called");
      }

      ~Hello()
      {
       Console.WriteLine("Destructor called");
      }

      public string Greeting(string name)
      {
       Console.WriteLine("Greeting called");
       return "Hello," + name;
      }
     }
    }

    2::创建一个工程文件,是SERVER端的。

    using System;
    using System.Runtime.Remoting;
    using System.Runtime.Remoting.Channels;
    using System.Runtime.Remoting.Channels.Tcp;

    namespace HelloServer
    {
     /// <summary>
     /// Class1 的摘要说明。
     /// </summary>
     class HS
     {
      /// <summary>
      /// 应用程序的主入口点。
      /// </summary>
      [STAThread]
      static void Main(string[] args)
      {
       //
       // TODO: 在此处添加代码以启动应用程序
       //
       try
       {
        TcpServerChannel channel =new TcpServerChannel(8086);
        ChannelServices.RegisterChannel(channel);
        Type t=typeof(RemoteHello.Hello);   
        RemotingConfiguration.RegisterWellKnownServiceType(t,"hi",WellKnownObjectMode.SingleCall);
        Console.WriteLine("hit to exit");
        Console.ReadLine();
       }
       catch (Exception ex)
       {
        Console.WriteLine(ex.Message);
        Console.WriteLine(ex.Source);
        Console.ReadLine();
       }
      }
     }
    }

    3:创建一个工程文件是client端的:

    using System;
    using System.Runtime.Remoting.Channels;
    using System.Runtime.Remoting.Channels.Tcp;

    namespace HelloClient
    {
     /// <summary>
     /// Class1 的摘要说明。
     /// </summary>
     class HC
     {
      /// <summary>
      /// 应用程序的主入口点。
      /// </summary>
      [STAThread]
      static void Main(string[] args)
      {
       //
       // TODO: 在此处添加代码以启动应用程序
       //
       try
       {
        TcpClientChannel tc=new TcpClientChannel();
        ChannelServices.RegisterChannel(tc);
        RemoteHello.Hello obj = (RemoteHello.Hello)Activator.GetObject(typeof(RemoteHello.Hello),"tcp://10.10.10.111:8086/hi");
        if(obj==null)
        {
         Console.WriteLine("FAILED!");
         return;
        }
        for(int i=0;i<2;i++)
        {
         Console.WriteLine(obj.Greeting("haha"));
         Console.ReadLine();
        }
       }
       catch (Exception ex)
       {
        Console.WriteLine(ex.Message);
        Console.WriteLine(ex.Source);
        Console.ReadLine();
       }   
      }
     }
    }

    3:在编译完以后,先运行server.exe文件,然后再运行client.exe文件,,,这样在MS-DOS下面,就可以看到,client掉用server。。。

    PS:1建立的类库,2,3建立的控制台程序.

    2.3必须引用1的DLL文件

    呵呵。。。完毕。。

  • 相关阅读:
    记swoole数据库连接池消失问题的解决方式
    表格逻辑的几个想法
    Java代码实现热部署
    一个接口代理demo
    thinkphp5 关于跨域的一些坑
    CoSky-Mirror 就像一个镜子放在 Nacos、CoSky 中间,构建一个统一的服务发现平台
    CoSky 高性能 服务注册/发现 & 配置中心
    Govern Service 基于 Redis 的服务治理平台
    Govern EventBus
    mysql中查看视图代码
  • 原文地址:https://www.cnblogs.com/aaa6818162/p/1541013.html
Copyright © 2011-2022 走看看