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

时间:2015-07-31 19:15:50

标签: javascript c# html ajax websocket

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

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

我尝试过对Web应用程序使用POST请求,但我已经取得了一些成功,但我不知道如何在Web App上存储和更新“状态”。例如,C Sharp程序发送一个POST / GET请求询问状态,Web应用程序响应“没有任何更改”或某种状态代码。我不知道如何跟踪这种状态。

我尝试过使用网络套接字,但我不认为它会在C Sharp方面实现。但是,我绝对愿意接受有关如何运作的建议。

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

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

对不起,如果这个问题形成不好,我很明显很多,这是我的第一篇SO帖子。此外,我将包含示例代码,但我从平板电脑发布此代码,因此现在无法访问它。

2 个答案:

答案 0 :(得分:0)

If they are on the same machine, you can use 'pipes' (Unix), local sockets or file handlers.

These are all types of IO objects both applications can 'listen' to without exposing themselves to the network and without blocking while they are 'waiting' for data..

... But this will limit your scalability.

Another option is to use a Pub/Sub service such as Redis. This is a better option than websockets, because you can have multiple C# apps listening to multiple web apps on a centralized data source.

It uses the same IO concept (using sockets) behind an abstraction layer coupled with a database - it's very effective.

Good luck!

答案 1 :(得分:0)

I implemented something similar to this. I needed a desktop application to listen for api calls from the browser. I ultimately decided to implement a "web connector" which can either be created as part of the application OR installed as a service.

Here is a good example: https://msdn.microsoft.com/en-us/library/system.net.sockets.tcplistener(v=vs.110).aspx