天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

利用GoAhead構(gòu)建嵌入式web應(yīng)用

  1 簡(jiǎn)介

  廉價(jià)的硬件,功能強(qiáng)大的32操作系統(tǒng),以及無(wú)處不在的因特網(wǎng),它們一起促成了網(wǎng)絡(luò)應(yīng)用和設(shè)備的飛速增長(zhǎng)。大量的設(shè)備連接到網(wǎng)絡(luò)上,于是人們希望通過(guò)一種通用、熟悉、快捷的方式來(lái)訪問(wèn)和控制它們。嵌入式web服務(wù)器正好迎合了這種需求,它們嵌入在網(wǎng)絡(luò)設(shè)備之中,使用標(biāo)準(zhǔn)的瀏覽器就可以遠(yuǎn)程訪問(wèn)和控制它們。

  然而,并不是所有的web服務(wù)器都可以擔(dān)當(dāng)如此重任,我們需要的是一個(gè)強(qiáng)大,安全,標(biāo)準(zhǔn)的,而且最好是久經(jīng)考驗(yàn)的嵌入式web服務(wù)器。這里將要介紹的GoAhead嵌入式web服務(wù)器能夠滿足所有這些需求,包括西門(mén)子,霍尼韋爾,惠普等大型企業(yè)都在使用GoAhead。

  2 嵌入式web服務(wù)器的要求

  2.1 易于與設(shè)備集成

  易于與設(shè)備集成包含兩個(gè)方面的意思,其一是將Web應(yīng)用程序集成到實(shí)時(shí)操作系統(tǒng),其二是可以在Web應(yīng)用中輕松訪問(wèn)硬件功能。由于GoAhead是開(kāi)放源代碼的,因此這一點(diǎn)不難做到。

  2.2 支持將Web頁(yè)面存儲(chǔ)在ROM中

  許多嵌入式系統(tǒng)并沒(méi)有文件系統(tǒng),因此有必要將web頁(yè)面保存到ROM中。GoAhead支持對(duì)web頁(yè)面進(jìn)行編譯并將它們鏈接到最終的可執(zhí)行文件中。

  2.3 加密和用戶管理

  GoAhead服務(wù)器支持使用SSL進(jìn)行數(shù)據(jù)加密和認(rèn)證。同時(shí),它也支持摘要認(rèn)證機(jī)制,一種總是加密密碼的更安全的認(rèn)證機(jī)制。用戶管理功能允許不同的用戶具有不同級(jí)別的訪問(wèn)權(quán)限。

  除了上述要求之外,是否能夠快速、方便的生成動(dòng)態(tài)頁(yè)面是衡量一個(gè)嵌入式web服務(wù)器的重要指標(biāo)。GoAhead提供了多種方法編寫(xiě)動(dòng)態(tài)頁(yè)面,包括ASP過(guò)程、GoForms過(guò)程和embedded JavaScript。GoAhead主要利用ASP過(guò)程動(dòng)態(tài)獲取系統(tǒng)信息然后顯示在頁(yè)面上,GoForms過(guò)程則主要用來(lái)處理用戶指令,例如控制設(shè)備和修改配置等。下面以一個(gè)動(dòng)態(tài)顯示系統(tǒng)當(dāng)前正在運(yùn)行的進(jìn)程信息的小型web應(yīng)用程序?yàn)槔?,闡述如何利用GoAhead構(gòu)建嵌入式web應(yīng)用程序,特別是ASP和GoForms過(guò)程的使用方法。

  3 動(dòng)態(tài)頁(yè)面支持

  在嵌入式設(shè)備中,大部分web頁(yè)面都是動(dòng)態(tài)生成的。生成動(dòng)態(tài)頁(yè)面的方法主要有兩種,通過(guò)C代碼生成HTML標(biāo)簽和在HTML頁(yè)面中嵌入表達(dá)式標(biāo)簽。直接通過(guò)C代碼生成頁(yè)面的優(yōu)點(diǎn)是靈活,但是卻犧牲了友好性,因?yàn)椴坏介_(kāi)始運(yùn)行程序的最后一刻,你不可能知道這個(gè)頁(yè)面看起來(lái)會(huì)是個(gè)什么樣子。相比之下,第二種方法更加直觀,你可以使用你所喜歡的工具以所見(jiàn)即所得的方式編輯頁(yè)面,在必要的地方添加占位符,運(yùn)行時(shí)它們會(huì)被動(dòng)態(tài)產(chǎn)生的數(shù)據(jù)代替。GoAhead完全支持這兩種方式。

  為了方便的創(chuàng)建具有高度交互性的動(dòng)態(tài)網(wǎng)頁(yè),GoAhead提供了ASP過(guò)程和GoForms過(guò)程兩種武器。它們實(shí)際上都與定義在服務(wù)器端的某個(gè)C函數(shù)綁定在一起,只是分工不同,ASP過(guò)程用來(lái)生成顯示在頁(yè)面中的動(dòng)態(tài)數(shù)據(jù),而GoForms過(guò)程則用來(lái)處理用戶輸入和修改設(shè)置,它們一起構(gòu)成了GoAhead的核心。

  3.1 ASP過(guò)程

  ASP最初用于IIS中,它是微軟開(kāi)發(fā)的生成動(dòng)態(tài)Web頁(yè)面的服務(wù)器端技術(shù)?,F(xiàn)在已經(jīng)被移植到包括GoAhead的各種平臺(tái)中,使用ASP的網(wǎng)頁(yè)的后綴一般為“.ASP”。為了在Web頁(yè)面中嵌入ASP腳本,只需使用特殊的標(biāo)簽“<%” 和 “%>”將腳本包裹起來(lái)。之所以使用ASP標(biāo)簽?zāi)康氖菫榱讼蛴脩麸@示動(dòng)態(tài)內(nèi)容,例如系統(tǒng)進(jìn)程信息等。因?yàn)閯?dòng)態(tài)內(nèi)容實(shí)際上是在執(zhí)行特定的C函數(shù)生成的,所以需要將web頁(yè)面中的ASP標(biāo)簽與特定的C函數(shù)聯(lián)系在一起。一般,整個(gè)過(guò)程大致可以分成以下三個(gè)步驟:

  1. 設(shè)計(jì)web頁(yè)面,動(dòng)態(tài)內(nèi)容使用特定的ASP過(guò)程名替代,也稱其為一個(gè)占位符。

  2. 在某個(gè).c文件中定義與ASP過(guò)程對(duì)應(yīng)的C函數(shù)

  3. 在main.c文件中的initWebs函數(shù)中使用websASPDefine注冊(cè)ASP過(guò)程

  以清單1中的<% UpdateProcInfor(); %>標(biāo)簽為例,此標(biāo)簽的目的是為了顯示系統(tǒng)當(dāng)前正在運(yùn)行的進(jìn)程的信息。獲取進(jìn)程信息實(shí)際上是由位于ui.c中的UpdateProcInfo函數(shù)完成的,詳見(jiàn)清單2,它負(fù)責(zé)獲取系統(tǒng)進(jìn)程信息,并格式化為HTML輸出。清單3中的websASPDefine函數(shù)將<% UpdateProcInfor(); %>標(biāo)簽與UpdateProcInfo函數(shù)關(guān)聯(lián)起來(lái),這樣當(dāng)GoAhead解析home.ASP頁(yè)面遇到<% UpdateProcInfor(); %>標(biāo)簽時(shí),控制權(quán)就會(huì)跳轉(zhuǎn)到UpdateProcInfor()函數(shù),在輸出以HTML格式表示的進(jìn)程信息后,控制權(quán)轉(zhuǎn)交給GoAhead繼續(xù)解析home.ASP頁(yè)面。

  注意:ASP過(guò)程必須符合原型:int ASPProcName (int ejid, webs_t wp, int argc, chart_t **argv);
