- 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/
给定一个 Option[Future[Option[Int]]] : scala> val x: Option[Future[Option[Int]]] = Some ( Future ( Some
如果我理解正确,EitherT[Option,A,B] 应该与 Option[Either[A,B]] 相同,但编译器不同意.以下代码编译失败: def f[A,B] = implicitly[Eit
我刚开始在使用 parcel.js 构建静态 Assets 时遇到此错误。它在本地工作,但我在 Heroku 上的构建出错,我不确定它是否相关。 最佳答案 得到同样的问题。通过将 core-js 安装
当我生成 Telerik Report 时,只有 Export PDF 可用。即使我将 docx 和 xlsx 的配置设置为 true。这是我在网络配置中的配置。
我的 iTunesConnect 应用程序显示 Apple Pay 选项。我正在使用布伦特里。 即使我们没有在应用程序中使用 Apple Pay 功能。 有人可以帮我解决如何在我的 itunesCon
我正在 Raspbian 中从命令行运行以下查询: mysql -u $NAME -p $PASS Tweets -e "SELECT count(*) FROM raw_tweets;" 它输出以下
我正在尝试使用 ffmpeg(在 linux 下)为视频添加一个小标题。所以,我使用: ffmpeg -i hk.avi -r 30000/1001 -metadata title="SOF" hk_
我正在尝试使用 ffmpeg 使用 ffserver 流式传输视频。您将在 ffserver1.conf 文件下方找到 ffmpeg 命令的日志输出。 其中一个错误引用了预设,每次我尝试使用预设时,我
我正在尝试对 Option 使用 fold 或 map 操作而不是 match。 我有一个选项 val ao: Option[String] = xxxx 和一个函数 f: (String => Fu
Dockerfile documentation表示有可能通过 --platform FROM 中的选项像这样的指令: FROM [--platform=] [AS ] 在我的 dockerfile
我不确定“属性(property)”或“选项”是否是正确的术语,但这是我需要弄清楚的。 鉴于以下情况: ' $.fileup({ url: '/file/upload',
我正在尝试使用 jQuery 检查是否选择了值 = 1 的选择选项,然后将类添加到某些元素。但有些东西不起作用。可以请人看一下代码吗? 我的代码: Reservation
我对 VIM 中的这些感到困惑。有些事情需要设置,而另一些则让。 而且,我如何检查某个选项。我知道这是一个选项,因为我使用 set 来更改它。 例如,如何检查当前文件类型选项是否为 java? 最佳答
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 8 年前。 Improve this ques
我在看《Professional F# 2.0》一书作者展示如下代码 let a string : option = None if a.IsNone then System.Console.
我习惯使用方法顶部的 java 样板检查输入参数: public static Boolean filesExist(String file1, String file2, String file3
假设我有一串 "Insert Post -title Some PostTitle -category 2 -date-posted 2013-02:02 10:10:10" 我一直在尝试做的是将这个
从 1.3.70 EAP 开始,在 org.jetbrains.kotlin.gradle.dsl.KotlinJvmOptions 这是 var useIR: kotlin.Boolean 哪个激活
我无法获取订购捆绑商品的所有子产品及其选项。这可能吗? 最佳答案 以下是您如何找出哪些产品应与所有其他项目一起附加到列表中的捆绑产品中的方法: foreach ($order->getAllItems
这个问题不太可能对任何 future 的访客有帮助;它只与一个较小的地理区域、一个特定的时间点或一个非常狭窄的情况相关,通常不适用于全世界的互联网受众。如需帮助使此问题更广泛适用,visit the
我是一名优秀的程序员,十分优秀!