.NET Remoting 配置文件方式

  • 前言
  • 远程对象
  • 服务端
  • 客户端
  • 运行结果
  • 一直不成功的原因

前言

第一次接触remoting,尝试了使用代码进行注册通道、注册远程对象、获取远程对象之后,尝试用配置文件方式完成相同的操作,万万没想到,一直不成功,而原因竟然是……
气死我了,上才(dai)艺(ma)

远程对象

创建了一个空白解决方案,再新建了三个项目,这里是一个类库,用于存放远程对象
创建了一个名为RemoteObj的类,代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;namespace RemoteObject
{public class RemoteObj:MarshalByRefObject{public RemoteObj(){Console.WriteLine("RemoteObj构造函数被调用");}public string Hello(){Console.WriteLine("Hello Server!");return "Hello,Client!";}}
}

服务端

这里是一个控制台应用程序,再在里面新建一个应用程序配置文件,也就是App.config
记得把远程对象这个类库添加引用到服务端哦!
Program.cs代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.Remoting;namespace Server
{class Program{static void Main(string[] args){RemotingConfiguration.Configure("Server.exe.config", false);Console.ReadKey();}}
}

App.config配置文件如下:

<?xml version="1.0" encoding="utf-8" ?>
<configuration><system.runtime.remoting><application><service><wellknown mode="SingleCall" type="RemoteObject.RemoteObj,RemoteObject" objectUri="RemoteObj"/></service><channels><channel ref="tcp" port="8090"/></channels></application></system.runtime.remoting>
</configuration>

客户端

这里也是一个控制台应用程序,再在里面新建一个应用程序配置文件,也就是App.config
记得也要把远程对象这个类库添加引用到服务端哦!
Program.cs代码如下:

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 RemoteObject;namespace Client
{class Program{static void Main(string[] args){try{RemotingConfiguration.Configure("Client.exe.config", false);RemoteObj obj = new RemoteObj();Console.WriteLine(obj.Hello());}catch (Exception ex){Console.WriteLine(ex.Message);}Console.ReadKey();}}
}

App.config配置文件如下:

<?xml version="1.0" encoding="utf-8" ?>
<configuration><system.runtime.remoting><application ><client><wellknown type="RemoteObject.RemoteObj,RemoteObject" url="tcp://localhost:8090/RemoteObj"/></client></application></system.runtime.remoting>
</configuration>

运行结果

一直不成功的原因

主要是因为配置文件中的wellknown,所谓的知名对象

<wellknown type=“RemoteObject.RemoteObj,RemoteObject” url=“tcp://localhost:8090/RemoteObj”/>

在wellknown中,type的组成是 命名空间.实现类名称,程序集名称,而url中最后的名称也是实现类名称
多唠叨一下……
命名空间,就是远程对象里的那个 namespace后面,就是命名空间,本文中就是RemoteObject。
实现类名称,就是命名空间里的class后面,就是实现类名称,本文中就是RemoteObj。
程序集名称,就是生成dll后的那个名称,再啥都没改的情况下,基本就是跟命名空间、项目名称都是一样的,本文中就是RemoteObject。

另外,贴一下学习来源~

