首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >异步处理.NET Server?

异步处理.NET Server?
EN

Stack Overflow用户
提问于 2013-03-20 23:35:11
回答 2查看 615关注 0票数 1

经过多年的编程,我需要第一次异步地做一些事情(因为这需要几分钟,网页就会超时--反正也不想让用户等那么久)。这个动作只由少数人完成,但每天可以做几次(每个人都这样)。

通过使用LINQ对ASP.NET网页进行“保存”单击,我将将一条记录插入Server表中。这将触发一个SSIS包,将该记录推送到全国其他几个数据库。

所以..。

  1. 我(希望只是简单地)如何使这个异步化,这样用户就可以处理其他事情了?
  2. 应该在.NET端还是在SQL端设置它?
  3. 是否有一种方法(几分钟后)用户可以知道进程已经完成并成功?也许是电子邮件?不知道用户怎么知道它完成得很好。

我在这个站点上读到了一些关于它的线程,但是它们是2009年的线程,所以不确定Visual 2012/.NET Framework4.5(我们仍然在使用SQLServer2008Framework4.5)是否有很大不同。

EN

回答 2

Stack Overflow用户

发布于 2013-03-20 23:40:08

在ASP.Net中执行长期运行的任务通常是个坏主意。首先,如果在任务完成之前回收应用程序池,那么它就会丢失。

我建议将请求写入数据库表,并使用单独的Windows来完成长期运行的工作。它可以更新数据库表中的状态列,稍后可以检查该列,以查看任务是否完成,以及是否存在错误。

票数 1
EN

Stack Overflow用户

发布于 2013-03-21 00:10:06

您可以在SQL端使用Service;它是Server实现消息队列的工具。很好的例子这里这里

您要做的是创建Service服务并定义一些脚手架(队列、消息类型等)。然后创建一个服务“激活”过程,它基本上是一个消耗队列消息的存储过程。例如,这个SP将接收一条带有表中记录ID的消息,然后继续对它做任何需要做的事情,可能在完成时发送一封电子邮件,等等。

因此,通过代码隐藏,您可以调用一个简单的存储过程,它将用户的数据插入到一个表中,并向队列发送一条消息,例如,新记录的ID,然后立即返回。我想你应该提前告诉用户,这可能需要几分钟,他们会收到一封电子邮件,等等。

Service的好处是消息传递几乎是有保证的--即使您的SQL Server在消息排队后立即崩溃,当您重新启动消息时,激活SP也会重新启动,因此它非常健壮。

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

https://stackoverflow.com/questions/15536801

复制
相关文章

相似问题

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