知識(shí)
不管是網(wǎng)站,軟件還是小程序,都要直接或間接能為您產(chǎn)生價(jià)值,我們?cè)谧非笃湟曈X表現(xiàn)的同時(shí),更側(cè)重于功能的便捷,營銷的便利,運(yùn)營的高效,讓網(wǎng)站成為營銷工具,讓軟件能切實(shí)提升企業(yè)內(nèi)部管理水平和效率。優(yōu)秀的程序?yàn)楹笃谏?jí)提供便捷的支持!
您當(dāng)前位置>首頁 » 新聞資訊 » 網(wǎng)站建設(shè) >
pb開發(fā)web應(yīng)用
發(fā)表時(shí)間:2016-11-22
發(fā)布人:葵宇科技
瀏覽次數(shù):83
說到pb開發(fā)web,一般是將pb發(fā)布成webservice,或者轉(zhuǎn)成webform,兩者都有很多限制,比如需要iis安裝維護(hù)麻煩,調(diào)試?yán)щy,經(jīng)常遇到莫名的錯(cuò)誤,找不到資料,樣式調(diào)整困難等問題。
隨著互聯(lián)網(wǎng)技術(shù)的發(fā)展和APP的流行,WEB前端和APP開發(fā),越來越流行。要為前端和APP提供服務(wù)需要開發(fā)web應(yīng)用,如果能為熟悉的工具進(jìn)行開發(fā),可以大大節(jié)省開發(fā)時(shí)間,減少學(xué)習(xí)成本。SATRDA支持PB插件功能,通過插件,可以實(shí)現(xiàn)返回網(wǎng)頁、json,上傳下載文件,把業(yè)務(wù)邏輯放到服務(wù)器執(zhí)行等功能。
插件使用非常簡單,配置完成后插件就可以以多線程高效執(zhí)行了。
配置插件
將示例中的plugins文件夾拷備到satserver.exe相同目錄。
1. 修改plugins目錄下config.cfg,
如
{
"pbtest": {
"Dir": "test",
"Method":"Get;Post",
"URL":"/pbtest/**",
"Type": "pb",
"DLL":"pbvm90.dll",
"AppName":"plugin"
}
}
參數(shù)說明:
"Dir":"test" 表示插件的目錄,所有插件都在plugins目錄下面,這里值為”test”代表插件在plugins目錄下的test目錄
"Method":"Get;Post" 表示http調(diào)用的方法,可以為Get,Post,Any,Put,Delete中的一個(gè)或多個(gè),多個(gè)以;分隔
"URL": "/pbtest/**" 表示響應(yīng)以http://ip:port/pbtest開頭的url。這里"/pbtest/**"可以響應(yīng)http://127.0.0.1:5555/pbtest/test.go,也可以響應(yīng)http://127.0.0.1:5555/pbtest/tttt.go等。如果設(shè)置為"URL": "/pbtest/test.go"則只響應(yīng)http://127.0.0.1:5555/pbtest/test.go
"Type": "pb" 表示調(diào)用PB插件
"DLL": "pbvm90.dll" 表示pb運(yùn)行庫的dll名稱,這里是pb9的運(yùn)行庫,其它版本請(qǐng)自行設(shè)置。比如12.5運(yùn)行庫設(shè)置為"DLL": "pbvm125.dll"
"AppName":"plugin" 表示pb的application的名稱,一定要和創(chuàng)建的pb的名稱對(duì)應(yīng)起來
2. 創(chuàng)建PB工程
Pb工程和pbl創(chuàng)建和原來創(chuàng)建一樣,Application的name需要和配置的AppName一樣。創(chuàng)建一個(gè)Function名稱為satrda_service,如圖:
當(dāng)配置的url被調(diào)用時(shí),會(huì)調(diào)用到該方法。
satrda_service方法代碼
//處理Http請(qǐng)求
//as_url
blob lb_url,lb_ctrl,lb_body,lb_buf
String ls_info,ls_value
long i,ll_len
//Sleep(10)
ResponseHeaderSet(al_context,"Content-Type","text/html; charset=utf-8")
lb_ctrl = blob("~t~t")
lb_url = blob(ls_info)
ls_value = space(255)
RequestHeaderGet(al_context,"Accept-Encoding",ls_value,255)
lb_url += blob(trim(ls_value)) + lb_ctrl
//ls_value = space(255)
//RequestFormValue(al_request,"name",ls_value,255)
//lb_url += blob(trim(ls_value)) + lb_ctrl
ResponseWrite(al_context,lb_url,len(lb_url))
//讀取提交的內(nèi)容
lb_buf = blob(space(1024))
do
ll_len = RequestRead(al_context,lb_buf,1024)
if ll_len > 0 then
lb_body += blobMid(lb_buf,1,ll_len)
end if
loop while ll_len <> -1
ResponseWrite(al_context,lb_body,len(lb_body))
瀏覽器調(diào)用結(jié)果:
開發(fā)注意:
1.對(duì)象的名稱一定要是
方法的名稱一定要是satrda_service
2. 由于在不同的線程中,pb 對(duì)象不支持跨線程訪問,所以全局變量也會(huì)有多份,訪問的全局變量可能是不同的對(duì)象,不要依賴全局變量存儲(chǔ)公共信息。公共信息通過 session 或者數(shù)據(jù)庫存儲(chǔ)運(yùn)行效率和資源消耗:
大家肯定要關(guān)心,這樣運(yùn)行效率怎么樣。我測試了一組數(shù)據(jù),編寫一個(gè)用例測試500個(gè)線程,每個(gè)執(zhí)行20次,總共1W次Http請(qǐng)求服務(wù)端通過插件方式和原生golang的方式返回簡單的hello world和http頭
pb插件代碼
ResponseHeaderSet(al_context,"Content-Type","text/html; charset=utf-8")
lb_body = blob("hello world!")
ResponseWrite(al_context,lb_body,len(lb_body))
用pb編寫的插件
耗時(shí):13.6718秒,平均每次1.367毫秒
用golang原生返回
耗時(shí):13.3281秒, 平均每次1.332毫秒
可以看出兩者用時(shí)幾乎相同,通過比較內(nèi)存使用也幾乎相同。
下載地址:
http://download.csdn.net/detail/pcwe2002/9690008
最新版本下載,交流請(qǐng)到QQ群:345559891
相關(guān)案例查看更多
相關(guān)閱讀
- 網(wǎng)站建設(shè)首選公司
- 小程序被騙
- 云南做百度小程序的公司
- 網(wǎng)站建設(shè)公司哪家好
- 云南網(wǎng)站建設(shè)哪家好
- 小程序開發(fā)費(fèi)用
- 汽車報(bào)廢回收
- 智慧農(nóng)貿(mào)市場
- 小程序被攻擊
- 網(wǎng)站搭建
- 昆明做網(wǎng)站建設(shè)的公司排名
- 排名
- 云南網(wǎng)站開發(fā)哪家好
- 云南網(wǎng)站建設(shè)專業(yè)品牌
- 云南建設(shè)廳網(wǎng)站首頁
- 云南花農(nóng)小程序
- 云南網(wǎng)站建設(shè)服務(wù)公司
- 南通小程序制作公司
- 迪慶小程序開發(fā)
- 網(wǎng)絡(luò)公司
- 云南網(wǎng)站建設(shè)外包
- 支付寶小程序被騙
- 云南電商網(wǎng)站建設(shè)
- 云南小程序開發(fā)推薦
- 云南小程序開發(fā)課程
- 服務(wù)器
- 網(wǎng)站建設(shè)列表網(wǎng)
- 云南小程序開發(fā)制作公司
- 云南網(wǎng)站建設(shè)公司排名
- 云南網(wǎng)站建設(shè)高手