问题:命名空间“System.Runtime.Remoting.Channels”中不存在类型或命名空间名“Tcp”(是否缺少程序集引用?)

解决:项目->添加引用->程序集->选中System.Runtime.Remoting

remmoting:实现进程间通讯,主要是获取远程对象,实际的通讯是通过TCP

实现的流程:

先定义一个继承了MarshalByRefObject 的类,该类是在支持远程处理的应用程序中,允许跨应用程序域边界访问对象

1.定义信道

服务器: TcpServerChannel channels = new TcpServerChannel("TalkChannel", 9000);

TcpServerChannel (string name, int port)

name:信道名称

port:信道监听端口

客户端: TcpClientChannel channel = new TcpClientChannel();

2.注册信道

ChannelServices.RegisterChannel(channel, true);

3.服务器:注册远程对象模型

RemotingConfiguration.RegisterWellKnownServiceType(typeof(Talker), "Talker", WellKnownObjectMode.SingleCall);

typeof(Talker):对象Type

"Talker":对象URI

WellKnownObjectMode.SingleCall:正在被注册的已知对象类型的激活方式 (SingleCall每个传入的消息由新的对象实例提供服务,Singleton每个传入的消息由同一个对象实例提供服务。)

客户端:获取远程对象(Talker)Activator.GetObject(typeof(Talker),"TCP://localhost:9000/Talker");MarshalByRefObject的子类对象

typeof(Talker):希望连接到的已知对象的类型

"TCP://localhost:9000/Talker":已知的URL

具体实现的代码:

MarshalByRefObject的子类

class Talker : MarshalByRefObject{public void SendMsg(string text){System.Console.WriteLine(text);}}

服务器端代码:

class Program{static void Main(string[] args){//注册通道TcpServerChannel channels = new TcpServerChannel("TalkChannel", 9000);ChannelServices.RegisterChannel(channels, true);//注册远程对象RemotingConfiguration.RegisterWellKnownServiceType(typeof(Talker), "Talker", WellKnownObjectMode.SingleCall);Console.ReadLine();}}

客户端代码:客户端是一个winform程序,包含一个button,一个textBox

public partial class Form1 : Form{private Talker talker;public Form1(){InitializeComponent();}private void btnSend_Click(object sender, EventArgs e){try{//操作远程对象talker.SendMsg(txtBoxMsg.Text);MessageBox.Show("发送成功:" + txtBoxMsg.Text);}catch (Exception ex){MessageBox.Show(ex.Message);}}private void Form1_Load(object sender, EventArgs e){//注册通道TcpClientChannel channel = new TcpClientChannel();ChannelServices.RegisterChannel(channel, true);//获取远程对象talker = (Talker)Activator.GetObject(typeof(Talker),"TCP://localhost:9000/Talker");}}

C# Remoting理解相关推荐

  1. web service 和 remoting 有什么区别

    其实现的原理并没有本质的区别,在应用开发层面上有以下区别: 1.Remoting可以灵活的定义其所基于的协议,如果定义为HTTP,则与Web Service就没有什么区别了,一般都喜欢定义为TCP,这 ...

  2. 据lovecherry的一步一步学Remoting序列文章学习.net Remoting日记(2)

    今天学习了服务器端激活和客户端激活的区别!可还是出现了一点点的差错,经过对比得到正确的调用方法,整理如下: 1.服务器端激活,分为两种方式Singleton和SingleCall方式 Server端A ...

  3. Hessian的使用以及理解(转)

    Hessian的使用以及理解 Hessian版本:3.1.5 将包括如下的内容: Hessian的基本使用 Hessian的原理 Hessian和Spring 的结合使用 扩展 简单说来,Hessia ...

  4. Remoting和Webservice有什么区别

    REMOTING和WEBSERVICE有什么区别 其实现的原理并没有本质的区别,在应用开发层面上有以下区别: 1.Remoting可以灵活的定义其所基于的协议,如果定义为HTTP,则与Web Serv ...

  5. Webcast.NET Remoting学习笔记(5)使用配置文件

    使用配置文件 使用配置文件主要有三点好处: 1 简化代码,将配置相关的代码写到配置文件中,程序的逻辑处理更清晰. 2 便于更改配置,项目的配置有可能会产生变化,例如已经注册的通道端口被占用等等,有了配 ...

  6. remoting和webservice的区别

    简要谈一下您对微软.NET 构架下remoting和webservice两项技术的理解以及实际中的应用.(10) 答:WS主要是可利用HTTP,穿透防火墙.而Remoting可以利用TCP/IP,二进 ...

  7. Remoting 与 Webservice 的区别

    其实现的原理并没有本质的区别,在应用开发层面上有以下区别: 1.Remoting可以灵活的定义其所基于的协议,如果定义为HTTP,则与Web Service就没有什么区别了,一般都喜欢定义为TCP,这 ...

  8. .NET Remoting构建分布式数据库查询

    引言 随着传统的数据库.计算机网络和数字通信技术的快速发展,以数据分布存储和分布处理为主要特征的分布式数据库系统的研究和开发越来越受到人们的关注.微软提供了两种解决方案来为用户实现数据服务,即 .NE ...

  9. 【转】浅谈.net remoting 与webservice

    1. .NET Remoting .NET Remoting是微软随.NET推出的一种分布式应用解决方案,被誉为管理应用程序域之间的 RPC 的首选技,它允许不同应用程序域之间进行通信(这里的通信可以 ...

  10. .Net Remoting(应用程序域) - Part.1(转载)

    本文来自:http://www.cnblogs.com/JimmyZhang/archive/2008/07/26/1252183.html   作者:张子阳先生  英文名:Jimmy Zhang   ...

最新文章

  1. NUC972的BSP包的使用
  2. Android --- Session ‘app’: Error Launching activity解决办法
  3. Dubbo的Provider配置
  4. 深度学习笔记4:深度神经网络的正则化
  5. 10个顶级的CSS3代码生成器
  6. 算法设计与分析_算法设计与分析(第2版)第2章分治策略回顾
  7. static在php中,php中static关键字在类中的使用
  8. MTK 驱动开发 (1)---GPIO架构
  9. M - 简单字符串排序
  10. 阿里前 vs 来阿里后,阿里人的真实写照!
  11. 《Java程序性能优化》、让你的Java程序更快、更稳定(PDF篇)
  12. Bi系统 :poli部署
  13. 什么是黑盒测试,和白盒测试的区别有哪些?
  14. 列生成(Column Generation)算法
  15. 解决工商银行网银插件报‘非正常运行的网银工具’问题
  16. SAP发票校验中支付条件中的基准日期缺省值的配置及控制逻辑测试
  17. 动画项目中问题及解决方案(V客学院知识分享)
  18. 如何让机器获得幽默感——Google图学习技术揭秘
  19. mounted钩子函数_vue中created钩子函数与mounted钩子函数的使用区别
  20. python数据集_【Python数据分析实战】divorce数据集

热门文章

  1. Java自学教程二:JavaWeb教程
  2. Apache JMeter使用教程
  3. mysql查找jdbc驱动包_查找已安装的JDBC驱动程序
  4. 【开发神器】自动化测试、用 Apipost!
  5. 服务器wifi模块通讯协议,WiFi模块 TCP/IP协议栈
  6. java pcm to wav_Java音频转换:PCM格式转WAV格式
  7. 面试必考之Java三大特性
  8. xp安全模式下如何修复计算机,xp安全模式下怎么解决蓝屏_xp开机进入安全模式修复蓝屏教程...
  9. 企业微信API群机器人配置
  10. C#版 微信无痕僵尸粉检测工具源码