知識
不管是網(wǎng)站,軟件還是小程序,都要直接或間接能為您產(chǎn)生價值,我們在追求其視覺表現(xiàn)的同時,更側(cè)重于功能的便捷,營銷的便利,運營的高效,讓網(wǎng)站成為營銷工具,讓軟件能切實提升企業(yè)內(nèi)部管理水平和效率。優(yōu)秀的程序為后期升級提供便捷的支持!
您當(dāng)前位置>首頁 » 新聞資訊 » 網(wǎng)站建設(shè) >
pb開發(fā)web應(yīng)用
發(fā)表時間:2016-11-22
發(fā)布人:葵宇科技
瀏覽次數(shù):83
說到pb開發(fā)web,一般是將pb發(fā)布成webservice,或者轉(zhuǎn)成webform,兩者都有很多限制,比如需要iis安裝維護(hù)麻煩,調(diào)試?yán)щy,經(jīng)常遇到莫名的錯誤,找不到資料,樣式調(diào)整困難等問題。
隨著互聯(lián)網(wǎng)技術(shù)的發(fā)展和APP的流行,WEB前端和APP開發(fā),越來越流行。要為前端和APP提供服務(wù)需要開發(fā)web應(yīng)用,如果能為熟悉的工具進(jìn)行開發(fā),可以大大節(jié)省開發(fā)時間,減少學(xué)習(xí)成本。SATRDA支持PB插件功能,通過插件,可以實現(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中的一個或多個,多個以;分隔
"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運行庫的dll名稱,這里是pb9的運行庫,其它版本請自行設(shè)置。比如12.5運行庫設(shè)置為"DLL": "pbvm125.dll"
"AppName":"plugin" 表示pb的application的名稱,一定要和創(chuàng)建的pb的名稱對應(yīng)起來
2. 創(chuàng)建PB工程
Pb工程和pbl創(chuàng)建和原來創(chuàng)建一樣,Application的name需要和配置的AppName一樣。創(chuàng)建一個Function名稱為satrda_service,如圖:
當(dāng)配置的url被調(diào)用時,會調(diào)用到該方法。
satrda_service方法代碼
//處理Http請求
//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.對象的名稱一定要是
方法的名稱一定要是satrda_service
2. 由于在不同的線程中,pb 對象不支持跨線程訪問,所以全局變量也會有多份,訪問的全局變量可能是不同的對象,不要依賴全局變量存儲公共信息。公共信息通過 session 或者數(shù)據(jù)庫存儲運行效率和資源消耗:
大家肯定要關(guān)心,這樣運行效率怎么樣。我測試了一組數(shù)據(jù),編寫一個用例測試500個線程,每個執(zhí)行20次,總共1W次Http請求服務(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編寫的插件
耗時:13.6718秒,平均每次1.367毫秒
用golang原生返回
耗時:13.3281秒, 平均每次1.332毫秒
可以看出兩者用時幾乎相同,通過比較內(nèi)存使用也幾乎相同。
下載地址:
http://download.csdn.net/detail/pcwe2002/9690008
最新版本下載,交流請到QQ群:345559891
相關(guān)案例查看更多
相關(guān)閱讀
- 排名
- 搜索排名
- 云南網(wǎng)站建設(shè)公司地址
- 搜索引擎優(yōu)化
- 模版信息
- 昆明網(wǎng)站制作
- 云南網(wǎng)站建設(shè)哪家強
- 海報插件
- 開發(fā)微信小程序
- 汽車報廢軟件
- 百度自然排名
- 專業(yè)網(wǎng)站建設(shè)公司
- 網(wǎng)絡(luò)公司
- 云南小程序制作
- 百度人工排名
- 汽車拆解系統(tǒng)
- 跳轉(zhuǎn)小程序
- 云南網(wǎng)站建設(shè)首頁
- 汽車回收管理
- 云南軟件定制
- 買小程序被騙
- 網(wǎng)站建設(shè)高手
- 網(wǎng)站開發(fā)哪家好
- 小程序被騙退款成功
- 小程序表單
- 網(wǎng)站優(yōu)化公司
- 云南建設(shè)廳網(wǎng)站
- 微分銷
- 云南小程序開發(fā)首選品牌
- 小程序