- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我试图在 stackoverflow 上找到一个解决方案,但似乎找不到一个与我的非常相似的解决方案,所以就到这里吧。我在实验室有一台计算机连接到各种设备,如平移/倾斜装置、相机和光传感器,并安装了所有驱动程序。我在实验室计算机上有 C# 代码,它知道如何与硬件对话。 C#代码可以设置曝光时间,求一张图片,取回一张,显示在图片框里。我可以告诉平移/俯仰移动到某个位置并让它在完成后做出响应。如果我在实验室,一切都会按照我想要的方式进行。
问题是,当我真的在另一台电脑前时,我想让它感觉像是在实验室的电脑前。最有可能的是,我将从 Visual Studio 内部运行非实验室计算机上的代码。在实验室中运行的程序不会从 Visual Studio 中运行。使用远程处理,这是小菜一碟。将与硬件对话的代码放入一个类中,使用 MarshalByRefObject 以及我创建的接口(interface),添加 RegisterWellKnownServiceType 并立即使用 GetObject 获取引用并控制它,就像我坐在实验室的计算机旁一样。所以我知道远程处理会起作用。
但是,WCF 正在逐步淘汰远程处理,更不用说它在现实世界中并不安全。在我看来,WCF 将创建远程对象的本地副本(按值),这意味着它不会在实验室计算机上,因此无法与连接的硬件进行交互。有一天,这台实验室计算机和所有传感器设备都将搬走,我将不得不使用互联网远程访问它。几年前我确实做过这件事,但我使用的是远程处理。由于远程处理非常不安全,我如何在不使用远程处理的情况下做到这一点? WCF 没有与 MarshalByRefObject 等效的东西吗?如果 WCF 仅按值使用,那么他们似乎正在逐步淘汰某些东西而不提供替代它的功能。有没有一种方法可以使用不安全的远程处理?除了 WCF,我还应该使用其他东西吗?
这可能是冗长的,但我看到很多人因为提出不是很清楚的问题而感到厌烦,所以我试图弄清楚。如果已经有一篇帖子真正为我的问题提供了最佳答案,我必须首先为自己没有找到它而道歉,但请提供一个链接,以便我可以在那里得到答案。
最佳答案
It appears to me that WCF is going to make a local copy (by value) of the remote object which means it will not be on the lab computer and therefore unable to interact with the hardware that is attached
这几乎是完全错误的。没有跨机器进行“复制”。事实上,围绕“远程对象”的整个术语对于 WCF 不再具有太多意义。
没有远程对象,只有一个服务。该服务公开跨越其边界的操作。服务消费者可以调用这些操作。当消费者调用操作时,该调用会传递到服务中,并可能导致服务状态发生变化(例如,与某些硬件设备对话)。
该服务还可以向调用者发送响应,然后可以导致调用者状态发生变化(例如,显示硬件设备的输出)。
为了实现这一点,您首先需要创建一个 service definition .然后你需要host your service在实验室机器上。然后你需要create a service client ,然后您可以在本地计算机上使用它来调用服务操作。
(How to) handle the situation where the port connected to the hardware on the lab computer fires a DataReceived event that needs to be picked up by my application
这是一个更复杂的要求,但是是的,WCF 支持 duplex communications与它的客户。
定义服务契约(Contract)时,您可以指定消费客户端实现 callback contract .这迫使客户端定义一个回调操作,该操作通过服务和客户端之间的通信 channel 公开,然后服务可以调用该操作以将信息“推送”给客户端。
您应该让您的服务使用 WSDualHttpBinding WCF channel 绑定(bind),这将在两个方向上使用端口 80,从而允许它通过 Internet。
关于c# - 用 C# 中更安全的选项替换 MarshalByRefObject,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28804263/
我正在学习 Spring 安全性,但我对它的灵活性感到困惑.. 我知道我可以通过在标签中定义规则来保护网址 然后我看到有一个@secure 注释可以保护方法。 然后还有其他注释来保护域(或 POJO)
假设有一个 key 加密 key 位于内存中并且未写入文件或数据库... byte[] kek = new byte[32]; secureRandom.nextBytes(kek); byte[]
我有 Spring Security 3.2.0 RC1 的问题 我正在使用标签来连接我 这表示“方法‘setF
我正在创建一个使用 Node Js 服务器 API 的 Flutter 应用程序。对于授权,我决定将 JWT 与私钥/公钥一起使用。服务器和移动客户端之间的通信使用 HTTPS。 Flutter 应用
在过去的几年里,我一直在使用范围从 Raphael.js 的 javascript 库。至 D3 ,我已经为自己的教育操纵了来自网络各地的动画。我已经从各种 git 存储库下载了 js 脚本,例如 s
在 python 中实现身份验证的好方法是什么?已经存在的东西也很好。我需要它通过不受信任的网络连接进行身份验证。它不需要太高级,只要足以安全地获取通用密码即可。我查看了 ssl 模块。但那个模块让我
我正在尝试学习“如何在 Hadoop 中实现 Kerberos?”我已经看过这个文档 https://issues.apache.org/jira/browse/HADOOP-4487我还了解了基本的
我有一个带有 apache2、php、mysql 的生产服务器。我现在只有一个站点 (mysite.com) 作为虚拟主机。我想把 phpmyadmin、webalizer 和 webmin 放在那里
前些天在网上看到防火墙软件OPNsense,对其有了兴趣,以前写过一个其前面的一个软件M0n0wall( 关于m0n0wa
我在 Spring Boot 和 oauth2(由 Google 提供)上编写了 rest 后端,在 "/login" 上自动重定向。除了 web 的 oauth 之外,我还想在移动后端进行 Fire
我想调用类 Foo,它的构造函数中有抽象类 Base。我希望能够从派生自 Base 的 Derived 调用 Foo 并使用 Derived覆盖方法而不是 Base 的方法。 我只能按照指示使用原始指
如何提高 session 的安全性? $this->session->userdata('userid') 我一直在为我的 ajax 调用扔掉这个小坏蛋。有些情况我没有。然后我想,使用 DOM 中的
我目前正在为某些人提供程序集编译服务。他们可以在在线编辑器中输入汇编代码并进行编译。然后编译它时,代码通过ajax请求发送到我的服务器,编译并返回程序的输出。 但是,我想知道我可以做些什么来防止对服务
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引起辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the he
目前,我通过将 session 中的 key 与 MySQl 数据库中的相同 key 相匹配来验证用户 session 。我使用随机数重新生成 session ,该随机数在每个页面加载时都受 MD5
Microsoft 模式与实践团队提供了一个很棒的 pdf,称为:“构建安全的 asp.net 应用程序”。 microsoft pdf 由于它是为 .Net 1.0 编写的,所以现在有点旧了。有谁知
在 Lua 中,通常会使用 math.random 生成随机值和/或字符串。 & math.randomseed , 其中 os.time用于 math.randomseed . 然而,这种方法有一个
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我们有一个严重依赖 Ajax 的应用程序。确保对服务器端脚本的请求不是通过独立程序而是通过坐在浏览器上的实际用户的好方法是什么 最佳答案 真的没有。 通过浏览器发送的任何请求都可以由独立程序伪造。 归
我正在寻找使用 WebSockets 与我们的服务器通信来实现 web (angular) 和 iPhone 应用程序。在过去使用 HTTP 请求时,我们使用请求数据、url、时间戳等的哈希值来验证和
我是一名优秀的程序员,十分优秀!