asp.net-mvc – 在ASP.NET MVC 3 Action方法中并行运行任务
发布时间:2020-05-25 10:10:46 所属栏目:asp.Net 来源:互联网
导读:我在ASP.NET MVC 3应用程序中有一个搜索操作,它返回包含给定关键字的建议和建议: [HttpPost]public ActionResult Search(string query, int pg = 0){ var keywords = query.Split(new[] { , ,, ; }, StringSplitOptions.Remo
|
我在ASP.NET MVC 3应用程序中有一个搜索操作,它返回包含给定关键字的建议和建议: [HttpPost]
public ActionResult Search(string query,int pg = 0)
{
var keywords = query.Split(new[] { ' ',',';' },StringSplitOptions.RemoveEmptyEntries);
var containing = (from s in _readonlySession.All<Suggestion>()
from k in keywords
where (s.Text.ToLower().Contains(k.ToLower()))
orderby s.Text
select s).Distinct();
var tagged = (from t in _readonlySession.All<Tag>()
from s in t.Suggestions
from k in keywords
where t.Text.ToLower().Contains(k.ToLower())
orderby s.Text
select s).Distinct();
var model = new SearchViewModel
{
Query = query,Containing = containing.ToList(),Tagged = tagged.ToList()
};
return View(model);
}
我认为包含和标记的查询可以完美地并行运行. 同时触发这两个查询的最佳方法是什么,等待结果,并且仅在两个查询完成时返回? 解决方法任务Parallels库是您的最佳选择.通过Google获取大量信息,但下面是您的实施可能的样子.[HttpPost]
public ActionResult Search(string query,StringSplitOptions.RemoveEmptyEntries);
IEnumerable containing=null;
Task t1 = Task.Factory.StartNew(() =>
{
containing = (from s in _readonlySession.All<Suggestion>()
from k in keywords
where (s.Text.ToLower().Contains(k.ToLower()))
orderby s.Text
select s).Distinct().ToList();
});
IEnumerable tagged=null;
Task t2 = Task.Factory.StartNew(() =>
{
var tagged = (from t in _readonlySession.All<Tag>()
from s in t.Suggestions
from k in keywords
where t.Text.ToLower().Contains(k.ToLower())
orderby s.Text
select s).Distinct().ToList();
});
t1.Wait();
t2.Wait();
var model = new SearchViewModel
{
Query = query,Tagged = tagged.ToList()
};
return View(model);
}
请记住,如果您的应用程序收到大量请求,您可能最好不要异步执行查询 – 消耗2个额外的线程来为一个请求提供服务会使资源远离其他传入请求.如果您有大量流量,或者您的硬件不合适,这只会是一个问题. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- ASP.NET页面上的多种语言(英语,法语)
- asp.net-mvc – 我应该选择云吗?
- asp.net-mvc-4 – 使用活动目录角色提供者MVC4进行授权
- asp.net-mvc – ASP.NET MVC HandleError不工作(customErro
- asp.net-mvc – MVC调用Html.Action在区域内?
- asp.net-mvc – asp.net mvc 4应用程序的入口点是什么?
- ASP Classic中的HTTP身份验证(基本或摘要)通过IIS
- asp.net-core – ASP.NET核心DisplayAttribute本地化
- asp.net – 为什么当试图保存更改时,GridView行“null”的D
- asp.net-mvc – 在OnActionExecuting事件中更改模型
推荐文章
站长推荐
- asp.net-mvc – 为什么在Razor中使用Html.Render
- asp.net – 在Owin应用程序中每个请求的数据缓存
- asp.net-core – Netcore 2.1.1版本导致应用程序
- asp.net – Visual C#中事件的下拉列表在哪里?
- asp.net – 如何将ApplicationDbContext从Owin管
- asp.net – FormsAuthentication:是否安全?
- asp.net-mvc – ASP.NET MVC:如何创建一个可用的
- asp.net-mvc – MVC模式DDD模式
- asp.net-web-api2 – Swagger中的数据注释
- asp.net-mvc – ASP.NET MVC 3列表到IEnumerable
热点阅读
