.NET Remoting 配置文件方式
.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 配置文件方式相关推荐
- mysql多实例(多个配置文件方式)
CleverCode最近在研究MySQL的多实例,发现有两种方式: 第一种是使用多个配置文件启动不同的进程来实现多实例.这种方式的优势逻辑简单,配置简单,缺点是管理起来不太方便. ...
- spring xml配置文件方式和注解方式的优缺点
xml配置文件方式优点: 1.降低耦合,使容易扩展. 2.对象之间的关系一目了然. 3.xml配置文件比注解功能齐全. xml配置文件方式缺点: 1.配置文件配置工作量相对注解要打. 注解方式优点: ...
- python写日志文件_Python logging日志模块 配置文件方式
在一些微服务或web服务中我们难免需要日志功能,用来记录一些用户的登录记录,操作记录,以及一些程序的崩溃定位,执行访问定位等等; Python内置 非常强大的日志模块 ==> logging 今 ...
- 多个数据文件 mysql_mysql多实例(多个配置文件方式)
CleverCode最近在研究mysql的多实例,发现有两种方式: 第一种是使用多个配置文件启动不同的进程来实现多实例.这种方式的优势逻辑简单,配置简单,缺点是管理起来不太方便. 第二种是通过官方自带 ...
- python的cfg是什么模块_python操作cfg配置文件方式
*.cfg文件一般是程序运行的配置文件,python为读写常见配置文件提供了一个ConfigParser模块,所以在python中解析配置文件相当简单,下面就举例说明一下具体的操作方法. 写文件代码: ...
- python中cfg_python操作cfg配置文件方式
*.cfg文件一般是程序运行的配置文件,python为读写常见配置文件提供了一个ConfigParser模块,所以在python中解析配置文件相当简单,下面就举例说明一下具体的操作方法. 写文件代码: ...
- bin文件对比_网罗几种中Python配置文件方式,总有一款适合你
网罗几种中Python配置文件方式,总有一款适合你 提起Python的的配置文件,估计你去问10个人,每个人给你的答案多多少少都不一样,原因就是轮子太多了,并没有一个足够好到让大家普遍都接收的,所以在 ...
- mysql+xml+注释,springboot整合mybatis完整示例, mapper注解方式和xml配置文件方式实现(我们要优雅地编程)...
一.注解方式 pom org.mybatis.spring.boot mybatis-spring-boot-starter 2.0.0 mysql mysql-connector-java org. ...
- 联想服务器asp配置文件,.NET Core读取配置文件方式详细总结
基于.NET Core的跨平台开发,配置文件与之前.NET Framework采用xml的config文件不同,目前主要是采用json文件键值对配置方式读取. 参考网上相关资料总结如下: 一. 引入扩 ...
- Java中加载配置文件方式的总结
当需要在Java中加载配置文件的时候,有几个选项提供选择: · File · Class.getResourceAsStream · Class.getCla ...
最新文章
- 用 jQuery Masonry 插件创建瀑布流式的页面(转)
- springMVC注解@initbinder日期类型的属性自动转换
- 009-Joran配置框架
- pkcs#11和Cryptoki的介绍
- java获取当月有几天_腾讯程序员裸辞3个月,转行去送外卖,曝出当月收入网友:又骗我去送外卖...
- 前端性能优化的七大手段
- (转载)Hadoop常用SDK系列五 TotalOrderPartitioner
- Bailian4071 查找出现了k次的字符【字符串】
- docker 命令2
- ORACLE TRUNC()函数
- PHP动态网页设计与制作案例教程pdf
- 计算机学院少女节条幅,女生节条幅大战又打响了!哪个高校条幅标语最撩人 网友酸了...
- 读书笔记_打开量化投资的黑箱02
- 电子元器件图片、名称、符号图形对照
- 5.3 上兴远程控制
- 浅谈内存分配方式以及堆和栈的区别
- 手机端用云服务器文件在哪里设置,如何使用FolderSync在安卓手机上同步文件夹到坚果云? | 坚果云帮助中心...
- 微信双开/微信多开 程序
- 消息队列相关使用方式
- Pythont打开 txt 格式的文件
热门文章
- 接口测试apipost
- 订单页面添加收货地址html,添加收货地址展示
- 细胞自动机_神经细胞自动机用于艺术娱乐
- 实验:进程调度算法(C语言)
- 阿里云语音合成1.0版
- 禁忌搜索算法求解 TSP 问题的代码示例
- 基于ICD-10诊断编码的慢性病并发症聚类算法
- python下载安装教程-Python下载并安装图形教程[超级详细]
- 快压、360压缩、WinRAR关于打开快压通过超高压缩比压缩后的文件不兼容的问题...
- STM3库文件 hal_uart.c的使用