概述
废话不多说,直接上例子
先上一个自己写的一个用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实现分布式应用简单实例所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复