首先  Remoting 严格来说分为3个部分, 服务端 ,客户端,中间件,中间件是指把要公布的方法和接口写成dll的形式,给客户端和服务端调用。

不说其他的了 ,直接上代码

RemotingModel 中间件 是建立的类库程序

Talker.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace RemotingModel
{
    public class Talker : MarshalByRefObject
    {
        /// <summary>
        /// 说话
        /// </summary>
        /// <param name="word"></param>
        public void Talk(string word)
        {
            System.Console.WriteLine(word);
        }
    }
}

此类中就写了一个方法, 然后要公布出去 用的 MarshalByRefObject

RemotingServer  服务端 是用的控制台程序

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

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

using RemotingModel;

namespace RemotingServer
{
    class Program
    {
        static void Main(string[] args)
        {
            //RemotingConfiguration.Configure(Application.ExecutablePath);
            //注册通道
            TcpServerChannel channel = new TcpServerChannel("TalkChannel", 8090); //端口随便取
            ChannelServices.RegisterChannel(channel, true);

            //注册远程对象
            RemotingConfiguration.RegisterWellKnownServiceType(
                typeof(Talker),
                "Talker",
                WellKnownObjectMode.SingleCall);
            Console.WriteLine("请不要关此程序,3Q");
            Console.ReadLine();
        }
    }
}

RemotingClient 客户端 是winform程序

我的客户端用的是一个窗体

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

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

namespace RemotingClient
{
    public partial class Form1 : Form
    {
        private Talker _talk = null;

public Form1()
        {
            InitializeComponent();
        }

private void Form1_Load(object sender, EventArgs e)
        {
            try
            {
                //注册通道
                TcpClientChannel channel = new TcpClientChannel();
                ChannelServices.RegisterChannel(channel, true);
                //获取远程对象
                _talk = (Talker)Activator.GetObject(typeof(Talker), "TCP://10.4.21.121:8090/Talker");
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

private void btn_Send_Click(object sender, EventArgs e)
        {
            try
            {
                //操作远程对象
                _talk.Talk(txtWord.Text.Trim());
                txtContent.Text = "发送成功" + txtWord.Text.Trim();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
    }
}

上面就是一个简单的remoting 结构的程序做完了,其实很简单的

代码下载 http://download.csdn.net/detail/zuoming120/3696247

做开发很久了 Remoting 一直没有碰过,正好最近的项目上面用,就拿出来给大家看看相关推荐

  1. 我们已经不用 AOP 做日志很久了!

    前言 用户在操作我们系统的过程中,针对一些重要的业务数据进行增删改查的时候,我们希望记录一下用户的操作行为,以便发生问题时能及时的找到依据,这种日志就是业务系统的操作日志. 本篇我们来探讨下常见操作日 ...

  2. HDU 4379 水题,大水,但我WA了很多次,做了很久

    http://blog.csdn.net/diannaok/article/details/7875086?reload 我是看着他的写的,但是有个小错误,在初始化值时,令>L/2中最大的数的初 ...

  3. 推送(Push)做了这么久还是误入“歧途”——MobPush

    在移动操作系统中,App可以实现消息推送(push)的功能.push是能够起到提醒或者唤醒用户的作用的,也是app运营渠道之一,运用得当可以帮助产品运营人员更高效地实现运营目标,相反盲目运用也会让AP ...

  4. 我也不知道怎么回事_刚上场说做php的_女嘉宾把灯全灭了,这位程序员哥哥 其实我觊觎你很久了...

    原标题:这位程序员哥哥 其实我觊觎你很久了 激动人心的周五又来啦 羊(zui)驼(mei)小编闪亮出场 请自觉在评论区 燥起来 分别两周 亲爱的猿猿 有米有想我丫 想我的请敲1 不想的请敲2 哼哼 ( ...

  5. PHP做闹钟APP,私藏很久的4款效率APP,一个比一个好用,30万网友推荐

    原标题:私藏很久的4款效率APP,一个比一个好用,30万网友推荐 平时学习工作的过程中,怎么才可以敢为人先,快人一步?我想你需要几款有趣又高效的APP来帮你,今天给大家分享4款效率APP,帮助你更好地 ...

  6. 虚拟光驱的开发者斟酌了很久

    在给这篇文章起标题的时候,虚拟光驱的开发者斟酌了很久,因为虚拟光驱的开发者个人是反对使用".NET程序员"."C++程序员"或"PHP程序员" ...

  7. 为什么在 Google Play 发布应用很久了下载量却很少?

    很多应用发布了很久依然搜索不到,大家知道发布到 Google Play 之后有一个月的推荐时期,但是如果应用的需求量本身不是很大或者 ASO 做的太差也不会被搜索到,关注我的应该都是个人开发者,大多数 ...

  8. 求建议:二本计算机专业,考研还是就业做开发?

    安老师好: 我是一个大连某二本院校的在读生,专业是计算机+日语强化.上大学以来一直关注着您的公众号,读了很多您的文章,学到很多东西,也受到过您的鼓舞,随您一同成长进步. 目前我已是大三下,站在第二个人 ...

  9. 【转载】一个硕士程序员的求婚日记——做开发的不是木头人!

    纪念3月6日:求婚时单腿下跪 我的膝盖青了一块! 七年,  或许小学毕业,步入初中:  或许从本科到硕士,步入社会:  或许从小工到专家,步入事业高峰:  或许,或许,还有更多!  我们在一起,其实已 ...

最新文章

  1. windows pxe 安装linux,菜鸟学Linux 第103篇笔记 pxe自动化安装linux
  2. python的优缺点有哪些-Python语言的优缺点有哪些
  3. fluentftp 积极拒绝_【新时代文明实践】光明街道光大社区开展“光盘行动 拒绝浪费 从我做起”新时代文明实践活动...
  4. obj: object是什么意思_面试官问你JavaScript基本类型时他想知道什么?
  5. 苹果菠萝笔html5游戏在线玩,苹果菠萝笔游戏
  6. btree索引和hash索引的区别(待更新)
  7. 【Ubuntu】ubuntu系统下python3和python2环境自由切换
  8. 2亿用户背后的Flutter应用框架Fish Redux
  9. java算法提高求最大值_藍橋杯 算法提高 求最大值
  10. 最适合说故事的插画素材,应用到UI设计中,感情线有了!
  11. Python序列基本操作(二)
  12. 七日Python之路--第十一天
  13. 人生值得珍藏的80句话
  14. javascript笔记——图片大小检测
  15. 百度关键词快排虚拟发包程序-SEO快速排名系统
  16. php连接mysql MariaDB_PHP+MariaDB数据库操作基本技巧
  17. 做在线交易你必须知道的关于支付的知识
  18. 她学术造假导致导师自杀,后将这段学术经历出书贩卖,一年收入上百万...
  19. 一文拿捏:正则表达式
  20. Nacos服务端ip地址修改

热门文章

  1. 隐藏Windows Live Messenger到系统图标栏
  2. 卡巴斯基许可Key需求登记表
  3. C++中不能声明为虚函数的有哪些函数
  4. Detour hook库x64编译
  5. Android7.1取消wifi图标叉号
  6. Android修改kernel logo和开机动画(android)
  7. linux线程退出正确姿势demo
  8. android之普通蓝牙通信
  9. 远程桌面无法启动Matlab的解决方案
  10. PDF转换为其他格式的方法