.NET Core 2.1报告长时间任务的进度

7
我正在将一个非常老的VB遗留应用程序重写成基于浏览器的C# ASP.Net应用程序,使用Core 2.1和Entity Framework后端连接到SQL Server。其中几个功能是长时间运行的任务。其中一个例子是导入地址簿CSV文件。这些文件通常大小为50-100Mb并需要解析。我编写了上传器和导入函数,在大约15分钟内完成 - 其中大部分是数据库写入时间。
我正在尝试找到一种方法来运行导入过程,以便它可以向客户端浏览器报告进度,最好通过将菜单选项更改为进度条,直到任务完成 - 由于_layout.cshtml位于每个页面上,它将让任何用户知道任务正在运行以及何时完成。
我已经查看了IHostedServices和BackgroundService功能,但我找不到与我尝试做的事情相匹配的示例。我看到了关于MVC5的文章,该文章使用SignalR和Knockout(我对此不太熟悉),但它没有使用Core 2+或新的服务功能。
有人能指向一个很好的.NET Core> 2.0的类似示例吗?
提前感谢。
2个回答

3

0

个人而言,我会编写一个Windows服务来使用类似Topshelf的工具进行处理:http://topshelf-project.com/

因此,您的ASP应用程序调用该进程以处理需要处理的任何数据。添加一个端点(可能使用Nancy之类的工具:http://nancyfx.org/),您的ASP应用程序可以调用该端点以检索进度信息。


1
但是 .Net Core 是操作系统无关的。将其绑定到 Windows 上就是自我打击。 - Auspex

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接