有没有办法在C#中从外部应用程序引发事件?尤其是来自Ruby的?我需要从rails应用程序在C#中执行一些操作。
发布于 2010-09-28 04:01:20
我假设您所说的“外部应用程序”指的是C#代码的进程空间之外的内容。另外,我假设您指的不是C#事件--这不是一个存在于.NET实现域之外的概念--它们不是可以从代码外部访问的东西。
因此,这个问题的一般答案是“是的,它是可能的”--但由于您实际上是在尝试发送进程间通知,因此您将需要使用某种IPC mechanism。
.NET提供了丰富的应用程序接口来执行进程间通信,范围从命名管道到分布式组件,再到低级网络协议。您使用哪种方法取决于这些进程需要通信的环境(在一台机器上、跨intranet上的机器、通过internet等)。它还将取决于您交换的信息类型以及您愿意花费多少努力。对于.NET 3.5应用程序,您通常可以使用WCF as the unifying framework找到受支持的实现。
显然,所有这一切都取决于您修改要在其中引发事件的.NET应用程序的实现(请阅读源代码)的能力。如果您不能做到这一点,并且该代码中没有现有的IPC机制,那么您很可能会被卡住。
更新:回应你的评论:
你会推荐什么,容易和时间优先。这两个应用程序在同一台机器上运行,我自己编写它们
我会考虑使用Named Pipes。命名管道最初是Unix的一个概念--但它们在Windows上也可用。它们具有不同的简单编程接口(它们类似于处理文件),并且在单机场景中不需要太多使用。
在Ruby方面(我不太熟悉),这里有一些你可能会发现有用的链接:
在.NET方面,这里有一些相关链接可供浏览以获取更多信息:
发布于 2010-09-28 03:59:37
一个显而易见的解决方案是使用各种网络消息。要么是短暂的TCP/IP连接,要么是一个简单的UDP数据包--特别是当两个应用程序都在同一主机上时。
C#应用程序将接受连接(如果是TCP),从套接字读取事件并最终处理它们。
发布于 2010-09-28 04:02:15
为了扩展Martin的回答,您可以考虑一种消息传递协议,该协议具有两种目标语言可用的库。我想到了像Stomp这样的东西。
https://stackoverflow.com/questions/3807325
复制相似问题