到目前为止,我对服务器上只有PHP非常有信心。但是,我有一些额外的时间,我想学习一种新的服务器语言。
我知道PHP与新的公平和线程服务器技术相比有多慢。我一直在调查:
NodeJS:用JavaScript编写,编译 并通过谷歌的V8动力 铬。
RingoJS:用JavaScript编写,运行 在Mozilla的Rhino Java下 发动机。
misultin:Erlang,不太了解,但是 似乎超级快: http://www.ostinelli.net/a-comparison-between-misultin-mochiweb-cowboy-nodejs-and-tornadoweb/mochiweb:Erlang也是如此 被接受为快。
龙卷风:基于Python,似乎 成为最慢的。
我想知道我应该学什么语言。如果我使用RingoJS / NodeJS,那么我真的不需要学习。但是,我对Erlang或Python一无所知。如果我的目标是能够构建高端Web服务器(软件/站点),我应该考虑学习吗?
一般而言,哪种语言和图书馆在为高性能网站提供支持方面拥有最光明的未来?当然我可以用C ++完成所有工作,但这似乎很耗时,而且我认为Python和Erlang更容易。
带有线程的ASP.NET看起来很痛苦,所以,我想我会离开它。那么Twisted(Python)呢?还是Eventmachine(Ruby)?答案 0 :(得分:7)
高性能,高并发性
您将需要一个异步eventloop驱动的HTTP服务器。这是最重要的事情。你甚至可以使用PHP& nginx,但这类似于将ASP.NET与ASyncHTTPRequests一起使用
Mochiweb,misultin,Tornade和node.js都满足于此。
我个人推荐node.js,因为它太棒了!
<强>了Mochiweb:强>
mochiweb似乎缺乏我能看到的文档。它确实有WebMachine。<强> ringoJS:强>
对于在node.js上使用ringojs,我无法给你一个好的论据。 node.js社区规模更大,拥有更多支持,更有可能成为稳定的行业领导者。
其他强>
我还建议使用备用异步Web服务器manos [C#],eventmachine [Ruby]和twisted [Python]。
<强> misultin:强>
这是非常值得关注的,因为Erlang是一种用于大规模并发的优秀语言,而且它也有合理的文档。
<强>结论强>
Erlang和node.js的优点是服务器和所有IO本身都是非阻塞的,并且是开箱即用的,因此我会考虑这两个。
如果您希望以高度并发的语言高度扩展服务器,那么选择用Erlang编写的misultin / mochiweb。 Erlang只是在扩展部门获胜。学习Erlang的一个好处就是你学习了功能范例。
如果您想要一个具有活跃增长社区的异步网络服务器,请在pick node.js中进行活跃的第三方库开发。使用节点的一个好处就是您熟悉JavaScript。
答案 1 :(得分:5)
如果我使用RingoJS / NodeJS,那么 我真的不需要 学习。 ...如果我的目标是能够构建高端Web服务器(软件/站点),我应该考虑学习吗?
我想说在软件工程中没有nothing I actually need to learn
这样的东西。即使有人熟悉世界前端的JS,你也需要学习很多东西和技术来构建高质量的服务器端。如果您选择非JS框架,那么您将需要投入更多时间来掌握其他语言。例如,就语法糖而言,每种语言都可以提供特定的优势,但我认为你应该坚持最适合你的语言。
一般来说,哪种语言和库 有最光明的未来 为高性能网站提供支持?
我认为对这个问题的回答是非常主观的。 Node.js在实时网络和可扩展的网络程序中逐渐受到欢迎和吸引力,但很难说“一般”未来的位置。
带有线程的ASP.NET似乎很痛苦, 所以,我想我会离开它。
您可以尝试查看manos这类似于.NET世界的node.js。
那么Twisted(Python)呢?要么 Eventmachine(Ruby)?
答案 2 :(得分:4)
Google的Go值得考虑。它是干净且富有表现力的代码,具有内置的并发性和可与C相媲美的性能。
这是Go的网络问候世界:
package main
import (
"fmt"
"http"
)
func handler(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Hi there, I love %s!", r.URL.Path[1:])
}
func main() {
http.HandleFunc("/", handler)
http.ListenAndServe(":8080", nil)
}
修改强>
Haskell也值得一提。它是一种纯函数式语言,benchmarks非常好。但是像大多数语言一样,很容易遇到同步库。
缺少同步库是node.js
的最佳部分之一答案 3 :(得分:2)
尝试Python + Pyramid,它比Tornado更强大。 使用这一对,您将编写快速且非常小的代码。