其中,ejid參數(shù)作為JavaScript解釋器句柄可以用來(lái)調(diào)用JavaScript相關(guān)函數(shù),例如ejGetVar和ejSetResult。wp參數(shù)作為瀏覽器連接的句柄,可以用來(lái)調(diào)用很多有用的GoAhead服務(wù)器函數(shù),例如用來(lái)輸出HTML語(yǔ)句的websWrite等。argc和argv包含傳遞給ASP過(guò)程的實(shí)參的個(gè)數(shù)和內(nèi)容。

 

//清單1:home.ASP(省略了其它無(wú)關(guān)的部分,細(xì)節(jié)請(qǐng)參考附帶源代碼)
<html>
<head>
<% WriteMetaElement(); %>
</head>

<form action="/goform/UpdateConfig" method="post">
<input type="text" name="interval" value="" size="7" />
<input type="submit" name="ok" value="Update" />
<input type="reset" name="cancel" value="Reset" />
</form>
<% UpdateProcInfo(); %>
</html>

//清單2:ui.c

#include "ui.h"

#include "../webs.h"

//以HTML格式輸出系統(tǒng)當(dāng)前進(jìn)程信息

int UpdateProcInfo(int ejid, webs_t wp, int argc, char_t *argv)

{

return WriteProcPage(wp);

}

