小编Dav*_*e B的帖子

用C#中更安全的选项替换MarshalByRefObject

我试图在stackoverflow找到一个解决方案,但似乎找不到一个像我这样的解决方案,所以在这里.我在实验室里有一台计算机连接到各种设备,如摇摄/倾斜装置,摄像头和光传感器,并安装了所有驱动程序.我在实验室计算机上有C#代码,知道如何与硬件通信.C#代码可以设置曝光时间,要求图片,后退,并将其显示在图片框中.我可以告诉平移/倾斜移动到某个位置并在完成后让它响应.如果我在实验室,这一切都按照我想要的方式工作.

问题是,当我真的在另一台计算机上时,我希望它感觉我在实验室计算机上.最有可能的是,我将从Visual Studio内部运行非实验室计算机上的代码.实验室中运行的程序将不会从Visual Studio运行.使用Remoting,这是小菜一碟.将与硬件对话的代码放入一个类中,使用MarshalByRefObject以及我创建的接口,添加RegisterWellKnownServiceType和presto我可以使用GetObject获取引用并控制它,就像我坐在实验室中的计算机一样.所以我知道远程处理会起作用.

然而,WCF正在逐步淘汰远程服务,更不用说它在现实世界中并不是真正的安全了.在我看来,WCF将创建远程对象的本地副本(按值),这意味着它不会在实验室计算机上,因此无法与附加的硬件进行交互.有一天,这台实验室计算机和所有传感器设备将被移走,我将不得不使用互联网远程访问它.几年前我做了这件事,但我正在使用远程处理.由于远程处理是如此不安全,如何在不使用远程处理的情况下执行此操作?WCF没有与MarshalByRefObject等效的东西吗?如果WCF仅按值使用,那么看起来它们正在逐步取消某些内容而不提供替换它的功能.有没有办法使用不安全的远程处理?除了WCF我还应该使用其他东西吗?

这可能是漫长的啰嗦,但我看到很多人因为提出不太清楚的问题而感到害怕,所以我试图说清楚.如果已经有一篇文章真正为我提供了我的问题的最佳答案,我必须首先道歉,因为我自己找不到,但要求提供一个链接,以便我可以在那里得到答案.

c# wcf .net-remoting

5
推荐指数
1
解决办法
610
查看次数

标签 统计

.net-remoting ×1

c# ×1

wcf ×1