NET Remoting 最简单示例


版权声明:本文为博主原创文章,未经博主允许不得转载。
学习技术知识一个好的方法是先动手,再深入,
给出一个最简单的Remoting程序示例(C#)如下:
Step1:创建类库(DLL)工程RemotingObjects,类Person代码如下:
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace RemotingObjects
- {
- public interface IPerson
- {
- String getName(String name);
- }
- public class Person : MarshalByRefObject, IPerson
- {
- public Person()
- {
- Console.WriteLine("[Person]:Remoting Object 'Person' is activated.");
- }
- public String getName(String name)
- {
- return name;
- }
- }
- }
Step2:创建控制台工程RemotingServer(添加项目引用RemotingObjects),类Server代码如下:
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Runtime.Remoting;
- using System.Runtime.Remoting.Channels;
- using System.Runtime.Remoting.Channels.Tcp;
- using System.Text;
- using System.Threading.Tasks;
- namespace RemotingServer
- {
- class Server
- {
- static void Main(string[] args)
- {
- TcpChannel channel = new TcpChannel(8080);
- ChannelServices.RegisterChannel(channel, false);
- RemotingConfiguration.RegisterWellKnownServiceType(typeof(RemotingObjects.Person), "RemotingPersonService", WellKnownObjectMode.SingleCall);
- System.Console.WriteLine("Server:Press Enter key to exit");
- System.Console.ReadLine();
- }
- }
- }
Step3:创建控制台工程RemotingClient(添加项目引用RemotingObjects及必要类库),类Client代码如下:
(PS:正式应用开发,不需要也不应该直接引用RemotingObjects类库,而应该引用相关Remoting类的接口库。)
- using RemotingObjects;
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Runtime.Remoting.Channels;
- using System.Runtime.Remoting.Channels.Tcp;
- using System.Text;
- using System.Threading.Tasks;
- namespace RemotingClient
- {
- class Client
- {
- static void Main(string[] args)
- {
- TcpChannel channel = new TcpChannel();
- ChannelServices.RegisterChannel(channel, false);
- IPerson obj = (IPerson)Activator.GetObject(typeof(RemotingObjects.IPerson), "tcp://localhost:8080/RemotingPersonService");
- if (obj == null)
- {
- Console.WriteLine("Couldn't crate Remoting Object 'Person'.");
- }
- Console.WriteLine("Please enter your name:");
- String name = Console.ReadLine();
- try
- {
- Console.WriteLine(obj.getName(name));
- }
- catch (System.Net.Sockets.SocketException e) {
- Console.WriteLine(e.ToString());
- }
- Console.ReadLine();
- }
- }
- }
Step4:运行编译出的EXE:RemotingServer.exe和RemotingClient.exe,查看运行结果。
NET Remoting 最简单示例的更多相关文章
- Linux下的C Socket编程 -- server端的简单示例
Linux下的C Socket编程(三) server端的简单示例 经过前面的client端的学习,我们已经知道了如何创建socket,所以接下来就是去绑定他到具体的一个端口上面去. 绑定socket ...
- C# 构建XML(简单示例)
C# 构建XML的简单示例: var pars = new Dictionary<string, string> { {"url","https://www. ...
- 根据juery CSS点击一个标签弹出一个遮罩层的简单示例
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...
- ACEXML解析XML文件——简单示例程序
掌握了ACMXML库解析XML文件的方法后,下面来实现一个比较完整的程序. 定义基本结构 xml文件格式如下 <?xml version="1.0"?> <roo ...
- demo工程的清单文件及activity中api代码简单示例
第一步注册一个账户,并创建一个应用.获取app ID与 app Key. 第二步下载sdk 第三步新建工程,修改清单文件,导入相关的sdk文件及调用相应的api搞定. 3.1 修改清单文件,主要是加入 ...
- spring-servlet.xml简单示例
spring-servlet.xml简单示例 某个项目中的spring-servlet.xml 记下来以后研究用 <!-- springMVC简单配置 --> <?xml versi ...
- SignalR 简单示例
一.什么是 SignalR ASP.NET SignalR is a library for ASP.NET developers that simplifies the process of add ...
- Web API 简单示例
一.RESTful和Web API Representational State Transfer (REST) is a software architecture style consisting ...
- XML引入多scheme文件约束简单示例
XML引入多scheme文件约束简单示例,用company.xsd和department.xsd来约束company.xml: company.xsd <?xml version="1 ...
随机推荐
- CMD命令获取电脑所有连接过的WiFi密码
cmd中输入命令:for /f "skip=9 tokens=1,2 delims=:" %i in ('netsh wlan show profiles') do @echo ...
- 九度OJ 1203:IP地址 (字符串处理)
时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:3038 解决:1496 题目描述: 输入一个ip地址串,判断是否合法. 输入: 输入的第一行包括一个整数n(1<=n<=500) ...
- java对IO的操作
import java.io.*; public class HelloWorld { //Main method. public static void main(String[] args) { ...
- Linux的分区
1.磁盘分区 主分区: 最多只能有4个 扩展分区: 最多只能有1个 主分区加扩展分区最多只能有4个 不能写入数据,只能包含逻辑逻辑分区 逻辑分区: 磁盘号从5开始,只要看到磁盘号是5,一定是逻辑分区 ...
- js与jquey的表达
jquery 1.$("#id").css("display") 2.$(this) 3.attr(a,b) :在a里面追加元素b 4.prop: functi ...
- MySQL——视图
核心知识点: 1.视图定义 2.视图的好处:安全.节约资源.操作简单,数据的同一性 3.视图的基本操作 一.视图概论 视图是一个虚拟表,其内容由查询定义. 同真实的表一样,视图包含一系列带有名称的列和 ...
- Python基础(3)_可变对象与不可变对象、列表、元祖和字典
可变对象与不可变对象 实例被创建后,身份和类型是不可变的, 如果值是不可以被修改的,则是不可变对象 如果值是可以被修改的,则是可变对象 #在id不动,type也不动,value被修改了,则称为可变 # ...
- Please install Android target
今天在执行ionic build android时出现以下错误: [Error: Please install Android target: "android-22". Hint ...
- 【leetcode刷题笔记】Same Tree
Given two binary trees, write a function to check if they are equal or not. Two binary trees are con ...
- <软件架构与设计模式>侯捷老师关于Adapter类在STL中的深入解析和模式探讨
题外话:侯捷老师难得一年就来上九堂课就要会宝岛,特此留念签名赠语及合照以自勉. 学海无涯,为勤是岸 <正文开始> 昨天晚上连上了3个小时的大课探究单单讲了Adapter一个类,幸运的是本 ...