Remoting例子-使用配置文件
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例子-使用配置文件相关推荐
- .NET Remoting Basic(6)-配置文件
除了以硬编码的形式来注册对象,也可以以配置文件的方式来注册,以便增加灵活性 1.服务器端配置文件 其中以system.runtime.remoting 为配置节点 配置了信道和注册对象,看起来非常的容 ...
- Remoting技术使用配置文件示例
1.创建类库工程RemotableType.dll (提供remotable 类型). RemotableType.cs using System; using System.Collections. ...
- remoting例子
读文章:.NET Remoting 最简单示例 转载于:https://www.cnblogs.com/Tpf386/p/7244448.html
- 远程处理Remoting
日程 ?应用程序域 ?Remoting和原理 ?编程式和管理式配置实例 用应用程序域 操作系统和运行库环境通常会在应用程序间提供某种形式的隔离.例如,Microsoft Windows 使用进程来隔离 ...
- WCF分布式开发必备知识(2):.Net Remoting
上一节我们学习了网络分布式编程中的MSMQ消息队列技术.本节我们将学习分布式编程的另外一个重要的技术.Net Remoting,文章的结构还是先讨论基本概念,再来探讨具体的技术实现,希望能和大家一起交 ...
- Remoting 配置格式说明(转)
使用配置文件的好处是什么?很简单,他可以简化代码,可以随时更改,通道,端口,URL的设置不需要重新编译就可以运行.所以在实际项目中经常采用这种方式. 怎么写一个服务器端的配置文件? 下面举个例子: & ...
- 使用.NET Remoting开发分布式应用——基于租约的生存期(转载)
使用.NET Remoting开发分布式应用--基于租约的生存期 一.概述 知名类型的SingleCall对象可以在客户程序的方法调用之后被垃圾收集器清理掉,因为它没有保持状态,属于无状态的.而客户激 ...
- ini配置文件的读取
.ini 文件是Initialization File的缩写,即初始化文件.是windows的系统配置文件所采用的存储格式,统管windows的各项配置,一般用户就用windows提供的各项图形化管理 ...
- log4j配置文件详解---转
使用步骤注意: 1. 从http://logging.apache.org/log4j/1.2/ 下载文件 2. 在src目录下加入log4j.properties,将jar包放入build -pat ...
- Log4j配置文件以及配置方法
Log4J的配置文件(Configuration File)就是用来设置记录器的级别.存放器和布局的,它可接key=value格式的设置或xml格式的设置信息.通过配置,可以创建出Log4J的运行环境 ...
最新文章
- 【Python基础】11、文本处理与IO深入理解
- ID--HANDLE--HWND三者之间的互相转换(转)
- pat1038. Recover the Smallest Number (30)
- C语言学习之输入10个数,输出其中最大的一个数。
- python字典编码_python中包含UTF-8编码中文的列表或字典的输出
- CAS去掉HTTPS认证
- [Leedcode][JAVA][第876题][快慢指针]
- eoLinker-AMS接口管理系统
- c语言计算分段函数_Rust能够取代C语言吗?
- E. 2-3-4 Tree
- VMware HA实战攻略之一软硬件环境准备
- Python自然语言处理学习笔记(30):4.2 序列
- jquery 文档就绪
- 咸鱼笔记:《实用软件工程》第一、二章课后简答题及参考答案
- viso 2013 如何增加连接点【画多条直线】
- 《精通软件性能测试与LoadRunner最佳实战》—第2章2.9节运行结果分析
- 测试属性4 –准确性
- 第11章 角色页的删除、批量删除
- android 统一推送平台,工信部实验室成立安卓统一推送联盟:推送服务将实现统一...
- python 获取当前目录 上一级目录 上上一级目录
热门文章
- 让你变懒的 Android Studio Live Templates
- 你若不离不弃,我必拼尽全力!
- 学考计算机删除键是什么字母,考计算机的童鞋注意啦~计算机基础题答案~
- easypoi中excel注解开关_easypoi: 入,Word模板导出,通过简单的注解和模板 语言(熟悉的表达式语法),完成以前复杂的写法...
- potplayer如何添加m3u直播源_拼多多个人直播流量怎么来?直播如何添加个人商品...
- 对Python中列表和数组的赋值,浅拷贝和深拷贝的实例讲解
- RESTful风格编程
- [tldk][dpdk][dev] TLDK--基于dpdk的用户态协议栈传输层组件简单调研
- 前端程序员也需要知道进程和线程
- 使用C语言操作InfluxDB