ruby&python 从CGI 到 WSGI 到 Rack, 顺带Sinatra
来源:互联网 发布:mac系统dmg下载地址 编辑:程序博客网 时间:2024/05/18 01:18
本篇只是学习篇,我贴了一些阅读的学习链接,然后加上一些comments。
CGI
http://zh.wikipedia.org/wiki/%E9%80%9A%E7%94%A8%E7%BD%91%E5%85%B3%E6%8E%A5%E5%8F%A3
http://www.hudong.com/wiki/CGI
CGI让人感觉就是一个很简单的远程脚本调用。他的概念就是:我在服务器端有许多的脚本,这些脚本可以使用任何可执行语言编写(shell、ruby、perl。。。),然后用户通过url访问服务器,服务器会根据已有的url mapping找到对应的一个脚本,然后执行这个脚本。最后把脚本执行的结果按照既定的格式返回给用户。
由于脚本的多样化以及各种语言的强大功能,可以说CGI 能够快速开发,同时可以完成非常多的任务。
ps:最近刚在godaddy上面搞了一个host,发现其中使用了CGI,不过暂时不清楚他是怎么运作的。
WSGI
http://zh.wikipedia.org/wiki/Web%E6%9C%8D%E5%8A%A1%E5%99%A8%E7%BD%91%E5%85%B3%E6%8E%A5%E5%8F%A3
http://blog.ez2learn.com/2010/01/27/introduction-to-wsgi/
WSGI是python的cgi,这句话对了一半。WSGI是服务器(web服务器)与应用程序之间的一个低级别接口,以提供可移植web应用开发的共同点。他是基于CGI标准来实现的,所以他可以套接到CGI上面。
其实WSGI就是服务器与应用程序中间的一个中间件,他对于服务器来说,就是应用程序,对于应用程序来说就是服务器,他在中间做一个中转,当然会做一些处理,把request和response做上一些修改。下面 这张图很形象的说明了整个结构,就是利用了装饰模式的实现。
Rack
http://www.iteye.com/topic/605707
Rack就是Ruby的WSGI,它也是在服务器与应用程序提供一个中间件。可以截获用户发来的请求和应用程序以既定形式返回的数据,然后作出相应的处理。比如说可以拿到一个用户的请求,然后验证用户的访问url是否有效,或者验证用户的身份等。作为一个中间件,rack的主要作用体现在通用逻辑和实际业务逻辑的分离,我们可以在rack中加入通用的逻辑,而无需在实际业务程序中添加类似的功能。而同时由于rack标准的普遍性,我们可以在几乎所有的主流Ruby web框架中使用符合按照rack标准开发的模块。而同时rack也为开发者提供了大量的api来简化开发。
Sinatra
http://www.iteye.com/topic/632708
http://www.sinatrarb.com/intro-zh.html
Sinatra是一个为了用最小精力进行web开发的基于Ruby的领域专属语言,也就是说Sinantra是一种语言,但是这种语言只能在特定的领域(ruby web开发)中使用。一般的书写方式就是:
require 'sinatra'get '/' do 'Hello world!'end意思就是如果访问url是/,也就是根目录,那么返回Hello world!
对于Sinatra的第一个链接中的问题,可以说,楼主使用了Sinatra的书写方式开发了一个精简的程序,而后面一位则是使用rack中间件方式来开发,两者其实是使用了两个并不对立的技术开发的。我们显然可以同时使用rack和sinatra的。
- ruby&python 从CGI 到 WSGI 到 Rack, 顺带Sinatra
- 从Ruby 到Python
- Ruby off Rails---rack, sinatra and sequel 相关演讲视频
- 从 Java 到 Ruby
- 从php到Ruby
- ruby sinatra
- 从ruby到x86机器语言
- cgi, wsgi
- cgi,wsgi
- 从autohotkey到Python
- python从入门到..........
- 从java到python
- 从python到deeplearning
- ruby sinatra 简单例子
- Ruby 从入门到精通 译者序
- 【第一章 Web MVC简介】从CGI到Servlet到JSP到Model1再到Web MVC
- 浅谈cgi、wsgi、uwsgi 与 uWSGI Python uwsgiu WSGI nginx CGI
- 《Ruby从入门到精通》 2.10 Ruby历史和社区
- Qt图标
- Delphi类的静态属性及方法。
- 异步串行通讯和同步串行通讯
- GlusterFS:No such file or directory
- struts的bean标签
- ruby&python 从CGI 到 WSGI 到 Rack, 顺带Sinatra
- Linux kernel --- VirtualBox
- 专家讲解:Md5(base64)加密与解密实战
- web项目Spring框架下虚拟测试端编写
- 多个文件下使用全局变量
- lr_convert_string_encoding
- 用Mac和Linux命令行工具使用Windows Azure
- 二十六、JCreator使用初步
- IIS 使用域账户访问SQL 需要配置