问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

nodeJs事件驱动和MVC的区别

发布网友 发布时间:2022-05-09 15:58

我来回答

1个回答

热心网友 时间:2022-04-22 13:30

nodejs是单进程单线程,但是基于V8的强大驱动力,以及事件驱动模型,nodejs的性能非常高,而且想达到多核或者多进程也不是很难(现在已经有大量的第三方mole来实现这个功能)。
这里主要不是介绍nodejs具体应用代码,而是想介绍一下事件驱动编程。
Dan York介绍了两种典型的事件驱动实例。
第一个例子是关于医生看病。
在美国去看医生,需要填写大量表格,比如保险、个人信息之类,传统的基于线程的系统(thread-based system),接待员叫到你,你需要在前台填写完成这些表格,你站着填单,而接待员坐着看你填单。你让接待员没办法接待下一个客户,除非完成你的业务。
想让这个系统能运行的快一些,只有多加几个接待员,人力成本需要增加不少。
基于事件的系统(event-based system)中,当你到窗口发现需要填写一些额外的表格而不仅仅是挂个号,接待员把表格和笔给你,告诉你可以找个座位填写,填完了以后再回去找他。你回去坐着填表,而接待员开始接待下一个客户。你没有阻塞接待员的服务。
第二个例子是快餐店点餐。
在基于线程的方式中(thread-based way)你到了柜台前,把你的点餐单给收银员或者给收银员直接点餐,然后等在那直到你要的食物准备好给你。收银员不能接待下一个人,除非你拿到食物离开。想接待更多的客户,容易!加更多的收银员!
当然,我们知道快餐店其实不是这样工作的。他们其实就是基于事件驱动方式,这样收银员更高效。只要你把点餐单给收银员,某个人已经开始准备你的食物,而同时收银员在进行收款,当你付完钱,你就站在一边而收银员已经开始接待下一个客户。在一些餐馆,甚至会给你一个号码,如果你的食物准备好了,就呼叫你的号码让你去柜台取。关键的一点是,你没有阻塞下一个客户的订餐请求。你订餐的食物做好的事件会导致某个人做某个动作(某个服务员喊你的订单号码,你听到你的号码被喊到去取食物),在编程领域,我们称这个为回调(callback function)。
相反的,Node.Js使用事件驱动模型,当web server接收到请求,就把它关闭然后进行处理,然后去服务下一个web请求。当这个请求完成,它被放回处理队列,当到达队列开头,这个结果被返回给用户。这个模型非常高效可扩展性非常强,因为webserver一直接受请求而不等待任何读写操作。(这也被称之为非阻塞式IO或者事件驱动IO)。
考虑下面这个过程:
你用浏览器访问nodejs服务器上的"/about.html"
nodejs服务器接收到你的请求,调用一个函数从磁盘上读取这个文件。
这段时间,nodejs webserver在服务后续的web请求。
当文件读取完毕,有一个回调函数被插入到nodejs的服务队列中。
nodejs webserver运行这个函数,实际上就是渲染(render)了about.html页面返回给你的浏览器。
好像就节省了几微秒时间,但是这很重要!特别是对于需要相应大量用户的web server。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
...和O3、1H216O和2H218O.下列有关说法正确的是( )A.35Cl和37Cl互称为... ...做环境分析指示物.下列说法中正确的是( )A.1H216O在相同 ...1H、2H、3H,氧也有3钟同位素:16O、17O、18O,那么水的种类最多有... 全身没力气、想睡觉怎么回事 我的乙肝检查单 请帮忙看看 帮忙看看乙肝检查报告 谢谢 万分感谢!好人一生平安 麻烦帮我看看乙肝两对半的结果 五冶集团由哪家控股 我的苹果6手机百度视频播放不了是什么原因? 高一怎么选科历生地 洛阳宫的建筑格局 15年的nodejs和现在nodejs有区别么 上海闵行区虹桥镇包括哪些街道,行政区划地图之类的哪里能看到? 饥荒中文版mod怎么安装 饥荒MOD怎么安装使用 如何强制注销? 汽车轮胎花纹有几种? 汽车更换轮胎用什么? 上海虹桥镇几个村 坦克的履带与铁车轮之间不打滑,为什么? 为什么有些在沼泽地上行驶的汽车前后轮要装上履带? 履带式雪地攀爬车玩具车怎么换轮胎 饥荒MOD怎么安装?游戏里面的模块是不是? 为什么iphone热点电脑搜不到 履带式装甲车辆有哪些优点? 冬天汽车轮胎该装履带合法吗 为什么汽车不设计成定车轮改变两边转速,就像坦克车一样去掉履带,装甲车是我说的这样转向的么? 轿车或suv的轮胎改装成履带,能通过年检吗? 请问履带车比起轮胎有什么优势? 三角履带轮的定义 npm 和 nodejs什么关系 nodejs和非阻塞io 和异步的区别 blf是什么牌子的衣服 同样源自V8引擎的phantomjs,nodejs和iojs有何区别 blemlfdkk是什么品牌 丹尼爱特和比音勒芬哪个好 云南旅游各景点的价格多少 香格里拉门票多少钱 眼膜出血严重怎么办,,,急 眼膜出血是什么问题? 香格里拉有哪些景点(具体点) 每个景点的票价是多少(具体点) 谢谢! 我的眼膜有不定期出血,是怎么回事? 云南有哪些景点,这些景点需要门票吗? 眼膜出血,怎么办. 眼膜出血 香格里拉好玩吗?自己去的话,门票多少?哪个季节去是最好的? 眼膜破了流血怎么办? 昨晚呕吐之后眼膜出血是怎么回事?谢谢! 眼膜出血冲血够轻伤吗 眼结膜经常出血是怎么回事