.NET Remoting 配置文件方式相关推荐

  1. mysql多实例(多个配置文件方式)

    CleverCode最近在研究MySQL的多实例,发现有两种方式:           第一种是使用多个配置文件启动不同的进程来实现多实例.这种方式的优势逻辑简单,配置简单,缺点是管理起来不太方便. ...

  2. spring xml配置文件方式和注解方式的优缺点

    xml配置文件方式优点: 1.降低耦合,使容易扩展. 2.对象之间的关系一目了然. 3.xml配置文件比注解功能齐全. xml配置文件方式缺点: 1.配置文件配置工作量相对注解要打. 注解方式优点: ...

  3. python写日志文件_Python logging日志模块 配置文件方式

    在一些微服务或web服务中我们难免需要日志功能,用来记录一些用户的登录记录,操作记录,以及一些程序的崩溃定位,执行访问定位等等; Python内置 非常强大的日志模块 ==> logging 今 ...

  4. 多个数据文件 mysql_mysql多实例(多个配置文件方式)

    CleverCode最近在研究mysql的多实例,发现有两种方式: 第一种是使用多个配置文件启动不同的进程来实现多实例.这种方式的优势逻辑简单,配置简单,缺点是管理起来不太方便. 第二种是通过官方自带 ...

  5. python的cfg是什么模块_python操作cfg配置文件方式

    *.cfg文件一般是程序运行的配置文件,python为读写常见配置文件提供了一个ConfigParser模块,所以在python中解析配置文件相当简单,下面就举例说明一下具体的操作方法. 写文件代码: ...

  6. python中cfg_python操作cfg配置文件方式

    *.cfg文件一般是程序运行的配置文件,python为读写常见配置文件提供了一个ConfigParser模块,所以在python中解析配置文件相当简单,下面就举例说明一下具体的操作方法. 写文件代码: ...

  7. bin文件对比_网罗几种中Python配置文件方式,总有一款适合你

    网罗几种中Python配置文件方式,总有一款适合你 提起Python的的配置文件,估计你去问10个人,每个人给你的答案多多少少都不一样,原因就是轮子太多了,并没有一个足够好到让大家普遍都接收的,所以在 ...

  8. mysql+xml+注释,springboot整合mybatis完整示例, mapper注解方式和xml配置文件方式实现(我们要优雅地编程)...

    一.注解方式 pom org.mybatis.spring.boot mybatis-spring-boot-starter 2.0.0 mysql mysql-connector-java org. ...

  9. 联想服务器asp配置文件,.NET Core读取配置文件方式详细总结

    基于.NET Core的跨平台开发,配置文件与之前.NET Framework采用xml的config文件不同,目前主要是采用json文件键值对配置方式读取. 参考网上相关资料总结如下: 一. 引入扩 ...

  10. Java中加载配置文件方式的总结

    当需要在Java中加载配置文件的时候,有几个选项提供选择: ·        File ·        Class.getResourceAsStream ·        Class.getCla ...

最新文章

  1. 用 jQuery Masonry 插件创建瀑布流式的页面(转)
  2. springMVC注解@initbinder日期类型的属性自动转换
  3. 009-Joran配置框架
  4. pkcs#11和Cryptoki的介绍
  5. java获取当月有几天_腾讯程序员裸辞3个月,转行去送外卖,曝出当月收入网友:又骗我去送外卖...
  6. 前端性能优化的七大手段
  7. (转载)Hadoop常用SDK系列五 TotalOrderPartitioner
  8. Bailian4071 查找出现了k次的字符【字符串】
  9. docker 命令2
  10. ORACLE TRUNC()函数
  11. PHP动态网页设计与制作案例教程pdf
  12. 计算机学院少女节条幅,女生节条幅大战又打响了!哪个高校条幅标语最撩人 网友酸了...
  13. 读书笔记_打开量化投资的黑箱02
  14. 电子元器件图片、名称、符号图形对照
  15. 5.3 上兴远程控制
  16. 浅谈内存分配方式以及堆和栈的区别
  17. 手机端用云服务器文件在哪里设置,如何使用FolderSync在安卓手机上同步文件夹到坚果云? | 坚果云帮助中心...
  18. 微信双开/微信多开 程序
  19. 消息队列相关使用方式
  20. Pythont打开 txt 格式的文件

热门文章

  1. 接口测试apipost
  2. 订单页面添加收货地址html,添加收货地址展示
  3. 细胞自动机_神经细胞自动机用于艺术娱乐
  4. 实验:进程调度算法(C语言)
  5. 阿里云语音合成1.0版
  6. 禁忌搜索算法求解 TSP 问题的代码示例
  7. 基于ICD-10诊断编码的慢性病并发症聚类算法
  8. python下载安装教程-Python下载并安装图形教程[超级详细]
  9. 快压、360压缩、WinRAR关于打开快压通过超高压缩比压缩后的文件不兼容的问题...
  10. STM3库文件 hal_uart.c的使用