在.NET中使用Web服务器与Windows应用程序进行通信的方法

时间:2011-11-18 13:56:46

标签: asp.net c++ web-services web

我需要找到一种最有效的方式来从asp.net Web服务器和Windows C ++应用程序进行通信。 Windows应用程序没有访问asp.net Web服务器数据库的任何权限。

当用户按下按钮时,C ++应用程序应该接收带有一些字节的操作。

作为回报,在处理C ++应用程序上的数据后,它会将结果发送回Web服务器。

目前我能想到的唯一方法如下:

  • asp.net Web服务器将有两种Web服务方法:

  • C ++应用程序将为该Web服务调用间隔的方法。如果有变化,那么C ++应用程序将处理。

  • 在C ++应用程序完成其进程后,它将调用该Web服务上的方法来通知结果。

解决此类沟通的其他方法是什么?

提前致谢。

3 个答案:

答案 0 :(得分:2)

如果C ++应用程序也在Windows上,命名管道将是一个很好的解决方案。它们可以配置为持久,因此如果任何一方未准备好接收消息并且它们非常易于使用,它们可以对消息进行排队。它们基本上看起来像您可以读取或写入的文件,数据显示在“管道”的另一侧。

在这里查看文档(C ++):http://msdn.microsoft.com/en-us/library/aa365781(v=VS.85).aspx

在ASP.NET端,您将使用.NET API。这是一个很好的例子来帮助您入门:http://msdn.microsoft.com/en-us/library/bb546085.aspx(此示例包括客户端和服务器代码。)

如果C ++应用程序与ASP.NET应用程序位于同一物理服务器中,则命名管道将是一个很好的解决方案。在这种情况下,操作系统只是为您在进程之间移动内存,因此它可以非常快。

此外,我将C ++应用程序配置为Windows服务,因此它始终可用,并且可以在重新启动运行它的服务器时重新启动。如果保持运行非常重要,您可以集成性能计数器,然后让您的运营团队监控计数器,以确保它在预期的阈值内运行。

答案 1 :(得分:1)

C ++应用程序还可以生成一个简单的 GET POST 请求,其中包含Web服务器可以处理的足够信息,以防您不希望公开Web服务。< / p>

答案 2 :(得分:1)

您可以使用网络套接字。我和他们做了很多事情已经有很长时间了,所以我帮不了多少。研究Winsock(又名Windows Sockets API)。

您可以使用WCF服务并使用C ++客户端连接到它们。您将不得不研究从C ++客户端消费WCF服务。

正如@parapura建议你可以使用简单的HTTPRequest get&amp;发布方法。您可以为这些请求创建自己的http处理程序以自定义响应。

正如您所建议的那样,您可以使用简单的Web服务。