.Net中Remoting通信机制简单实例

.Net中Remoting通信机制

前言:

本程序例子实现一个简单的Remoting通信案例

  本程序采用语言:c#

  编译工具:vs2013工程文件

  编译环境:.net 4.0

程序模块:

  • Test测试
  • Talker
  • Server端
  • Client端
  • 源代码工程文件下载

Test测试程序截图:

Talker类:

1 public class Talker : MarshalByRefObject
2     {
3         public void Talk(string word)
4         {
5             System.Console.WriteLine(word);
6         }
7
8     }

Server端:

1  //注册通道
2             TcpServerChannel channel = new TcpServerChannel("TalkChannel",8090);
3             ChannelServices.RegisterChannel(channel,true);
4
5             //注册远程对象
6             RemotingConfiguration.RegisterWellKnownServiceType(
7                 typeof(Talker),
8                 "Talker",
9                 WellKnownObjectMode.SingleCall);

Client端:

 1   public partial class Form1 : Form
 2     {
 3         private Talker _talk = null;
 4         public Form1()
 5         {
 6             InitializeComponent();
 7         }
 8
 9         private void btnSend_Click(object sender, EventArgs e)
10         {
11             if (btnSend.Text.Equals("开始"))
12             {
13                 timer1.Enabled = true;
14                 btnSend.Text = "结束";
15             }
16             else
17             {
18                 timer1.Enabled = false;
19                 btnSend.Text = "开始";
20             }
21         }
22
23         private void sendMsg(string msg)
24         {
25             try
26             {
27                 //操作远程对象
28                 _talk.Talk(msg);
29                 string newline = msg + Environment.NewLine;
30                 txtContent.Text = txtContent.Text.Insert(0, newline);
31             }
32             catch (Exception ex)
33             {
34                 MessageBox.Show(ex.Message);
35             }
36         }
37
38         private void Form1_Load(object sender, EventArgs e)
39         {
40             try
41             {
42                 timer1.Interval = 1000;
43                 //注册通道
44                 TcpClientChannel channel = new TcpClientChannel();
45                 ChannelServices.RegisterChannel(channel, true);
46                 //获取远程对象
47                 _talk = (Talker)Activator.GetObject(typeof(Talker), "TCP://localhost:8090/Talker");
48             }
49             catch (Exception ex)
50             {
51                 MessageBox.Show(ex.Message);
52             }
53         }
54
55         private void timer1_Tick(object sender, EventArgs e)
56         {
57             sendMsg(txtWord.Text.Trim());
58         }

源代码工程文件下载:

  源代码工程文件下载 http://files.cnblogs.com/files/JiYF/RemotingSolution.rar

时间: 2024-12-16 03:56:19

.Net中Remoting通信机制简单实例的相关文章

.Net中Remoting通信机制

Remoting通信机制 Remoting介绍 主要元素 通道类型 激活方式 对象定义 Remoting介绍 什么是Remoting,简而言之,我们可以将其看作是一种分布式处理方式. 从微软的产品角度来看,可以说Remoting就是DCOM(分布式组件对象模型,分布式组件对象模式)的一种升级,它改善了很多功能,并极好的融合到.Net平台下.Microsoft .NET Remoting 提供了一种允许对象通过应用程序域与另一对象进行交互的框架.这也正是我们使用Remoting的原因.为什么呢?在

TensorFlow中的通信机制——Rendezvous(一)本地传输

背景 [作者:DeepLearningStack,阿里巴巴算法工程师,开源TensorFlow Contributor] 在TensorFlow源码中我们经常能看到一个奇怪的词--Rendezvous.如果从仔细统计该单词出现的频率和模块,你会发现无论在单机还是分布式,无论在core目录还是contrib目录都存在它的身影,所涉及的模块非常多.Rendezvous是一个法语单词,发音也比较特殊,一般直译为"约会.相会.会和",而在TensorFlow中,Rendezvous是用来完成消

Android中的常见通信机制和Linux中的通信机制

Handler Handler是Android系统中的一种消息传递机制,起作用是应对多线程场景.将A进程的消息传递给B线程,实现异步消息处理.很多情况是将工作线程中需要更新UI的操作消息传递给UI主线程,而实现更新UI操作. 因为工作线程和主线程是共享地址空间,即Handler实例对象mHandler位于线程间共享的内存堆上,工作线程和主线程直接使用该对象,只需要注意多线程的同步问题.工作系统通过mHandler向其成员变量MessageQueue中添加Message,而主线程一直处于loop中

TensorFlow中的通信机制——Rendezvous(二)gRPC传输

背景 [作者:DeepLearningStack,阿里巴巴算法工程师,开源TensorFlow Contributor] 本篇是TensorFlow通信机制系列的第二篇文章,主要梳理使用gRPC网络传输部分模块的结构和源码.如果读者对TensorFlow中Rendezvous部分的基本结构和原理还不是非常了解,那么建议先从这篇文章开始阅读.TensorFlow在最初被开源时还只是个单机的异构训练框架,在迭代到0.8版本开始正式支持多机分布式训练.与其他分布式训练框架不同,Google选用了开源项

Android中AIDL通信机制分析

一.背景 ·1.AIDL出现的原因 在android系统中,每一个程序都是运行在自己的进程中,进程之间无法进行通讯,为了在Android平台,一个进程通常不能访问另一个进程的内存空间,所以要想对话,需要将对象分解成操作系统可以理解的基本单元,并且有序的通过进程边界.通过代码来实现这个数据传输过程是冗长乏味的,Android提供了AIDL工具来处理这项工作,实现IPC(进行间的通信)与J2e中的RMI类似. ·2.绑定service 我看了很多人都博客都没有说到这里,其实我个人感觉AIDL就是一个

VS2008中C#开发webservice简单实例

1.创建工程 文件-> 新建->网站 如下图. 工程建好后,会自动添加如下代码: 1 using System; 2 using System.Linq; 3 using System.Web; 4 using System.Web.Services; 5 using System.Web.Services.Protocols; 6 using System.Xml.Linq; 7 8 [WebService(Namespace = "http://tempuri.org/"

jquery中$.post()方法的简单实例

在jqery中有这样一个方法,$.post()下面就这个方法做一个简单的实例: jQuery.post( url, [data], [callback], [type] ) :使用POST方式来进行异步请求 参数: url (String) : 发送请求的URL地址. data (Map) : (可选) 要发送给服务器的数据,以 Key/value 的键值对形式表示. callback (Function) : (可选) 载入成功时回调函数(只有当Response的返回状态是success才是调

Android中 人脸识别FaceDetector简单实例

Android SDK从1.0版本中(API level 1)就已经集成了简单的人脸识别功能,通过调用FaceDetector 我们可以在Android平台上实现Bitmap多人脸识别(一张图中可以有多个人脸).它查找人脸的原理是:找眼睛.它返回的人脸数据face,通过调用public float eyesDistance (),public void getMidPoint (PointF point),我们可以得到探测到的两眼间距,以及两眼中心点位置(MidPoint).public flo

JAVA项目中公布WebService服务——简单实例

1.在Java项目中公布一个WebService服务: 怎样公布? --JDK1.6中JAX-WS规范定义了怎样公布一个WebService服务. (1)用jdk1.6.0_21以后的版本号公布. (2)与Web服务相关的类,都位于Javax.jws.*包中 @WebService--此注解用在类上指定将此类公布成一个WebService: EndPoint--此类为端点服务类,当中publish()方法用于将一个已经加入了@WebService注解对象绑定到一个地址的port上,用于公布. 2