我在网络编程方面不是很有经验,我还没有在Node.js中编写任何东西,只是对事件驱动的方法感到好奇.看起来确实不错.
本文解释了当我们使用基于线程的方法处理请求时可能发生的一些不好的事情,并且应该选择事件驱动的方法.在基于线程的情况下,收银员/线程一直困扰着我们,直到我们的食物/资源准备就绪.在事件驱动下,收银员将我们送到请求队列之外的某个地方,这样我们就不会在等待食物时阻止其他请求.要扩展基于阻塞线程,需要增加线程数.对我而言,这似乎是一个不正确使用线程/线程池的错误借口.
难道不能使用IHttpAsyncHandler正确处理?ASP.Net接收请求,使用ThreadPool并运行处理程序(BeginProcessRequest),然后在其中我们使用回调加载文件/数据库.那个线程应该可以自由处理其他请求.文件读取完成后,再次调用ThreadPool并执行剩余的响应.对我来说没有那么不同,那为什么不那么可扩展呢?
我所知道的基于线程的缺点之一是,使用线程需要更多内存.但只有这些,您才能享受多核的好处.我怀疑Node.js根本没有使用任何线程/核心.
因此,基于事件驱动vs基于线程(不要带"因为它是Javascript和每个浏览器..."的论点),有人可以指出我使用Node.js而不是使用Node.js的实际好处是什么现有技术?
这是一个很长的问题.谢谢 :)
在阅读了对该主题的许多回复之后,我发现很多不喜欢它的人都会引用滥用新关键字的可能性.我的问题是,什么样的滥用?怎么会这么严重地被滥用,以至于让人们激烈地不喜欢它呢?这只是纯粹主义吗?或者是否有一个我只是没有看到的真正陷阱?
与此方法async/await相比,将L2S与新C#5 关键字一起使用的最佳做法是什么?在网上找不到任何内容.
我有这样的功能:
public async Task<SomeViewModel> SampleFunction()
{
var data = service.GetData();
var myList = new List<SomeViewModel>();
myList.AddRange(data.select(x => new SomeViewModel
{
Id = x.Id,
DateCreated = x.DateCreated,
Data = await service.GetSomeDataById(x.Id)
}
return myList;
}
Run Code Online (Sandbox Code Playgroud)
我await没有工作,因为它只能用于使用async修饰符标记的方法或lambda .我在哪里放置async这个功能?
我正在尝试用asp.net mvc制作我的第一个web应用程序,包括带linq的远程数据库.所以我正在使用mvc的默认模板,我在AccountController中重新编写了使用linq实现注册用户的代码,现在我很有意思使用async.那么可以用异步处理linq吗?如果是的话,请告诉我如何做到这一点,这将对我非常有帮助.这是我通过linq注册的例子:
[AllowAnonymous]
public ActionResult Register()
{
return View();
}
//
// POST: /Account/Register
[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public ActionResult Register(RegisterViewModel model)
{
if (ModelState.IsValid)
{
using (DataBaseClassDataContext dc = new DataBaseClassDataContext())
{
Users tbUsers = new Users();
tbUsers.Login = model.Login;
tbUsers.Name = model.Name;
tbUsers.Surname = model.Surname;
tbUsers.Password = model.Password;
tbUsers.E_Mail = model.Email;
tbUsers.Knowledge = model.Knowledge;
dc.Users.InsertOnSubmit(tbUsers);
dc.SubmitChanges();
ModelState.Clear();
ViewBag.Message = "Successfully Registration Done";
}
}
// If we got this far, something failed, redisplay form
return View(model);
}
Run Code Online (Sandbox Code Playgroud) .net ×2
asp.net ×2
async-await ×2
c# ×2
.net-4.5 ×1
asp.net-mvc ×1
asynchronous ×1
c#-4.0 ×1
dynamic ×1
event-driven ×1
linq ×1
linq-to-sql ×1
node.js ×1
select ×1