首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ASP.NET MVC3 web和后台进程

ASP.NET MVC3 web和后台进程
EN

Stack Overflow用户
提问于 2011-10-17 05:01:45
回答 4查看 1.4K关注 0票数 2

我有一个用ASP.NET MVC3编写的web项目。我的web应用程序的一部分被用来保存一些图像,它运行起来相当慢。因此,在尝试保存100张图片(其他一些工作也已完成)之后,速度会很慢,用户必须在浏览器中等待很长时间。

我正在考虑设计一个后台服务(进程),我会向它发送一些数据,它将在后台运行,而不会减慢网站的使用。具体地说,我需要一个使用单个字符串队列的服务。Web应用程序可以随时在队列中发送新字符串,并且服务必须对队列中的字符串进行一些处理。

我不知道从哪里开始,或者使用什么。有什么建议吗?:)

EN

回答 4

Stack Overflow用户

发布于 2011-10-18 10:12:15

看起来你知道你想要的基本流程,从应用程序获取请求,将数据传递给wcf服务,返回适当的视图。wcf在后台工作。如果您想要通知发出请求的用户后台处理已完成,则需要更多技巧,但您始终可以让wcf服务将mvc应用程序检查的消息写入公共消息表。

票数 2
EN

Stack Overflow用户

发布于 2011-10-18 10:20:37

可以有许多不同的方法来设计这样的东西。

一种方法是在Windows服务中托管WCF服务,该服务管理后台作业,并具有具有以下方法的服务接口:

代码语言:javascript
复制
Guid StartJob(...) //returns new jobId<br/>
SomeInfoObject CheckJobStatus(Guid jobId)

这将允许您的web应用程序轮询..使用Ajax,如果你愿意的话,你可以向用户显示一个进度条(客户端会向你的web应用发出Ajax请求,然后调用服务来获取进度信息)。

另一种方法是将任务信息写入数据库以调度新作业。可以使用windows服务(甚至是启动进程的计划任务)来完成作业,并在作业完成时更新数据库。

票数 1
EN

Stack Overflow用户

发布于 2011-10-18 10:36:23

任何形式的队列都可以在这里工作。查看RabbitMQ或MSMQ。基本上,你想要的就是在某个地方存储一条你想要处理的消息。

您可以使用BackgroundWorker或其他东西-将其设为静态,然后在global.asax中的Application_Start上创建它。我认为你最好有某种形式的机制,这种机制不会在网站重启或任何事情上被拆除。

另一种选择是将值放入数据库中,这样你就可以很容易地跟踪它的状态和反馈。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7787297

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档