Erlang的Web库和框架
ChicagoBoss,Nitrogen ,Zotontic,BeepBeep,ErlyWeb,Erlang Boss。
转自:http://bbs.chinaunix.net/thread-3764065-1-1.html
这里是我翻译的一篇国外的文章,原文地址:http://lenary.co.uk/erlang/2011/08/erlang-web-libraries/
我目前从事Erlang相关的开发工作,虽然Erlang算是一门小众语言,但是我很喜欢,就像一直喜欢perl一样。这里yy一下,Erlang和
Perl的年龄差不多,后者曾经在天朝很火,接触过linux的人几乎都听过,前者最近几年才开始出现在天朝的一些行业里,目前在特定的游戏领域很热门。
这个帖子主要是为了介绍Erlang相关的一些东西,让更多的人知道Erlang这门函数式开发语言。因为本人最开始是养猪的,英语不好,所以翻译的也不好,推荐直接看原文。
开始----》
Erlang的Web库和框架
09 Aug 2011
我的一个朋友最近忙着写一个内部的终端API,为这事儿,要我帮忙收集和比较一些Erlang的web库和框架,搞定之后,他建议我把文档的大纲发布到网上,和大家一起分享,所以,就有了这篇文章。
在此,感谢对该文提出指正和更新完善的所有人。
Yaws
Yaws是一个高效处理动态页面的web服务器,因为Yaw由应用模块【appmods(application modules)】构建,所以其中的appmods可以被我们构造的API替代。
Yaws的文档做的不错,重要的是能够植入到监督树的层次结构中(supervision,Erlang/OTP 设计原则里面的概念,简单来说,为了系统的稳定可靠,一个进程应当由另外的进程来监督和管理,这些监督进程构成了监督树)
Mochiweb
它应该算是在erlang的web相关的开发里面使用最多的,是个有自己独特之处的web服务器。
文档做的一般,有个”不好“(相对作者来说)的地方就是,mochiweb的很多模块使用参数化模块的语法特性(注:也叫抽象模块,erlang的一种编
程实践或者叫做语法规则,官方不再推荐使用,我也是在mochiweb里面第一次遇到这种写法),这样做的一个好处,使得mochiweb更容易嵌入到其
他的应用中。
Misultin
支持websockets,结构上与Mochiweb相似
可以去看Misultin的 wiki,有很多文档和非常棒的例子。
Cowboy
与mochiweb十分相似,相比之下:源码里面没有使用参数化模块的语法特性(看来作者对parameterized modules很头疼);使用单独的一个模块来处理所有的请求。
我认为Cowboy是唯一一个完整的二进制HTTP服务器,这样做的原因是为了提高性能和降低内存使用。
在这个项目的github上可以找到很多例子。
httpd
Erlang自带的,是inets应用的一部分。能满足我们大多数人的需要,重要的是,它是Erlang里唯一一个能够与WSGI和Rack-like这类中间件一起工作的库。
不幸的是,httpd只使用一个固定的回调函数,而且文档写的也不怎么滴。如果你需要用到httpd,而且你在写httpd的模块时又遇到问题,那么你可
以到Garrett
Smith开发的modlib的github上寻找帮助,modlib包装了httpd,并帮我们理清了各种各样的API,让我们知道它们究竟是干什么
的。
SimpleBridge
http库的适配器,SimpleBridge的目的就是“建立一个简单、标准的 Erlang HTTP 服务的接口”,这意味着你在实际操作时,如果用了SimpleBridge来包装你的web框架,你在需要做调整的时候会方便一点。
我觉得目前来说,SimpleBridge还不是一个足够好的http库适配器(链接器)。它通过管道(pipeline)来支持Mochiweb,Inets httpd ,Yaws,Misultin。
webmachine
基于mochiweb建立,让我们远离的底层那些语法,有自己的“工具箱”。
(注:下面这段话不好翻译,自己理解):
For Basic RPC over HTTP applications, this isn't what you'd use,
however, it makes lots of sense if the application is very
resource-orientated. As it's come out of Basho, I'd expect it to be well
written and documented.
Nitrogen
Nitrogen目的是建立一套功能性的用户接口,我对它处理服务端和客户端之间事件的来回发送的方式很感兴趣,介绍文档在 Introduction to Nitrogen(注:写的很给力)
每个页面介绍一个模块,模版是可选的。使用Nitrogen很容易构建一个API。
Zotonic
Zotonic是一个成熟的CMS,支持websockets和Comet。方便扩展,它站点上的文档也很多。
我能告诉你的是:Zotonic的底层虽然是由webmachine和nitrogen构建的,但是我们也可以定义自己的内部API,完全支持OAuth(注:开放式授权)
Chicago Boss
这个框架更接近Ruby的Rails。它的模块和大量内置的部署好的行为(hehaviour)助你的服务运行的更快。也许写自己的API有点困难,当然这取决于你要完成生么样的任务。
个人注:ibrowse。
Erlang的Web库和框架的更多相关文章
- Nodejs WEB开发常用库和框架
我在Nodejs的体系里也算泡了很久了,的确非常喜欢javascript和Nodejs. 在我看来,用nodejs做web开发有以下几个优点: Javascript作为一个语法异常简单的脚本语言,约束 ...
- python三大web框架Django,Flask,Flask,Python几种主流框架,13个Python web框架比较,2018年Python web五大主流框架
Python几种主流框架 从GitHub中整理出的15个最受欢迎的Python开源框架.这些框架包括事件I/O,OLAP,Web开发,高性能网络通信,测试,爬虫等. Django: Python We ...
- Django,Flask,Tornado三大框架对比,Python几种主流框架,13个Python web框架比较,2018年Python web五大主流框架
Django 与 Tornado 各自的优缺点Django优点: 大和全(重量级框架)自带orm,template,view 需要的功能也可以去找第三方的app注重高效开发全自动化的管理后台(只需要使 ...
- 2015年最全的移动WEB前端UI框架
目前,众多互联网公司APP都嵌入了大量的HTML5,移动端的开发越来越重视,HTML5的运用场景也越来越多了.在移动WEB开发的过程中,使用合适的移动WEB UI框架可以大大提升我们的开发效率.下面P ...
- WEB移动应用框架构想(转载)
iUI.jQTouch.WPTouch.PhoneGap.XUI.iWebkit.Rhodes.gwt-mobile…当我们已经开始惊 叹 web移动应用充斥着各种各样框架与类库的时候,其实各大web ...
- Web桌面应用框架2:著名的WEB桌面应用分析
前一篇文章里,分析了包括NW.js和electron这种纯JS框架在内的几种Web桌面应用开发方式,实际上还有一种最古老的方式,那就是嵌入WebView的方式. 嵌入WebView的方式和整个程序都是 ...
- web前端UI框架
分类:WEB前端 时间:2016年1月13日 目前,众多互联网公司APP都嵌入了大量的HTML5,移动端的开发越来越重视,HTML5的运用场景也越来越多了.在移动WEB开发的过程中,使用合适的移动WE ...
- 如果你不知道这11款常见的Web应用程序框架 就说明你out了
本文推荐了11款常见的Web应用程序框架,并列出了相关的学习资料和下载文档.如果对这些项目还不熟悉,就赶紧学起来吧~ Rails Rails是Ruby on Rails的简称,是一款开源的Web应用框 ...
- Web前端MVC框架的意义分析
前言: Web前端开发是Web技术发展中的一个重要组成部分,在传统的前端开发中由于外界因素的影响导致其开发形式呈现出简单化的特点,即以页面为主体来展示界面中的信息.然而随着科学技术的不断进步,Web前 ...
随机推荐
- mysql-5.7.20 版本的 mysql-group-replication 可用性测试报告
一.喜迎 mysql-5.7.20 事实上mysql-group-replication 功能是在mysql-5.7.17这个版本上引入的,它实现了mysql各个结点间数据强一致性, 这个也成为了我 ...
- [Mongodb] 借mongodb被入侵勒索事件,谈下Linux服务器端口安全问题
一.缘由: 最近几天Mongodb勒索事件甚嚣尘上:由于对外网开放访问并且没有开启授权机制被删库.远程拖库.勒索.接着又曝出Elasticsearch被勒索事件,缘由一样,Elasticsearch服 ...
- HTML的级联Select
系统开发中,经常遇到级联Select的状况,而级联的Select Option数据一般记录于DB,如果每次都重新写一套级联Select,工作将是繁琐滴... 一般来说,写一套级联的Select的几个步 ...
- . net 源代码调试
对于 .net framework 中的代码,光拿 Reflector 看是不够过瘾的,如果能够调试进去就好了! 其实,微软是提供了一套 sourcecode 的下载的: http://referen ...
- SVN开启端口监听,并设置开机启动
svnserve -d -r /home/svn/repo --listen-port=3690,svn仓库地址,及监听端口 vi svn_startup.sh,位置在/root下面编辑一个启动脚本, ...
- LeetCode: Sort Colors 解题报告
Sort ColorsGiven an array with n objects colored red, white or blue, sort them so that objects of th ...
- 一款基于jquery和css3的响应式二级导航菜单
今天给大家分享一款基于jquery和css3的响应式二级导航菜单,这款导航是传统的基于顶部,鼠标经过的时候显示二级导航,还采用了当前流行的响应式设计.效果图如下: 在线预览 源码下载 实现的代码. ...
- oracle 制定定时任务
本节摘要:本节介绍使用oracle自带的job来实现oracle定制定时执行任务. 1.引言 定制定时执行的任务有两种形式,系统级别和数据库级别, 从操作系统级别来讲, windows系统我们可以 ...
- 【Unity笔记】关于UGUI的根节点Canvas
创建UGUI物体时,会自动创建Canvas物体作为所有UGUI的根节点.该物体身上有个Canvas脚本,Render Mode渲染模式选项: Screen Space - Overlay:即使场景中没 ...
- 【分区助手】如何扩大C盘容量?
问题:C盘容量太小,想通过缩小其他盘(比如本例的F盘)来扩大C盘. 工具:分区助手 步骤: 1.下好分区助手后打开(该软件建议装在C盘),选择左侧的[扩大分区导向]. 2.选择下面那个,要先缩小F盘扩 ...