我希望我的两个应用程序能够相互发送字符串,并根据字符串“做些什么”。
这是一个预先证明的概念-模型类型的东西,所以不需要任何安全预防措施,和你想要的低效。
那么,我该如何用最少的工作量来完成这个任务呢?
(你,我亲爱的朋友,这样用户就能在这个问题上尽心尽力地工作)
发布于 2009-06-27 21:04:11
它们在多大程度上真正需要成为不同的应用程序?
您可以在不同的线程上从第三个项目中启动两个单独的项目吗?
static void Main()
{
new Thread(Project1.Program.Main).Start();
new Thread(Project2.Program.Main).Start();
}此时,您可以使用静态变量(在第四个项目中,由前两个项目引用)在它们之间建立一个共享的通信通道。您可以有两个生产者/消费者队列 (向下看一半),例如,每个方向一个。(您可能希望使队列只使用字符串,或者创建一个通用字符串,然后使用ProducerConsumer<string>。如果您可以使用.NET 4.0测试版,则可以使用BlockingCollection
这将是非常麻烦的--即使不隔离不同的AppDomain,您也可以在从两个“应用程序”访问的静态变量方面看到一些有趣的效果,但这正是您想要达到的效果。
您绝对不应该将这种实现思想与产品代码放在一起--但是对于您所描述的情况来说,“实现起来很简单”是最重要的一点。
如果项目层次结构没有意义,下面是一个图形表示
Launcher
/ \
/ \
App 1 App 2
\ /
\ /
\ /
Shared stuff(为了使它更简单,您实际上可以使用一个项目,并让它的主方法使用同一个项目中的方法启动两个不同的线程。不管怎么说,这两个应用程序的想法都是一派胡言。另一方面,通过将项目分开,可以更容易地考虑不同的应用程序。)
发布于 2009-06-27 20:56:32
这方面有几种机制--可能最容易使用的机制是命名管道。我没有使用它,但我知道Windows通信基金会(WCF)也很容易使用。
有一堆关于WCF的关于CodePoject的文章 :)
使用WCF的一个优点是它可以轻松地将您的进程移动到不同的系统。(如果这对你的场景实用的话)。
发布于 2009-06-27 21:15:21
WCF是一个好的好方法,即使一旦你开始钻研它,它就会变得复杂。
您将定义一个接受字符串的简单契约,然后在每个应用程序中实现契约,在字符串到达时执行您想做的任何事情。在应用程序中,您可以自寄主服务,这意味着应用程序本身承载服务-因此您不需要IIS。将它们托管在已知的端口上,在每个解决方案中添加一个web服务引用,然后离开。
https://stackoverflow.com/questions/1053593
复制相似问题