欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

.net Runtime通讯方式demo

程序员文章站 2022-04-15 20:21:55
Runtime 通讯方式理论知识我就不介绍了,百度资源也很多。最近有个人物所以写了个demo,然后就写篇记录文章,记录一下在写demo中遇到的问题和解决办法。以便下次自己回顾或者使用。首先是结构,这个接口我是照着另一个成型的框架弄得简化版接口就是定义各类接口,实现类RealizeClass是实现类可以有多个,根据业务划分或者操作划分,具体看架构设计,我这里简化了一些。这是接口代码:如下图这是接口实现代码这里有个地方注意力, 写的过程中,我的实现类没有继承MarshalByR....

Runtime 通讯方式理论知识我就不介绍了,百度资源也很多。最近有个任务所以写了个demo,然后就写篇记录文章,记录一下在写demo中遇到的问题和解决办法。以便下次自己回顾或者使用。

首先是结构,这个接口我是照着另一个成型的框架弄得简化版

.net Runtime通讯方式demo

接口就是定义各类接口,实现类RealizeClass是实现类可以有多个,根据业务划分或者操作划分,具体看架构设计,我这里简化了一些。

这是接口代码:如下图

.net Runtime通讯方式demo

这是接口实现代码

.net Runtime通讯方式demo

这里有个地方注意力, 写的过程中,我的实现类没有继承 MarshalByRefObject 这个类导致在建立tcp通信的时候报错

“已知对象必须从 MarshalByRefObject 类派生。”

经过查阅资料 ,实现类需要继承 MarshalByRefObject。

然后就是服务了,这里我用的是windows服务

.net Runtime通讯方式demo

开始服务的时候注册通道。

之后就是客户端

.net Runtime通讯方式demo

注册通道获取远程对象。

在这里遇到了之前那个“已知对象必须从 MarshalByRefObject 类派生。”错误,后来在是实现类中继承之后还有,是因为我第一次在windows服务那边注册的对象是接口

.net Runtime通讯方式demo

我第一次win服务那边注册的对象是接口并非实现类,所以即使实现类继承了 MarshalByRefObject 也无法使用方法。后来经过测试发现可以直接传入实现类,然后引用接口就能直接使用实现类中的方法。

总结就是runtime整体看起来挺好用的,不过还需要多查阅资料,需要了解一下为什么注册的对象是实现类居然应用接口就能使用方法。

文章中如有错误欢迎指正。反正也是学习中,不怕。

 

本文地址:https://blog.csdn.net/Free1314XiaoSuYu/article/details/107361043

相关标签: 学习记录 c#