初识Remoting(1)

来源:互联网 发布:手机淘宝怎么修改折扣 编辑:程序博客网 时间:2024/06/14 20:32

1、什么是.Net Remoting

定义:.Net remoting 是简化网络通讯的技术,底层仍然是TCP等东西

remoting要添加对System.Runtime.Remoting的引用

.net Remoting中走的是二进制数据,因此必须一个描述服务端方法的接口类库。

2、简单使用

1、新建接口项目,定义服务接口。

注意:remoting要添加对System.Runtime.Remoting的引用

2、新建服务器端项目(控制台的,或者WinForm,或者Windows服务等)

定义实现服务接口的类,还要继承继承自MarshalByRefObject类

服务器启动时调用

            //注册通道,通过TCP的9999端口对外提供服务

            TcpChannel tcpChannel = new TcpChannel(9999);

            ChannelServices.RegisterChannel(tcpChannel);

            //注册服务:第一个参数为服务的实现类,第二个参数为父母的名字。

            RemotingConfiguration.RegisterWellKnownServiceType(typeof(TestServiceImpl),"test", WellKnownObjectMode.Singleton);

注册服务。如果控制台程序,控制不要让程序退出,

            //主要目的是不要让服务器退出

            while (true)

            {

                string s = Console.ReadLine();

                if (s == "quit")

                {

                    return;

                }

            }

3、客户端:新建客户端项目,引用服务接口

            TcpChannel tcpChannel = new TcpChannel();

            ChannelServices.RegisterChannel(tcpChannel, false);

            ITestService test = (ITestService)Activator.GetObject(typeof(ITestService), "tcp://127.0.0.1:9999/test");//第一个参数为服务实现的接口,第二个参数为服务的地址:最后一部分是服务在服务器端RegisterWellKnownServiceType时第二个参数的名字

然后就可以调用服务端方法了。

因为.net remoting或者普通SocKet可以走8888,9999。…,不能走80,因为80已经被web服务器占用.基于安全考虑,也尽量不要再防火墙上开新的端口 .我们需要一种走80端口的通讯方式,这个程序就要运行在IIS上.

自己用ashx来做一个所谓的WebService,比较麻烦,请求的时候需要按照协议来拼请求报文,处理请求的时候也要从QueryString中取参数.如果在不知道服务器端要求的报文格式(method=getweather&city=”北京”),那么就无法正确连接

原创粉丝点击