首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >两个独立的C# .Net应用程序在同一台计算机上相互交谈的最简单方法是什么?

两个独立的C# .Net应用程序在同一台计算机上相互交谈的最简单方法是什么?
EN

Stack Overflow用户
提问于 2009-06-27 20:49:14
回答 8查看 3.5K关注 0票数 5

我希望我的两个应用程序能够相互发送字符串,并根据字符串“做些什么”。

这是一个预先证明的概念-模型类型的东西,所以不需要任何安全预防措施,和你想要的低效。

那么,我该如何用最少的工作量来完成这个任务呢?

(你,我亲爱的朋友,这样用户就能在这个问题上尽心尽力地工作)

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2009-06-27 21:04:11

它们在多大程度上真正需要成为不同的应用程序?

您可以在不同的线程上从第三个项目中启动两个单独的项目吗?

代码语言:javascript
复制
static void Main()
{
    new Thread(Project1.Program.Main).Start();
    new Thread(Project2.Program.Main).Start();
}

此时,您可以使用静态变量(在第四个项目中,由前两个项目引用)在它们之间建立一个共享的通信通道。您可以有两个生产者/消费者队列 (向下看一半),例如,每个方向一个。(您可能希望使队列只使用字符串,或者创建一个通用字符串,然后使用ProducerConsumer<string>。如果您可以使用.NET 4.0测试版,则可以使用BlockingCollection

这将是非常麻烦的--即使不隔离不同的AppDomain,您也可以在从两个“应用程序”访问的静态变量方面看到一些有趣的效果,但这正是您想要达到的效果。

您绝对不应该将这种实现思想与产品代码放在一起--但是对于您所描述的情况来说,“实现起来很简单”是最重要的一点。

如果项目层次结构没有意义,下面是一个图形表示

代码语言:javascript
复制
        Launcher
       /        \
      /          \
   App 1       App 2
      \          /
       \        /
        \      /
      Shared stuff

(为了使它更简单,您实际上可以使用一个项目,并让它的主方法使用同一个项目中的方法启动两个不同的线程。不管怎么说,这两个应用程序的想法都是一派胡言。另一方面,通过将项目分开,可以更容易地考虑不同的应用程序。)

票数 2
EN

Stack Overflow用户

发布于 2009-06-27 20:56:32

这方面有几种机制--可能最容易使用的机制是命名管道。我没有使用它,但我知道Windows通信基金会(WCF)也很容易使用。

有一堆关于WCF的关于CodePoject的文章 :)

使用WCF的一个优点是它可以轻松地将您的进程移动到不同的系统。(如果这对你的场景实用的话)。

票数 6
EN

Stack Overflow用户

发布于 2009-06-27 21:15:21

WCF是一个好的好方法,即使一旦你开始钻研它,它就会变得复杂。

您将定义一个接受字符串的简单契约,然后在每个应用程序中实现契约,在字符串到达时执行您想做的任何事情。在应用程序中,您可以自寄主服务,这意味着应用程序本身承载服务-因此您不需要IIS。将它们托管在已知的端口上,在每个解决方案中添加一个web服务引用,然后离开。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1053593

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档