• Remoting 我的练习题


    Remoting(简单的测试小程序)

    1、添加一个类库(IRemoting),添加一个接口类(IStudent.cs),有一个方法 (Void Ishow)。

    2、添加一个应用程序窗口(RemotingServices)。

    1、添加引用(.net-system.Runtime-Remoting)(项目—IRemoting[之前建的接口类])

    2、添加一个Student类,导入命名空间(using Iremoting)继承 MarshalByRefObject和IStudent(接口),实现接口,并在该类中写需要执行的语句。

    例:   int Isum = 0;
            public void Ishow()
            {
                for (int i = 0; i < 10; i++)
                {
                    Isum += i;
                }
                Console.WriteLine(Isum);
            }

    3、在主程序中来进行主要操作(Program)

        3.1 导入名称空间

          using System.Runtime.Remoting.Channels;
          using System.Runtime.Remoting;
          using System.Runtime.Remoting.Channels.Http;
          using System.Runtime.Remoting.Channels.Tcp;(Http、Tcp二者可选一)

       3.2 
            /服务器端

              static void Main(string[] args)
              {
                //创建通道
                TcpChannel tcp = new TcpChannel(3000);
                //注册通道
                ChannelServices.RegisterChannel(tcp,false);
                //注册浏览器对象
                RemotingConfiguration.RegisterWellKnownServiceType(typeof(Student),"Student", WellKnownObjectMode.Singleton);
                Console.ReadKey();
            }

    4、添加一个客户端应用程序

        1、添加引用(.net-system.Runtime-Remoting)(项目—IRemoting[之前建的接口类])

       2、导入命名空间

          using System.Runtime.Remoting.Channels;
          using System.Runtime.Remoting;
          using System.Runtime.Remoting.Channels.Http;
          using System.Runtime.Remoting.Channels.Tcp;(Http、Tcp二者可选一)

        3、具体代码实行

           //创建通道
               TcpChannel tcp = new TcpChannel();
                //注册通道
               ChannelServices.RegisterChannel(tcp, false);
                //注册客户端对象
               IStudent stu=    Activator.GetObject(typeof(IStudent), "TCP://10.85.189.35:3000/Student") as IStudent;
               stu.Ishow();

         PS:远程对象激活方式有两种,以上用的是服务器端激活方式(RegisterWellKnownServiceType),客户端激活方式(RegisterActivatedServiceType),服务器端激活方式又叫WellKnow,长翻译为知名对象,服务器激活方式又可分为两种,(SingleTon和singleCall),区别,前者为有状态模式,为每个可恶端建立同一个对象,不管它们是同一个客户端还是其他客户端,后者为无状态模式,当客户端调用远程的方法时Remoting会为客户端建立一个远程对象实例。


    服务器端激活模式

    这里可以不需要引用接口

    1、引用服务端(项目—RemotingServices)

    2、将           IStudent stu=    Activator.GetObject(typeof(IStudent), "TCP://10.85.189.35:3000/Student") as IStudent;
               stu.Ishow();

    这串代码更改为: 

                RemotingConfiguration.RegisterWellKnownClientType(typeof(Student), "TCP://10.85.189.35:3000/Student");
                Student stu = new Student();

  • 相关阅读:
    [1041] XX easy problem
    [1027] 火焰纹章
    省赛选拔赛解题报告
    二维DP hdu 1421 搬寝室问题
    最长斐波那契子序列选取(离散化 + 二分 + DP)
    两个有序链表合成一个有序链表
    CodeForce 608B Hamming Distance Sum
    CodeForce 607A&&608C Chain Reaction
    (DP)最大价值事件序列选取
    面向对象>>>抽象类>>>鸭子类型>>>封装
  • 原文地址:https://www.cnblogs.com/ZhangYuLIng/p/3838647.html
Copyright © 2020-2023  润新知