

前端精髓
每日为你推送


Node在出现之前,最习惯异步编程的程序员莫过于前端工程师了。前端编程算GUI编程的一种,其中充斥了各种Ajax和事件,这些都是典型的异步应用场景。
但事实上,异步早就存在于操作系统的底层。在底层系统中,异步通过信号量、消息等方式有了广泛的应用。意外的是,在绝大多数高级编程语言中,异步并不多见,疑似被屏蔽了一般。造成这个现象的主要原因也许令人惊讶:程序员不太适合通过异步来进行程序设计。
PHP这门语言的设计最能体现这个观点。它对调用层不仅屏蔽了异步,甚至连多线程都不提供。PHP语言从头到脚都是以同步阻塞的方式来执行的。它的优点十分明显,利于程序员顺序编写业务逻辑;它的缺点在小规模站点中基本不存在,但是在复杂的网络应用中,阻塞导致它无法更好地并发。
而在其他语言中,尽管可能存在异步的API,但是程序员还是习惯采用同步的方式来编写应用。在众多高级编程语言或运行平台中,将异步作为主要编程方式和设计理念的,Node是首个。
与Node的事件驱动、异步I/O设计理念比较相近的一个知名产品为Nginx。Nginx采用纯C编写,性能表现非常优异。它们的区别在于,Nginx具备面向客户端管理连接的强大能力,但是它的背后依然受限于各种同步方式的编程语言。但Node却是全方位的,既可以作为服务器端去处理客户端带来的大量并发请求,也能作为客户端向网络中的各个应用进行并发请求。
