什么是機(jī)架?
關(guān)于Rack有很多談話,但除非你自己是框架作者,否則你很少看到它。那么什么是機(jī)架?作為應(yīng)用程序開發(fā)人員,為什么要關(guān)心它?
Rack Basics
機(jī)架是一種中間件。它位于web應(yīng)用程序和web服務(wù)器之間。它處理所有特定于服務(wù)器的API調(diào)用,以哈希傳遞HTTP請求和所有環(huán)境參數(shù),并將應(yīng)用程序的響應(yīng)返回給服務(wù)器。換句話說,您的應(yīng)用程序不需要知道如何與HTTP服務(wù)器交談,它需要知道如何與機(jī)架交談。
機(jī)架的優(yōu)點
這有許多優(yōu)點。首先,與機(jī)架交談很容易(如下所示)。其次,由于您只需要知道如何與Rack交談,Rack知道如何與許多不同的HTTP服務(wù)器交談,因此您的應(yīng)用程序?qū)⒃谌魏芜@些HTTP服務(wù)器上運(yùn)行。機(jī)架就像web應(yīng)用程序的通用適配器。
機(jī)架應(yīng)用程序本身并沒有什么特別之處。事實上,Rack API非常簡單,可以用一句話來描述:
Rack應(yīng)用程序是任何響應(yīng)call方法,采用單個哈希參數(shù)并返回包含響應(yīng)狀態(tài)代碼,HTTP響應(yīng)標(biāo)題和響應(yīng)體作為字符串?dāng)?shù)組的數(shù)組的數(shù)組的Ruby對象。
那就很多了。這聽起來太簡單了,或者至少太簡單而無用,但當(dāng)它真正涉及到它時,這就是你在與HTTP服務(wù)器交談時真正做的一切。
為什么Rack很重要?科學(xué)小知識ppt
但真正的問題是:為什么作為一名應(yīng)用程序員,你應(yīng)該關(guān)心機(jī)架?首先,理解您的框架如何運(yùn)作總是存在啟示。但更重要的是,您可以使用機(jī)架完成一些有用的事情。最重要的是:中間件。
現(xiàn)在,這聽起來有點奇怪。但是,應(yīng)用程序和機(jī)架之間的額外層可能是一件好事,并實現(xiàn)只會使應(yīng)用程序混亂的功能。這個中間件所做的只是將請求從機(jī)架接收,將其傳遞到您的應(yīng)用程序,獲得其響應(yīng),添加一些內(nèi)容或過濾它或沿著這些線路進(jìn)行操作,然后將響應(yīng)傳遞回機(jī)架。這可以用來實現(xiàn)非常有趣的小功能,如服務(wù)器不可知記錄器,請求安全檢查器,或者每次應(yīng)用程序返回404時都會通過電子郵件發(fā)送管理器的一些中間件。這些功能都不需要混淆您的應(yīng)用程序,它們可以作為帶機(jī)架的中間件實現(xiàn)。