C# 使用ASP.NET MVC应用程序定期插入Azure数据库
我想知道如何实现一个解决方案,它将检索我收集的数据,并使用它在ASP.NET MVC web应用程序中显示 当前的实现会刮取数据并将其从控制器显示到视图,但是这样做会导致在处理使用刮取数据查看页面的请求时,由于刮取器正在运行,因此查看网页的请求将花费很长时间 我能做些什么来分离数据检索和网站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应用程序来显示数据。如何将它们轻松地结合在一起?根据系统大小,我认为您可以做两件事: 定期刮取数据并将其保存在
目前,我有一个控制台应用程序scraper类来刮取数据,还有一个ASP.NET MVC web应用程序来显示数据。如何将它们轻松地结合在一起?根据系统大小,我认为您可以做两件事:
- 定期刮取数据并将其保存在内存中
- 定期刮取数据并将其保存在数据库中
应用程序\u Start
中启动线程。我不会深入到实现中,因为它已经得到了回答。您可以在此处使用簧片:
要将数据保存在内存中,可以使用以下方法:
public static class Global
{
public static ConcurrentBag<ScrapedItem> ScrapedItems;
}
公共静态类全局
{
公共静态并发;
}
*注意,有必要使用线程安全集合,因为获取和添加到此集合将从不同的线程完成:一个来自后台工作线程,一个来自请求。或者,当获取/设置为非线程安全收集时,您可以使用
lock
对象。使用数据库存储控制台应用程序中的刮取结果。使用MVC Web应用程序从数据库查询结果。是的,刮取的数据将非常大。在这种情况下,您的后台工作人员应该定期更新您的数据库,并且您的MVC应用程序应该从该数据库获取数据。在任何情况下,都有必要将数据刮取逻辑传输到后台工作程序。