如何在 Web App 和 C Sharp 之间进行通信

Posted

技术标签:

【中文标题】如何在 Web App 和 C Sharp 之间进行通信【英文标题】:How to Communicate Between Web App and C Sharp 【发布时间】:2015-07-31 19:15:50 【问题描述】:

我正在尝试制作一个需要与用 C Sharp 编写的程序进行通信的 Web 应用程序。但是我找不到一种好的交流方式。我需要的是,如果用户单击 Web 应用程序上的某些内容,它将通知 C Sharp 程序。此外,如果 C Sharp 程序上发生事件,它需要提醒 Web 应用程序。这两个都将在同一台机器上运行。

现在我主要关注 C Sharp 程序,只是定期“询问”Web 应用程序的状态。

我尝试过对 Web 应用程序使用 POST 请求,并且在这方面取得了一些成功,但我不知道如何从本质上存储和更新 Web 应用程序上的“状态”。例如,C Sharp 程序发送一个请求状态的 POST/GET 请求,Web 应用程序以“没有任何变化”或某种状态代码作为响应。我不知道如何跟踪该状态。

我尝试过使用 Web Sockets,但我认为在 C Sharp 方面这是不可能的。不过,我绝对愿意接受有关这可能如何工作的建议。

我已经研究过使用 ReST 架构风格,但我很难理解如何实现它。我主要在 apache 服务器上使用 AJAX,我看到的大多数 ReST 示例都使用 IIS。

我成功的一种方法是一种可怕的解决方法。我使用 3 个文件来存储内容、Web 应用程序的状态和 C Sharp 程序的状态。但这需要我不断地获取文件、阅读它们、编写一个新文件并上传它。

很抱歉,如果这个问题的格式不正确,我显然对这个问题很陌生,这是我的第一篇 SO 帖子。另外,我会包含示例代码,但我是从我的平板电脑上发布的,所以现在无法访问。

【问题讨论】:

这可以很容易地在 Web 应用程序和控制台应用程序之间完成,但是您需要更好地解释一下您的最终目标是什么,而不是写一篇小说来解释谁是什么、为什么以及潜在的方式。还显示代码,以便我们可以尝试在逻辑上遵循您在创建应用程序时的想法或想法 您好,欢迎来到 SO!由于您可以在提出问题后对其进行编辑,因此我建议您在有机会时将代码添加到问题中以改进问题并增加回答的机会。示例代码提供了一个开始复制问题然后努力解决这些问题的好地方。 @MethodMan2,我不知道它有多大的不同,但它不是一个控制台应用程序,它是一个 Windows 窗体应用程序。我会尝试在不写小说的情况下进一步解释。 您的“webapp”是带有 javascript 的网页还是网络服务器? @User725 有一个解决方案,但我只知道 Chrome 浏览器。它也会很复杂,但当然会起作用。让我知道 Chrome 是否正常。 【参考方案1】:

如果它们在同一台机器上,您可以使用“管道”(Unix)、本地套接字或文件处理程序。

这些都是应用程序可以“监听”的所有类型的 IO 对象,而不会将自己暴露在网络中,也不会在它们“等待”数据时阻塞。..

...但这会限制您的可扩展性。

另一种选择是使用 Pub/Sub 服务,例如 Redis。这是一个比 websockets 更好的选择,因为您可以让多个 C# 应用程序在一个集中的数据源上监听多个 Web 应用程序。

它在与数据库耦合的抽象层后面使用相同的 IO 概念(使用套接字) - 它非常有效。

祝你好运!

【讨论】:

【参考方案2】:

我实现了类似的东西。我需要一个桌面应用程序来监听来自浏览器的 api 调用。我最终决定实现一个“网络连接器”,它既可以作为应用程序的一部分创建,也可以作为服务安装。

这是一个很好的例子:https://msdn.microsoft.com/en-us/library/system.net.sockets.tcplistener(v=vs.110).aspx

【讨论】:

以上是关于如何在 Web App 和 C Sharp 之间进行通信的主要内容,如果未能解决你的问题,请参考以下文章

C#-Sharp7-PLC-喷漆室节能小应用

Puppeteer-Sharp 库没有工作,也没有在 Web 服务(wcf)项目中创建页面

从 c sharp 客户端应用程序上传到 PHP 服务器

如何在c sharp中以编程方式将html标签目录属性从rtl设置为ltr,反之亦然

如何在 react-native webView 和 React web-app 之间进行通信?

如何在 HSQLDB 和 C# .net 之间建立连接?