ASP.NET Web App和C#Application之间的双向通信

我需要构建一个双向通信的网站和应用程序。 我将使用ASP.NET构建网站,并使用C#构建应用程序。

我将自己托管该网站,它将与应用程序在同一台机器上运行。

我不知道在两者之间发送数据的最佳技术是什么。 C#应用程序需要一直运行。 我应该构建一个C#控制台应用程序,然后隐藏控制台窗口吗? 或者其他类型的应用程序会更合适吗?

我一直在寻找网络,并找到了几个不同的建议,包括套接字,消息队列,远程处理和WCF。 一些指示将非常感激 – 我是所有这一切的新手。

谢谢。

编辑将使用请求 – 响应模式,Web App始终是实例化请求的模式。 这就是我所说的双向沟通​​。

Web应用程序将向后端应用程序发送请求,后端应用程序将执行一些处理,然后将响应发送回Web应用程序。 JSON将用于来回发送数据。

我将使用SQL Server Express 2008 R2,后端应用程序将是唯一与数据库通信的应用程序。 Web应用程序主要关注表示层。

后端应用程序将具有内存中的对象,这些对象在应用程序启动时实例化(数据从数据库加载),然后持久保存到数据库(执行期间和关闭之前)。 C#Console应用程序是否适用于此类事情?

您在评论中描述的是典型的三层应用程序。

  • 前端:IIS中托管的ASP.NET应用程序
  • 后端:作为Windows服务 (或IIS / WAS中托管的WCF应用程序)运行的.NET应用程序,具有公开的Web服务。 前端应用程序使用Web服务(或远程处理)与此应用程序进行通信。
  • 数据库:仅由后端应用程序访问。

只是为了说清楚。 双向有很多含义,但在这种情况下常见的是前端调用后端和后端响应(请求 – 响应模式)。 后端从不调用前端 – 使用ASP.NET应用程序很难实现这种通信。

ASP.NET根据请求工作。 客户端调用您的ASP.NET应用程序,并且处理客户端请求=所有逻辑运行的地方。 处理请求时,处理结束。 因此,从后端调用ASP.NET应用程序不适合这种情况,除非您为后端处理公开一些特殊的Web服务,但即使在此之后它也不会与您的客户端请求处理相关联,而ASP.NET中没有内部状态保持应用。

WCF可能是一个选择。 您可以使用WCF构建所需的连接。

另外,我建议你看看SignalR 。 这是一个项目,使您可以在Web应用程序和客户端应用程序之间建立持久连接。 (在这种情况下你的C#应用​​程序。)。 用官方的话来说,SignalR是ASP.NET的异步信令库,可以帮助构建实时的多用户交互式Web应用程序。

WCF可以工作,你可能也想看看消费/写一个Web服务,但取决于你是否想要同步或异步似乎更像是问题..