我是靠谱客的博主 傻傻芒果,最近开发中收集的这篇文章主要介绍Remoting实现分布式应用简单实例,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

废话不多说,直接上例子

先上一个自己写的一个用Remoting实现的分布式应用小例子(这里面没有考虑通道加密等等的什么高技术,只是基础)

本例子有

一个解决方案(RemoteSampleProject) ,

4个项目分别是:

       格式说明:项目名称(项目类型|输出类型)

            具体:IRemoteSample(接口|类库),

                     RemoteSample(实现类|类库),

                     RemoteSampleServer(服务端|控制台应用程序),

                     RemoteSampleClient(客户端|控制台应用程序)

 

先新建一个空的解决方案(打开vs——文件——新建——项目——其他项目类型——vistual studio解决方案——空白解决方案——(名称改为RemoteSampleProject))

4个项目的具体实现:

            ①:接口(右击解决方案——添加——新建项目——vistual C#——类库——(名字改为IRemoteSample))

      默认的类是Class1.cs文件,重命名改为IRemoteObject,或者删掉class1.cs文件,新建一个类为IRemoteObject

     IRemoteObject中的代码如下,包含一个求两个值的和方法

namespace IRemoteSample
{
    public interface IRemoteObject
    {
        int Sum(int a,int b);
    }
}

            ②:实现接口类(右击解决方案——添加——新建项目——vistual C#——类库——(名字改为RemoteSample))

      默认的类是Class1.cs文件,重命名改为RemoteSample,或者删掉class1.cs文件,新建一个类为RemoteSample

                 添加①接口类库的dll(右击RemoteSample下引用——添加引用——项目——IRemoteSample)

         代码如下:

    

using IRemoteSample;

namespace RemoteSample
{
    public class RemoteObject : System.MarshalByRefObject,IRemoteObject
    {
        public RemoteObject()
        {
            System.Console.WriteLine("New Referance Added");
        }

        public int Sum(int a,int b)
        {
            return a + b;
        }
    }
}

③:服务端(右击解决方案——添加——新建项目——vistual C#——类库——(名字改为RemoteSampleServer),右击RemoteSampleServer项目——属性——输出类型改为控制台应用程序)

       默认的类是Class1.cs文件,重命名改为RemoteServer,或者删掉class1.cs文件,新建一个类为RemoteServer

                  添加System.Runtime.Remoting引用(右击RemoteSampleServer下引用——添加引用——.NET——找到System.Runtime.Remoting——确定)

       添加①接口类库的dll(右击RemoteSampleServer下引用——添加引用——项目——IRemoteSample)

       添加②实现接口类库的dll(右击RemoteSampleServer下引用——添加引用——项目——RemoteSample)

       代码如下:

      

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

namespace RemoteSampleServer
{
    public class RemoteServer
    {
        public static void Main(String[] args)
        {
            TcpServerChannel channel = new TcpServerChannel(8002);
            ChannelServices.RegisterChannel(channel);
            RemotingConfiguration.RegisterWellKnownServiceType(typeof(RemoteObject),"ReMoteObject",WellKnownObjectMode.SingleCall);
            System.Console.WriteLine("Server Is Running...");
            System.Console.ReadLine();
        }
    }
}

      

③:客户端(右击解决方案——添加——新建项目——vistual C#——类库——(名字改为RemoteSampleClient),右击RemoteSampleClient项目——属性——输出类型改为控制台应用程序)

       默认的类是Class1.cs文件,重命名改为RemoteClient,或者删掉class1.cs文件,新建一个类为RemoteClient

                  添加System.Runtime.Remoting引用(右击RemoteSampleServer下引用——添加引用——.NET——找到System.Runtime.Remoting——确定)

       添加①接口类库的dll(右击RemoteSampleServer下引用——添加引用——项目——IRemoteSample)

       代码如下:

 

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


namespace RemoteSampleClient
{
    public class RemoteClient
    {
        public static void Main(string[] args)
        {
            ChannelServices.RegisterChannel(new TcpClientChannel());
            IRemoteObject RemoteObject = (IRemoteObject)Activator.GetObject(typeof(IRemoteObject), "tcp://localhost:8002/RemoteObject");
            Console.WriteLine("1+3="+RemoteObject.Sum(1,3).ToString());
            Console.WriteLine();
        }
    }
}

    好了,代码全部弄完(图片弄不了,我就不上图了)

    运行项目查看结果:

             ①右击解决方案——属性——选择“当前选择”——确定

             ②左击(即单击)RemoteSampleServer,按ctrl+F5(执行不调试)

             ③左击(即单击)RemoteSampleClient,按ctrl+F5

             结果出来了吧

            总结:Remoting 服务端步骤:新建通道并设置端口——注册通道——激活通道(有点像我们到xx网站注册会员,注册填写信息后要到邮箱激活才能用),即抛出信息,等待客户端调用

        Remoting 客户端步骤:new一个通道实例——注册该通道实例——通过System.Activator.GetObject访问服务端即可获得服务端抛出信息,注意服务端抛出的是实现类,客户端可以直接定义接口来      

        接受,有点像IRemoteObject RemoteObject=new RemoteObject();

   上面的例子只是一个最基本的Remoting实例,如有错误请跟我说声,我也是初学者

         等Spring.net,Ibatis,Remoting上完后我将上一个Spring.net+Ibatis+Remoting+.net三层架构实现真正分布式应用

            

 

 

            

 

转载于:https://www.cnblogs.com/wangjinbo/p/Remoting.html

最后

以上就是傻傻芒果为你收集整理的Remoting实现分布式应用简单实例的全部内容,希望文章能够帮你解决Remoting实现分布式应用简单实例所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(53)

评论列表共有 0 条评论

立即
投稿
返回
顶部