繁体   English   中英

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

[英]Communication between two c# applications

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

我要做两个应用C#,第一个应用是windows窗体,第二个在后台运行,这样第一个应用会是一个(POS)销售点,需要与应用后台沟通信息为(产品,客户等...)并发送数据,所以不想使用网络服务来解决超时等问题,所以任何人都可以帮助我提出一些执行此任务的想法?

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

进行进程间通信的方法有很多种。 由于问题太笼统,我将指出一些更常见的方法。

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

最优选的方式通常是 web-servcie 或 web-site 方式,具体取决于您的限制。

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

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

(请注意,RabbitMQ(和其他现成的框架)有时会让新的应用程序程序员望而却步,因为他们处理了大量用例。但是,从一个应用程序写入队列并从另一个应用程序中的队列读取的基本概念真的是这里的关键......随意实现一个你自己的小实用程序作为学习经验,但如果你喜欢使用这样的框架,我确实推荐一个预先存在的框架)

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

如何:使用命名管道进行网络进程间通信

如果你不想使用 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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM