1、服务器端使用配置文件

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <system.runtime.remoting>
    <application>
      <service>
        <wellknown mode="Singleton" type="Service.Singer,Service" objectUri="Singer" ></wellknown>
      </service>

<channels>
        <channel ref="tcp" port="8888">
        </channel>
      </channels>
     
     
    </application>
  </system.runtime.remoting>
</configuration>

2、服务端 Host

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.Remoting.Channels.Tcp;
using System.Runtime.Remoting.Channels;
using System.Runtime.Remoting;
using Service;

namespace ServerHost
{
    class Program
    {
        static void Main(string[] args)
        {
            Test2();
        }

private static void Test1()
        {
            //创建一个通道用来公布对外的服务
            TcpChannel channel = new TcpChannel(8888);
            //将tcp通道通过通道服务进行注册,这里的false只的是不使用iis的安全机制
            ChannelServices.RegisterChannel(channel, false);

//通过远程配置对象将要公布的对象的进行公布,包括类型uri
            RemotingConfiguration.RegisterWellKnownServiceType(typeof(Singer), "Singer", WellKnownObjectMode.Singleton);

Console.Read();
        }

private static void Test2()
        {
            RemotingConfiguration.Configure("ServerHost.exe.config");
            Console.Read();
        }
    }
}

3 客户端配置文件

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <system.runtime.remoting>
    <application>
      <client>
        <wellknown type="Service.Singer,Service" url="tcp://localhost:8888/singer"></wellknown>
      </client> 
    </application>
   
  </system.runtime.remoting>
</configuration>

4 客户端调用代码

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 Service;
using System.Runtime.Remoting;

namespace RemotingClientTest
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

private void simpleButton1_Click(object sender, EventArgs e)
        {
            Test2();
        }

private void Test1()
        {
            //这里使用Activitor对象来创建远程对象的引用
            Singer singer = (Singer)Activator.GetObject(typeof(Singer), "tcp://localhost:8888/Singer");
            //调用远程对象的引用的方法
            string content = singer.Sing("haha");
            MessageBox.Show(content);
        }

private void Test2()
        {
            RemotingConfiguration.Configure("RemotingClientTest.exe.config");
            Singer singer = new Singer();
            MessageBox.Show(singer.Sing("test "));
        }

5、可以将被远程调用的对象封装成为接口,这样服务器端host不变但是client只能使用Activator类获得接口类了

//server接口

namespace Service
{
    public interface ISinger
    {
        string Sing(string str);
    }
}

//client

private void Test3()
        {
            //这里使用Activitor对象来创建远程对象的引用
            ISinger singer = (ISinger)Activator.GetObject(typeof(ISinger), "tcp://localhost:8888/Singer");
            //调用远程对象的引用的方法
            string content = singer.Sing("haha");
            MessageBox.Show(content);
        }

}
}

转载于:https://www.cnblogs.com/feidaochuanqing/archive/2013/03/03/2941162.html

Remoting例子-使用配置文件相关推荐

  1. .NET Remoting Basic(6)-配置文件

    除了以硬编码的形式来注册对象,也可以以配置文件的方式来注册,以便增加灵活性 1.服务器端配置文件 其中以system.runtime.remoting 为配置节点 配置了信道和注册对象,看起来非常的容 ...

  2. Remoting技术使用配置文件示例

    1.创建类库工程RemotableType.dll (提供remotable 类型). RemotableType.cs using System; using System.Collections. ...

  3. remoting例子

    读文章:.NET Remoting 最简单示例 转载于:https://www.cnblogs.com/Tpf386/p/7244448.html

  4. 远程处理Remoting

    日程 ?应用程序域 ?Remoting和原理 ?编程式和管理式配置实例 用应用程序域 操作系统和运行库环境通常会在应用程序间提供某种形式的隔离.例如,Microsoft Windows 使用进程来隔离 ...

  5. WCF分布式开发必备知识(2):.Net Remoting

    上一节我们学习了网络分布式编程中的MSMQ消息队列技术.本节我们将学习分布式编程的另外一个重要的技术.Net Remoting,文章的结构还是先讨论基本概念,再来探讨具体的技术实现,希望能和大家一起交 ...

  6. Remoting 配置格式说明(转)

    使用配置文件的好处是什么?很简单,他可以简化代码,可以随时更改,通道,端口,URL的设置不需要重新编译就可以运行.所以在实际项目中经常采用这种方式. 怎么写一个服务器端的配置文件? 下面举个例子: & ...

  7. 使用.NET Remoting开发分布式应用——基于租约的生存期(转载)

    使用.NET Remoting开发分布式应用--基于租约的生存期 一.概述 知名类型的SingleCall对象可以在客户程序的方法调用之后被垃圾收集器清理掉,因为它没有保持状态,属于无状态的.而客户激 ...

  8. ini配置文件的读取

    .ini 文件是Initialization File的缩写,即初始化文件.是windows的系统配置文件所采用的存储格式,统管windows的各项配置,一般用户就用windows提供的各项图形化管理 ...

  9. log4j配置文件详解---转

    使用步骤注意: 1. 从http://logging.apache.org/log4j/1.2/ 下载文件 2. 在src目录下加入log4j.properties,将jar包放入build -pat ...

  10. Log4j配置文件以及配置方法

    Log4J的配置文件(Configuration File)就是用来设置记录器的级别.存放器和布局的,它可接key=value格式的设置或xml格式的设置信息.通过配置,可以创建出Log4J的运行环境 ...

最新文章

  1. 【Python基础】11、文本处理与IO深入理解
  2. ID--HANDLE--HWND三者之间的互相转换(转)
  3. pat1038. Recover the Smallest Number (30)
  4. C语言学习之输入10个数,输出其中最大的一个数。
  5. python字典编码_python中包含UTF-8编码中文的列表或字典的输出
  6. CAS去掉HTTPS认证
  7. [Leedcode][JAVA][第876题][快慢指针]
  8. eoLinker-AMS接口管理系统
  9. c语言计算分段函数_Rust能够取代C语言吗?
  10. E. 2-3-4 Tree
  11. VMware HA实战攻略之一软硬件环境准备
  12. Python自然语言处理学习笔记(30):4.2 序列
  13. jquery 文档就绪
  14. 咸鱼笔记:《实用软件工程》第一、二章课后简答题及参考答案
  15. viso 2013 如何增加连接点【画多条直线】
  16. 《精通软件性能测试与LoadRunner最佳实战》—第2章2.9节运行结果分析
  17. 测试属性4 –准确性
  18. 第11章 角色页的删除、批量删除
  19. android 统一推送平台,工信部实验室成立安卓统一推送联盟:推送服务将实现统一...
  20. python 获取当前目录 上一级目录 上上一级目录

热门文章

  1. 让你变懒的 Android Studio Live Templates
  2. 你若不离不弃,我必拼尽全力!
  3. 学考计算机删除键是什么字母,考计算机的童鞋注意啦~计算机基础题答案~
  4. easypoi中excel注解开关_easypoi: 入,Word模板导出,通过简单的注解和模板 语言(熟悉的表达式语法),完成以前复杂的写法...
  5. potplayer如何添加m3u直播源_拼多多个人直播流量怎么来?直播如何添加个人商品...
  6. 对Python中列表和数组的赋值,浅拷贝和深拷贝的实例讲解
  7. RESTful风格编程
  8. [tldk][dpdk][dev] TLDK--基于dpdk的用户态协议栈传输层组件简单调研
  9. 前端程序员也需要知道进程和线程
  10. 使用C语言操作InfluxDB