remoting项目运用
上次写了remoting 的简单运用,在项目中我们服务端与客户端肯定不会去直接调用一个类,一般都是通过接口。下面我将自己项目里的一部分代码截取出来,进行讲解首先编写接口
编写接口
namespace YTKJ.Security.Interface
{public interface IMachineControlService{void OpenDoor(string door, string direction);}
为了简单理解,接口中只写了一个方法,下来我在服务端将实现这个接口。
实现接口
namespace PSIMS.Machine.Control{public delegate void OpenDoorEventHandler(string door, string direction);[Serializable]class MachineControlService : MarshalByRefObject,IMachineControlService{public static event OpenDoorEventHandler OpenDoorEvent;/// <summary>/// 重载初始化生命周期,改为永久/// </summary>/// <returns></returns>public override object InitializeLifetimeService(){return null;}public void OpenDoor(string door, string direction){if (OpenDoorEvent != null){OpenDoorEvent(door ,direction); }}}}
在这里首先实现类需要实现MarshalByRefObject接口,为OpenDoor方法设置了事件和委托。下来我们看看服务端应该怎么注册remoting服务。
注册Remoting服务
TcpServerChannel channels;channels = new TcpServerChannel(20001);ChannelServices.RegisterChannel(channels, false);RemotingConfiguration.RegisterWellKnownServiceType(typeof(MachineControlService), "YTKJ.Security.Interface.IMachineControlService", WellKnownObjectMode.Singleton);MachineControlService.OpenDoorEvent += new OpenDoorEventHandler(MachineControlService_OpenDoor);/// <summary>/// 打开门操作/// </summary>/// <param name="door"></param>/// <param name="direction"></param>private void MachineControlService_OpenDoor(string door, string direction){//这里写你的操作}
这样服务端做的事情就完成了,下来我们看看客户端怎么调用
客户端调用
IMachineControlService a;a= (YTKJ.Security.Interface.IMachineControlService)Activator.GetObject(typeof(YTKJ.Security.Interface.IMachineControlService), "tcp://192.168.11.10:20001/YTKJ.Security.Interface.IMachineControlService");a.OpenDoor("","");
客户端的调用很简单,声明接口,使用方法获得远程调用接口,调用接口中的方法。这里有个需要注意的问题,在客户端调用的类型YTKJ.Security.Interface.IMachineControlService一定要与服务端的命名空间和接口名一致,否则客户端会报无法加载类型的异常
这样启动项目远程调用就完成了。
remoting项目运用相关推荐
- 基于.Net Remoting的项目总结报告
Based on .Net Remoting Project Summary Report<?xml:namespace prefix = o ns = "urn:schemas-mi ...
- 基于.net平台remoting、DB2技术的大型分布式HIS系统架构及开发(项目架构师方向)...
课程链接:http://***/goods.php?id=131 培训定位: 适合于.net方向有一定的工作经验提高用.本次课程涉及到系统架构.DB2.抽象工厂.组件式编程.基于角色和个人的混合授权思 ...
- 做开发很久了 Remoting 一直没有碰过,正好最近的项目上面用,就拿出来给大家看看
首先 Remoting 严格来说分为3个部分, 服务端 ,客户端,中间件,中间件是指把要公布的方法和接口写成dll的形式,给客户端和服务端调用. 不说其他的了 ,直接上代码 RemotingMode ...
- 远程处理Remoting
日程 ?应用程序域 ?Remoting和原理 ?编程式和管理式配置实例 用应用程序域 操作系统和运行库环境通常会在应用程序间提供某种形式的隔离.例如,Microsoft Windows 使用进程来隔离 ...
- Flex与ASP.NET通过Remoting方式进行通讯
前两天研究了一下Flex与.NET如何进行数据交互,并写了一个文档,后面叙述得还不是很详细,还可以再研究深一点.本文是关于Flex与ASP.NET通过Remoting方式进行通讯的内容,过段时间有空还 ...
- 泛型委托在项目中的应用
Action<T> 泛型委托:封装一个方法,该方法只采用一个参数并且不返回值.可以使用此委托以参数形式传递方法,而不用显式声明自定义的委托.该方法必须与此委托定义的方法签名相对应.也就是说 ...
- 阿里好的开源项目有哪些(善用工具)
阿里好的开源项目有哪些(善用工具) 一.总结 一句话总结:善用工具,可以极大的提升开发效率. 1.阿里好的开源项目自己目前可能用得上的有哪些(举两个)? JSON处理器 fastjson 开源数据库A ...
- Remoting和Webservice有什么区别
REMOTING和WEBSERVICE有什么区别 其实现的原理并没有本质的区别,在应用开发层面上有以下区别: 1.Remoting可以灵活的定义其所基于的协议,如果定义为HTTP,则与Web Serv ...
- Webcast.NET Remoting学习笔记(5)使用配置文件
使用配置文件 使用配置文件主要有三点好处: 1 简化代码,将配置相关的代码写到配置文件中,程序的逻辑处理更清晰. 2 便于更改配置,项目的配置有可能会产生变化,例如已经注册的通道端口被占用等等,有了配 ...
最新文章
- 福利,PyTorch中文版官方教程来啦(附下载)
- 【动态规划】背包模型
- 使用镜像加速 Rtools 下载与安装
- R语言使用ggplot2包使用geom_boxplot函数绘制基础分组箱图(分组箱体框颜色调色板配置)实战
- HBase 与 MapReduce 集成
- windows连linux工具,Windows连接Linux工具
- 基于CASIA-GaitDatasetB步态图像轮廓数据库的步态周期检测与步态角度特征MATLAB源码
- mdkstc系列器件支持包下载_Qorvo PAC系列高集成度电机控制芯片及应用
- 单源最短路径(Dijkstra算法)
- cs文件中控制页面table的大小、title名称(.aspx)
- 打砖块小游戏php程序,利用原生js实现html5打砖块小游戏(代码示例)
- mongodb or and 条件拼凑 Query.And Query.Or
- shopxo首页的新闻头条栏:如何隐藏或关闭?
- python入门--动态绑定属性和方法
- python ttk separator_Python3 tkinter基础 Menu add_cascade 多级菜单 add_separator 分割线
- 星痕 轻松实现大屏数据可视化_数据可视化的一些思考丨如何做出令人满意的大屏可视化设计(一)...
- c语言10以内随机数生成器,C语言随机数生成器
- win10电脑wifi服务器未响应,Win10系统点击无线图标没反应的解决方法
- uniapp 返回页面刷新/小程序获取用户信息之后登录和退出登录
- 中科大计算机学院潘镇,中科大计算机学院招生导师