【问题标题】:Communication between two c# applications两个 C# 应用程序之间的通信
【发布时间】:2016-07-27 07:02:06
【问题描述】:

我有一个问题,对C#没有太多经验,所以我做了很多研究,结果卡住了。

我要制作两个C#应用程序,第一个应用程序是windows forms,第二个在后台运行,这样第一个应用程序将是一个(POS)销售点,需要与应用程序后台通信获取信息为(产品、客户等)并发送数据,所以不想使用 Web 服务来解决超时等问题,所以任何人都可以帮助我完成这项任务吗?

重要的是要提到后台应用程序将只是一个,而与之通信的 POS 应用程序将很多(n 个应用程序)。

【问题讨论】:

  • WCF 服务可以使用 MSMQ 来确保消息不会丢失。所以不要太快排除网络服务

标签: c# web-services communication


【解决方案1】:

通常您会使用消息队列来处理此类事情。它们是确保清晰分离关注点、减少和跨应用程序耦合的组件,旨在接收某个发布者的消息(从而免除发布者的任何进一步责任),并将消息推送给某个订阅者。

RabbitMQ 是一个流行的框架:https://www.rabbitmq.com/

(请注意,RabbitMQ(和其他现成框架)有时可能会让新的应用程序程序员感到畏惧,因为他们要处理大量用例。然而,从一个应用程序写入队列并从队列中读取的基本概念另一个应用程序确实是这里的关键......您可以随意实现一个自己的小实用程序作为学习体验,但如果您愿意使用这样的框架,我建议您使用预先存在的框架)

【讨论】:

    【解决方案2】:

    有无数种方法可以进行进程间通信。由于问题太笼统,我会指出一些更常见的方法。

    • 后台进程可以是更新数据库的 Windows 服务,POS 系统查询数据库以检索他们需要的内容。即使后台进程从同一个数据库中读取,您也可以拥有一个单独的表,其中包含“已完成”的信息,可供 POS 件获取。现在您也可以使用文件而不是 DB 来存储完成的结果,但大多数人更喜欢 DB。
    • 您可以使用 WCF 通道在 POS 片和后台进程之间建立通信。
    • 您可以将后台进程转换为 Web 服务,并让您的 POS 件使用 XML 进行通信。我认为任何超时问题都不应该成为问题。您必须更好地解释导致您不使用此选项的超时问题。
    • 您可以将整个部分转换为网站,然后 POS 将只是一个浏览器
    • 您可以使用 Tibco 或 MQ 之类的总线来传递数据。
    • 或者您可以采用老式的 TCP 套接字方式。

    最首选的方式通常是网络服务或网站方式,具体取决于您的限制。

    【讨论】:

      【解决方案3】:

      一种方法是使用命名管道在不同程序之间进行此类通信。

      How to: Use Named Pipes for Network Interprocess Communication

      【讨论】:

        【解决方案4】:

        如果你不想使用网络服务(基于soap协议), 您可以尝试使用 web api。通过这种方式,您可以使用 json 构建 rest based interfaces(计算机之间的 json 流比 xml 流更快)。

        我认为以下链接可能对您有用:

        http://www.asp.net/web-api/overview/getting-started-with-aspnet-web-api/using-web-api-with-aspnet-web-forms

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-06-06
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-08-06
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多