Vely是一個為C語言程序員設(shè)計的框架含滴。它的工作機制是將簡單的語句預編譯到C語言中以提高性能痰哨。
當然胶果,它是免費開源軟件 (Free Open Source Software, 簡稱FOSS)。
Vely的創(chuàng)始人名叫Sergio Mijatovic斤斧,在Oracle核心工程部門工作了10多年早抠,在此之前曾在DARPA工作。
他創(chuàng)建Vely是為了能快速開發(fā)出比用純C語言寫出的更安全的后端應(yīng)用程序撬讽,尤其是 Web應(yīng)用程序蕊连,同時保持C的高性能。
快速上手 這里有個Hello World程序游昼,超級簡單
您將僅在幾分鐘內(nèi)從您自己的 FastCGI(Fast Common Gateway Interface甘苍, 快速通用網(wǎng)關(guān)接口,是一種讓交互程序與Web服務(wù)器通信的協(xié)議) 應(yīng)用程序服務(wù)器獲得一個網(wǎng)頁烘豌!
安裝 Vely
訪問 https://vely.dev/pkg/ 下載并安裝Vely载庭,進入頁面,我們可以看到這個頁面有很多的版本廊佩,基本上都是Linux的囚聚,這里面也有源碼倉庫地址、版本記錄标锄、許可證等信息靡挥。
然后進入任意一個頁面,它會有一個下載步驟的指導鸯绿,按著步驟走就行了跋破,當然你的服務(wù)器上需要有apt, dnf, zypper or pacman這樣的標準包才能下載,如果沒有執(zhí)行命令時會報錯的瓶蝴,沒有的話就裝一個毒返, 或者可以下載源碼自己編譯,很基礎(chǔ)的舷手,非常簡單拧簸。
在vim中閃閃發(fā)光
vim編輯器能突出顯示所有內(nèi)容并進行顏色編碼,這點很棒男窟。 那我們接下來就這樣做吧:
vv -m
Hello World
創(chuàng)建代碼所在的目錄:
mkdir hello
cd hello
使用vf命令創(chuàng)建應(yīng)用程序:
sudo vf -i -u $(whoami) helloworld
創(chuàng)建 hello.vely文件:
vi hello.vely
將下面這段代碼粘貼進去:
#include "vely.h"
void hello()
{
out-header default
@Hello World!
}
用vv命令編譯應(yīng)用:
vv -q
大功告成∨璩啵現(xiàn)在,您可以啟動FastCGI應(yīng)用程序服務(wù)器了:
vf helloworld
您可以從Apache歉眷、Nginx或任何其他web服務(wù)器連接到它牺六。在此之前,您可以通過命令行模擬web服務(wù)器發(fā)送反向代理請求來測試你的服務(wù)器
export REQUEST_METHOD=GET
export QUERY_STRING="req=hello"
cgi-fcgi -connect /var/lib/vv/helloworld/sock/sock /
不出所料汗捡,您將獲得一個響應(yīng):
Content-type: text/html; charset=utf-8
Cache-Control: max-age=0, no-cache
Pragma: no-cache
Status: 200 OK
Hello World!
您得到了web客戶端(如瀏覽器)可以解析的響應(yīng)淑际!
從瀏覽器查看
現(xiàn)在,您可以嘗試 Apache 或 Nginx,必須保證其中一種服務(wù)器運行春缕,如果是Nginx盗胀,在Debian系統(tǒng)可以執(zhí)行以下命令
sudo apt install nginx
或者Fedora系統(tǒng):
sudo dnf install nginx
然后需要打開nginx的配置,Ubuntu系統(tǒng)是這樣的:
sudo vi /etc/nginx/sites-enabled/default
RedHat系統(tǒng)是這樣的:
sudo vi /etc/nginx/nginx.conf
Nginx在各種Linux系統(tǒng)上的安裝和配置的方法就不一一列舉了锄贼,網(wǎng)上一搜一大堆票灰,等安裝好后我們來看看該怎么配置。
打開nginx.conf文件后找到server{}代碼塊宅荤,然后在server_name這個屬性后另起一行將下面的代碼直接粘貼進去
location /helloworld {
include /etc/nginx/fastcgi_params;
fastcgi_pass unix:///var/lib/vv/helloworld/sock/sock;
}
它會告訴你的Nginx服務(wù)器你的FastCGI應(yīng)用服務(wù)器監(jiān)聽的是哪個端口屑迂,在這個例子里是一個socket文件,當然也能配置成一個TCP端口膘侮,然后需要重啟Nginx服務(wù)器:
sudo systemctl restart nginx
假設(shè)你是在你本地機子上跑的屈糊,打開瀏覽器把下面的url復制粘貼并訪問
http://127.0.0.1/helloworld?req=hello
你會見到Hello World的榛!如果不是本地跑就換成相應(yīng)的IP或主機名琼了,如果沒有瀏覽器,可以使用CURL來測試:
curl -s "http://127.0.0.1/helloworld?req=hello"
定制你的Hello World程序
想稍微修改一下嗎夫晌? 非常簡單雕薪。 在這里,您需要先創(chuàng)建一個有更多字的字符串晓淀,然后將其輸出所袁。 編輯 hello.vely,然后復制以下:
#include "vely.h"
void hello()
{
out-header default
num x = 3;
char *y = "have a nice day";
write-string define mystr
@Hello World <<p-num x>> times and <<p-out y>>!
end-write-string notrim
p-out mystr
}
再次編譯它:
vv -q
你的應(yīng)用服務(wù)器會自動重新加載一個新的可執(zhí)行文件凶掰,所以你可以馬上再試一次燥爷,結(jié)果是:
Hello World 3 times and have a nice day!
命令行
作為應(yīng)用程序服務(wù)器運行的代碼同時也支持從命令行運行。 讓我們看看如何從命令行實現(xiàn):
export REQUEST_METHOD=GET
export QUERY_STRING="req=hello"
export VV_SILENT_HEADER=yes
/var/lib/vv/bld/helloworld/helloworld
你會得到相同的輸出懦窘,但沒有標題前翎,如果你跳過設(shè)置 VV_SILENT_HEADER,你也會得到標題畅涂。
還能干啥?
你猜對了港华,除了Hello World你可以用Vely做更多的事情。事實上午衰,還有很多很多立宜。
首先,Vely的所有語句都有自動內(nèi)存分配和垃圾收集器臊岸。這使它更安全橙数,因為它有助于避免內(nèi)存泄漏問題。
您可以輕松訪問MariaDB/mySQL帅戒、PostgreSQL和SQLite數(shù)據(jù)庫商模,創(chuàng)建和訪問包括上傳和下載文件在內(nèi)的web服務(wù),處理GET、POST或cookie等web內(nèi)容施流。您可以安全輕松地編寫復雜字符串响疚。您可以加密、編碼瞪醋、執(zhí)行正則表達式搜索和替換忿晕、使用文件、執(zhí)行程序银受。
試試將Vely用于您能想到的任何后端服務(wù)器應(yīng)用程序或其他程序吧
有很多示例和簡潔的文檔践盼,可以幫助您快速使用Vely。
更多資訊
作者簡介:Vely的創(chuàng)始人名叫Sergio Mijatovic宾巍,在Oracle核心工程部門工作了10多年咕幻,在此之前曾在DARPA工作。
作者動態(tài):https://dev.to/velydev
Vely官網(wǎng):https://vely.dev/