Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/300.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用ASP.NET MVC应用程序定期插入Azure数据库_C#_Asp.net_Asp.net Mvc_Azure - Fatal编程技术网

C# 使用ASP.NET MVC应用程序定期插入Azure数据库

C# 使用ASP.NET MVC应用程序定期插入Azure数据库,c#,asp.net,asp.net-mvc,azure,C#,Asp.net,Asp.net Mvc,Azure,我想知道如何实现一个解决方案,它将检索我收集的数据,并使用它在ASP.NET MVC web应用程序中显示 当前的实现会刮取数据并将其从控制器显示到视图,但是这样做会导致在处理使用刮取数据查看页面的请求时,由于刮取器正在运行,因此查看网页的请求将花费很长时间 我能做些什么来分离数据检索和网站 目前,我有一个控制台应用程序scraper类来刮取数据,还有一个ASP.NET MVC web应用程序来显示数据。如何将它们轻松地结合在一起?根据系统大小,我认为您可以做两件事: 定期刮取数据并将其保存在

我想知道如何实现一个解决方案,它将检索我收集的数据,并使用它在ASP.NET MVC web应用程序中显示

当前的实现会刮取数据并将其从控制器显示到视图,但是这样做会导致在处理使用刮取数据查看页面的请求时,由于刮取器正在运行,因此查看网页的请求将花费很长时间

我能做些什么来分离数据检索和网站


目前,我有一个控制台应用程序scraper类来刮取数据,还有一个ASP.NET MVC web应用程序来显示数据。如何将它们轻松地结合在一起?

根据系统大小,我认为您可以做两件事:

  • 定期刮取数据并将其保存在内存中
  • 定期刮取数据并将其保存在数据库中
若废弃的数据很大,则需要将其存储在数据库中,否则可以保留内存并大大提高性能

后台工作人员负责定期在asp.net中运行任务。定期运行任务的一些简单方法是在
应用程序\u Start
中启动线程。我不会深入到实现中,因为它已经得到了回答。您可以在此处使用簧片:

要将数据保存在内存中,可以使用以下方法:

public static class Global
{
    public static ConcurrentBag<ScrapedItem> ScrapedItems;
} 
公共静态类全局
{
公共静态并发;
} 

*注意,有必要使用线程安全集合,因为获取和添加到此集合将从不同的线程完成:一个来自后台工作线程,一个来自请求。或者,当获取/设置为非线程安全收集时,您可以使用
lock
对象。

使用数据库存储控制台应用程序中的刮取结果。使用MVC Web应用程序从数据库查询结果。是的,刮取的数据将非常大。在这种情况下,您的后台工作人员应该定期更新您的数据库,并且您的MVC应用程序应该从该数据库获取数据。在任何情况下,都有必要将数据刮取逻辑传输到后台工作程序。