//根據(jù)用戶輸入改變刷新間隔時(shí)間設(shè)置

void UpdateConfig(webs_t wp, char_t *path, char_t *query)

{

int tmpInterval=_ttoi(websGetVar(wp, L"interval", L"-1"));

if(tmpInterval>3)

{

s_interval=tmpInterval;

}

websRedirect(wp, L"home.ASP");

}

//清單3:main.c文件中的initWebs()函數(shù)

#include "ui.h"

//關(guān)聯(lián)ASP標(biāo)簽和C函數(shù)名字

websASPDefine(T("UpdateProcInfo"), UpdateProcInfo);

websASPDefine(T("WriteMetaElement"), WriteMetaElement);

//關(guān)聯(lián)GoForms標(biāo)簽和C函數(shù)名字

websFormDefine(T("UpdateConfig"), UpdateConfig);

it知識(shí)庫(kù)利用GoAhead構(gòu)建嵌入式web應(yīng)用,轉(zhuǎn)載需保留來(lái)源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 99亚洲精品自拍AV成人软件 | jiapanese50欧美熟妇 | 国产成人亚洲精品老王 | 美女扒开尿口直播 | 加勒比一本之道高清视频在线观看 | 日欧一片内射VA在线影院 | 极品少妇粉嫩小泬啪啪AV | 簧片在线免费观看 | 精品水蜜桃久久久久久久 | 99国产在线视频有精品视频 | 久久青草费线频观看国产 | 成人永久免费视频网站在线观看 | 一本二卡三卡四卡乱码麻豆 | 香蕉尹人综合精品 | 精品日产1区2卡三卡麻豆 | 亚洲乱码中文字幕久久 | 强开少妇嫩苞又嫩又紧九色 | 久久国产露脸老熟女熟69 | 亚洲AV人无码综合在线观看蜜桃 | 国产AV麻豆出品在线播放 | 亚洲人成网77777色在线播放 | 国产精品成人啪精品视频免费观看 | 亚洲 欧美 中文 日韩 另类 | 2021扫黑风暴在线观看免费完整版 | 牛牛精品专区在线 | 久久精品日本免费线 | 久九九精品免费视频 | 正在播放国产尾随丝袜美女 | 不卡无线在一二三区 | 香蕉eeww99国产精品 | 最美白嫩的极品美女ASSPICS | 俄罗斯少女人体 | 国产成人无码WWW免费视频在线 | 欧洲人交xxx69 | 国产午夜伦伦伦午夜伦 | 青青草久久 | 爽死你个放荡粗暴小淫货漫画 | 色男人的天堂久久综合 | 午夜DY888国产精品影院 | 国产一区二区青青精品久久 | 性做久久久久免费观看 |