HarmonyOS开发者限时福利来啦!最高10w+现金激励等你拿~ 了解详情
写点什么

Rack:处理 HTTP 请求更简单

  • 2008-04-15
  • 本文字数:1010 字

    阅读完需:约 3 分钟

Rack 提供了 Web 服务器和 Ruby 开发框架之间的接口。它将框架编写者从为每个 Web 服务器单独编写一个处理模块的繁重负担中解脱出来,可以节省大量重复劳动。

Rack 相当易用,如下示例便可以让你创建一个运行于 Mongrel 上的极简应用处理器:

<pre id="a7yh">require 'rack'<br id="twiq"></br>app = lambda { |env| [200, {"Content-Type" => "text/plain"}, ['Hello World!']] }<br id="qsr7"></br>Rack::Handler::Mongrel.run(app, :Port => 3000)参数 env 包括一个环境变量和请求参数的散列。代码块的返回值由带有三个元素的数组组成:HTTP 状态码、响应头和响应体。

Rack 的创始人 Christian Neukirchen 为 InfoQ 分享了一些 Rack 的历史:

起初,我对 Ruby 的 Web 开发框架的状态感觉不太舒服,于是有了自己写的打算。正当这时, web.py 发布了,我很喜欢它那么精致而又易于维护。所以我开始编写自己的框架,但是没有成功,因为我写了很多计划外的东西,例如 Cookie 解析等等。实际上我从其他的项目中拷贝了一些代码过来,但是要做的工作依然令人厌烦。于是这个框架作废了。后来,我了解到了 Python 的 Nevow ,并试图去模仿它开发一些东西。但是就在我刚开始开发的时候,我发现我正在为不同的服务器重写辅助方法(helper)和适配器(adapter)。在深入的了解 Python 框架之时,我偶然发现了 WSGI ,我阅读它、喜欢它、简化它,并最终完成了 Rack 的原形。我重新组织了已写代码,并基于 Python Paste 的结构模块化,很快 Rack 0.1 就已经完成了。

当 Rack 可用之时,我依然没有喜欢的框架,所以我开发了 Coset ,这也是我最近一直在用的框架。它的设计灵感来自于 Camping web.py RESTlet

已经有相当多的框架提供了对 Rack 的支持

* Camping (包含在 Rack 发行版中)
\* Coset
\* Halcyon
\* Maveric
\* Merb
\* Mack
\* Racktools::SimpleApplication
\* Ramaze
\* Rails (第三方,与 thin 协同交付)
\* Sinatra
\* Vintage

Rack 可以和框架协同使用。例如,如果想简便而快速的处理一个确定的请求,Rack 的 Rack::Cascade 可以将几个应用级联起来。这篇 Ezra Zygmuntowicz 的博客讲解了如何通过 Rack 实现文件上传,而不需要访问整个 merb 栈。

接下来,Christian 计划稳定其规范,为 1.0 发布版做准备。

要了解更多 Rack 的信息,请访问 Rack 的官方网站。希望了解更深入的信息的话,这里还有一篇关于 Rack 的内部工作机制的 Euruko 07 论文

查看英文原文: Rack: HTTP request handling made easy

2008-04-15 21:511169
用户头像

发布了 80 篇内容, 共 19.9 次阅读, 收获喜欢 5 次。

关注

评论

发布
暂无评论
发现更多内容

高性能利器:CDN我建议你好好学一下!

九灵

Java 分布式 微服务 CDN

华为云GaussDB首次亮相2021服贸会,为数字人民币提供坚实数据底座

华为云数据库小助手

金融科技 数字经济 GaussDB 华为云数据库

数据库是什么意思?有什么用?有哪些类型?

行云管家

数据库 运维 IT

阿里内部架构解密:网络+分布式+RPC+消息中间件+微服务

Java~~~

Java spring 架构 面试 微服务

打爆怪兽 一起来养猪 养蜂人 幸福饭店

游戏开发_软件开发

软件 App 开发 游戏 语音合成

在同一台计算机中运行多个MySQL服务

Java 数据库 后端 msyql

把工作讲给家人听

FunTester

读书笔记 FunTester 奈非文化手册 办公效率 居家工作

别慌!阿里专家破SpringBoot:入门+基础+进阶+项目

Java~~~

Java 数据库 架构 面试 Spring Boot

无敌!阿里巴巴开源落地可实操项目:网约车+咚宝商城+英雄传说

Java~~~

Java 架构 面试 项目 架构师

如何在MacOS上无缝切换Win11和MacOS?

Zhendong

MacBook m1 Parallels

“小巨人”的转型烦恼,百度智能云能否解压?

百度开发者中心

人工智能 企业资讯 中小企业

必杀器!鹅厂首推569页Netty+Redis+ZK+高并发

Java~~~

Java redis 架构 面试 Netty

收藏!阿里P9耗时28天,总结历年亿级活动高并发系统设计手册

Java~~~

Java 架构 面试 高并发 系统

「技术点串烧」☕【Java 技术指南】「难点-核心-遗漏」Java线程状态流转及生命周期的技术指南!

洛神灬殇

Java 线程 Thread 9月日更

令我入职阿里的750页微服务架构深度解析文档有何神秘之处?

Java 编程 架构 面试 架构师

狂刷《Java权威面试指南(阿里版)》,冲击“金九银十”有望了

Java 编程 架构 面试 程序人生

百度短视频推荐系统的目标设计

百度Geek说

架构 后端 推荐系统 短视频

横空出世!复盘B站面试坑我最深的Java并发:JDK源码剖析

Java~~~

Java 源码 架构 jdk 面试

你的 SQL 还在回表查询吗?快给它安排上覆盖索引

Java MySQL 数据库 后端

为什么UI自动化难做?—— 关于Selenium UI自动化的思考

LigaAI

测试 UI自动化

一文搞懂音视频开发技术点及职业发展方向

赖猫

c++ android 音视频

架构训练营 模块一

Leach Sun

低代码的5个误区,你踩雷了吗?

禅道项目管理

低代码 开发

微信或推出聊天记录云备份付费服务,你的微信记录值多少钱?

郑州埃文科技

云服务 微信聊天 数据风险管理

springboot项目集成docker

try catch

Docker Dockerfile springboot

精品!阿里P7爆款《K8s+Jenkins》技术笔记,高质量干货必收藏

Java 程序员 架构 面试 k8s

安卓工控主板双网口有什么用途?

双赞工控

安卓主板 工控主板

阿里内部最新“SpringCloudAlibaba学习笔记”出炉

Java 阿里巴巴 架构 面试 微服务

浅析 DDD 领域驱动设计

牧小农

DDD 领域驱动

C/S结构是什么意思?有什么优点?

行云管家

数据库 运维 IT

太强了!京东首席架构师深邃洞察:服务化+云原生+微服务

Java~~~

Java 架构 面试 云原生 架构师

Rack:处理HTTP请求更简单_Ruby_Mirko Stocker_InfoQ精选文章