两个c#应用程序之间的通信

时间:2016-04-06 17:44:31

标签: c# web-services communication

我有一个问题,在C#方面经验不多,所以我做了很多研究,而且我被卡住了。

我必须制作两个应用程序C#,第一个应用程序是Windows窗体,第二个应用程序在后台运行,因此第一个应用程序将是一个(POS)销售点,需要与应用程序背景进行通信以获取信息(产品,客户等......)并发送数据,所以不想使用Web服务来解决超时等问题,所以任何人都可以帮我一些想法来执行这项任务吗?

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

4 个答案:

答案 0 :(得分:2)

有许多方法可以进行进程间通信。由于这个问题非常普遍,我将指出一些更常见的方法。

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

最优选的方式通常是web-servcie或web-site方式,具体取决于您的约束条件。

答案 1 :(得分:1)

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

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

(请注意,RabbitMQ(以及其他现成的框架)对于新的应用程序程序员来说有时会令人生畏,因为它们处理了大量的用例。但是从一个应用程序写入队列并从队列中读取队列的基本概念另一个应用程序真的是这里的关键...随意实现自己的小实用程序作为学习体验,但如果你习惯使用它,我建议你预先建立一个框架。

答案 2 :(得分:0)

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

How to: Use Named Pipes for Network Interprocess Communication

答案 3 :(得分:0)

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

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

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