【问题标题】:Two-way communication between ASP.NET Web App and C# ApplicationASP.NET Web App 和 C# 应用程序之间的双向通信
【发布时间】:2012-01-27 23:34:08
【问题描述】:

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

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

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

我一直在浏览网络,发现了几个不同的建议,包括套接字、消息队列、远程处理和 WCF。一些指针将不胜感激 - 我对所有这些都是新手。

谢谢。

EDIT 将使用请求-响应模式,Web 应用程序始终是实例化请求的方式。这就是我所说的双向通信。

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

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

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

【问题讨论】:

  • 你会使用什么样的数据源?以 MSSQL 为例?
  • @Rachel - 他们会有什么样的沟通方式?如果是简单的数据通信,那么您的 Windows 应用程序可以将其放在 DB 中,然后 Web 应用程序调用从 DB 中提取它,否则请使用 WCF。
  • @Trikks 是的,我将使用 SQL Server 2008 R2。我的想法是只有 C# 应用程序与 DB 通信,这样 Web 应用程序将主要关注表示层。我可能会使用 JSON 在这两个应用程序之间发送数据。
  • @Bibhu Web 应用程序将向应用程序发送请求。应用程序将执行一些处理,然后将响应发送回 Web 应用程序。
  • @Rachel 你想要保持连接吗?或者是否会有触发器来启动连接?

标签: c# asp.net wcf sockets remoting


【解决方案1】:

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

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

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

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

【讨论】:

  • 是的,你正确理解了我的情况。我将使用请求-响应模式,前端总是实例化请求,后端是唯一访问数据库的。后端应用程序应该具有内存中的对象,这些对象在开始执行时从数据库加载,并在停止之前保持不变。那么 C# 控制台应用程序会更合适吗?
  • 当前端是 ASP.NET 时,控制台应用再合适不过了。
【解决方案2】:

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

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

【讨论】:

  • 我宁愿不为这个项目使用第三方库,但谢谢你的建议。我以前从未使用过 WCF。如果我构建 WCF 应用程序,我可以按照我的问题(更新)中的说明保留内存中的对象吗?
  • @Rachel SignalR 可能看起来像第三方库,但事实并非如此。该项目背后的主要开发人员是 ASP.NET 团队的核心成员:Damian Edwards 和 David Fowler。我敢打赌,这个项目将在未来的版本中内置到核心 ASP.NET 中。
【解决方案3】:

WCF 可以工作,您可能还想查看使用/编写 Web 服务,但取决于您是否希望同步或异步看起来更像问题..

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-13
    • 2013-02-11
    • 2019-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多