C# Remoting 简单实现

此处下载源代码(VS2010编译通过)

  http://files.cnblogs.com/files/qqhfeng/%E8%BF%9C%E7%A8%8B%E8%B0%83%E7%94%A8%E6%B5%8B%E8%AF%952.rar

RemotingModel: Talker.cs

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

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

服务器端:是一个控制台,首先要添加对System.Runtime.Remoting的引用,然后添加对RemotingModel的引用

using System;
using System.Collections.Generic;
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)
        {
            //注册通道
            TcpServerChannel channel = new TcpServerChannel("TalkChannel", 8090); //端口随便取
            ChannelServices.RegisterChannel(channel, true);

           //注册远程对象
            RemotingConfiguration.RegisterWellKnownServiceType(
                typeof(Talker),
                "Talker",  

               WellKnownObjectMode.SingleCall);

           Console.ReadLine();
        }
    }
}

客服端:窗体:两个textBox,一个button,设置textBox为多行。上面的textBox为:txtContent,下面的为:txtWord

添加引用(添加方法同上)

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 btnSend_Click(object sender, EventArgs e)
        {
            try
            {
                //操作远程对象
                _talk.Talk(txtWord.Text.Trim());
                txtContent.Text = "发送成功" + txtWord.Text.Trim();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

       private void Form1_Load(object sender, EventArgs e)
        {
            try {
                //注册通道
                TcpClientChannel channel = new TcpClientChannel();
                ChannelServices.RegisterChannel(channel, true);

               //获取远程对象
                _talk=(Talker) Activator.GetObject(typeof(Talker),"TCP://localhost:8090/Talker");
            }
            catch(Exception ex){
                MessageBox.Show(ex.Message);
            }
        }
    }
}
好了,下面看看结果:

注:以上所有操作均在同一台电脑,并且在同一个解决方案执行。

接下来会跟大家分享Remoting在局域网里的使用

时间: 2024-08-05 23:09:25

C# Remoting 简单实现的相关文章

Remoting简单实践

一句话概括 remoting是微软的一种实现在不同的.net应用程序中进行分布式通信的技术 重要概念 原理大致是首先客户端通过remoting通道来获取服务器对象代理,通过序列化与反序列方式实现数据交互 远程对象:服务器端的实现类必须继承MarshalByRefObject,进而实现remoting通信,支持跨程序域的访问 远程对象的激活 主要分为服务器端激活和客户端激活 交互前都需要激活相应的实例,便于调用方法  通道:  主要tcp,http,ipc这几种方式  tcp通过二进制传输,传输效

Remoting 简单配置

1 服务端 <configuration> <system.runtime.remoting> <application> <channels> <channel ref="tcp" port="8086"/>//端口注册成功,telnet可以通 </channels> <service> <wellknown type="a 类名(加命名空间),包含此类的程序集名称

.Net remoting方法实现简单的在线升级(上篇:更新文件)

一.前言:       最近做一个简单的在线升级Demo,使用了微软较早的.Net Remoting技术来练手. 简单的思路就是在服务器配置一个Remoting对象,然后在客户端来执行Remoting对象中的方法. 过程: (1) 读取本地dll文件的名称与版本号,与服务器的进行对比 (2) 确认需要升级的文件名称与版本号并告诉服务器,服务器将其复制到一个临时文件夹并压缩成zip (3) 将服务器的zip下载到本地的临时文件夹,并解压. 定义服务器端为UpdateServer,其配置文件为: <

Venus 是一个简单的、高性能、高并发能力的java 开源Remoting框架

Venus 是一个简单的.高性能.高并发能力的java 开源Remoting框架 wiki地址:http://wiki.hexnova.com/display/Venus/HOME 性能测试:http://wiki.hexnova.com/pages/viewpage.action?pageId=1507358 产品发布日志: http://wiki.hexnova.com/pages/viewrecentblogposts.action?key=Venus 1. 如何服务化 采用接口与实现分离

关于Remoting的一个简单的调用列子

关于Remoting,在.net framework  2.0开始的,到3.5已经集成到WCF中,可一些老的项目还是用到了,现在写一个简单的例子帮助你去改一些比较老的项目. Remoting就是客户端,通过服务器端去访问方法,符合分布式开发.下面将例子. 1.首先定义类库,也就是我们到时候要调用的方法. /// <summary>    /// 允许在支持远程处理的应用程序中跨应用程序域边界的访问对象    /// 必须继承MarshalByRefObject    /// </summ

.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.Con

C# Remoting的一个简单例子

.Net对于远程调用提供了两种方法:Remoting和WebService.WebService现在是如火如荼,特别是有一种比较流行的架构:Winform+WebService(Java..Net),我曾经做过的一个项目就是这样子的,分布式.跨平台.极佳的用户体验,这三者结合起来是不是很诱人?不过,这里我只说Remoting,Remoting具有以下特点:1.Tcp通道的Remoting速度非常快2.虽然是远程的,但是非常接近于本地调用对象3.可以做到保持对象的状态4.没有应用程序限制,可以是控

NET Remoting 最简单示例

NET Remoting 最简单示例 2014-01-21 15:29 10492人阅读 评论(4) 收藏 举报  分类: .NET(6)  版权声明:本文为博主原创文章,未经博主允许不得转载. 学习技术知识一个好的方法是先动手,再深入, 给出一个最简单的Remoting程序示例(C#)如下: Step1:创建类库(DLL)工程RemotingObjects,类Person代码如下: [csharp] view plain copy using System; using System.Coll

.Net remoting方法实现简单的在线升级(下篇:重启exe)

一.前言      上篇运用了.Net Remoting技术解决了本地与服务器版本对比,并下载更新包的过程. 本篇主要是应用Process,来实现重启程序的过程. 情景假设:       Revit2016正加载某dll,其版本为1.0.0.0.服务器的更新dll版本为1.0.0.10. 下载完后,Revit2016关闭,旧dll删除,新dll复制到旧dll的所在路径,重启Revit2016. 二.代码       在上篇最后一段代码的79—80行之前插入如下代码: bgk_Update.Rep