【问题标题】:ASP.NET and background worker processASP.NET 和后台工作进程
【发布时间】:2011-12-23 22:08:30
【问题描述】:

我有一个在 ASP.NET 上运行并使用 SignalR 的 Web 应用程序,我支持客户端和服务器之间的实时通信。

我需要某种类型的工作进程,它在循环中工作,并根据需要使用 SignalR 连接通知客户端,并且 Web 应用程序必须能够调用工作进程。 (工作进程和 Web 应用程序之间的双向通信

对于网络应用程序和工作人员之间的通信,您有什么建议?

一个场景是:

请求来自客户端 -> 我通知工作人员 -> 工作人员完成他的工作 -> 回调 Web 应用程序 -> 通知客户端。

worker 通知 -> Web 应用程序,使用 SignalR 通知 -> 客户端

我可以以某种方式共享实例吗?我可以在 IIS 内的同一应用程序域中运行此工作程序吗?我该如何处理?

谢谢!

【问题讨论】:

    标签: c# asp.net iis backgroundworker signalr


    【解决方案1】:

    通常我通过数据库在 ASP.NET 和另一个进程(在我的大多数情况下是计划的控制台应用程序)之间进行通信。

    即ASP.NET 应用程序将一些作业写入作业表,控制台应用程序(通过 Windows 任务计划程序每 10 分钟左右运行一次)从数据库表中提取作业并处理它们。

    【讨论】:

    • 我明白,但我需要 Web 应用程序和工作人员之间非常快速的通信。请求来自客户端 -> 我通知工作人员 -> 工作人员完成工作 -> 回调 Web 应用程序 -> 通知客户端。
    • @TomaCristian 使用message queueing怎么样?
    • 出于好奇,您使用模式吗?你的方法似乎合乎逻辑。您的同事是否易于维护?
    • 您对使用 Web 应用程序的 Application_Start 事件产生的后台线程有何看法?
    【解决方案2】:

    您可以使用异步 IIS 托管的 WCF 或 Web 服务,其中从客户端发起请求并在请求完成回调中处理响应。

    由于 IIS 可以实例化您的服务类的单独实例,因此该类可以直接调用适当的工作线程,因为用户不会直接等待响应。

    【讨论】:

    • 我对此并不担心。我需要一个在后台工作并能够通过位于 Web 应用程序实例中的 SignalR 连接向客户端推送通知的工作人员。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-13
    • 1970-01-01
    • 1970-01-01
    • 2015-02-18
    • 1970-01-01
    相关资源
    最近更新 更多