1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        WtC++ Web 工具包

        聯(lián)合創(chuàng)作 · 2023-09-20 20:45

        Wt(音同'witty')是一個C++庫,同時也是開發(fā)和部署web應用的服務器。 Wt不是所謂框架(framework),它只是一個庫,它不會將編程方式強加于開發(fā)者。

        Wt的API是以widget為中心(widget-centric)的,并受到現(xiàn)有C++圖形用戶界面(GUI) 的應用編程接口(APIs)的啟發(fā)。Wt為開發(fā)者提供了幾乎所有web實現(xiàn)細節(jié)的抽象,其中 包括事件處理和圖像支持。

        基于頁面的web應用開發(fā)框架(Page-based frameworks),如PHP、JSP/JSF (+servlets+struts)等,沒有實現(xiàn)對一些最基本技術的特性的抽象,這些技術包括 HTML/XHTML、JavaScript、CSS、AJAX、 Forms、DHTML、SVG/VML/Canvas等,顯然基 于頁面的開發(fā)框架(frameworks)必須要求開發(fā)者隨時熟悉和掌握這些基本技術。另外, 當選擇某一種基本技術時(如當前流行的AJAX),開發(fā)者則要對該技術的優(yōu)雅降級 (graceful degradation)負責,比如當AJAX或JavaScript已經不復存在或某些功能失效 時。同時,應用程序結構還要遵循早期HTML以頁面為基礎的開發(fā)范式。作為一個AJAX開 發(fā)者,這就意味著他需要手工設計和維護客戶端/服務器端的通訊。

        盡管開發(fā)者有時不希望,但為了生成HTML代碼或填充HTML模板會在頁面中插入 JavaScript,如此操作則會帶來安全風險,如跨站腳本(XSS:Cross-Site-Scripting)。 但是,模板框架(template frameworks)本身無法避免這種情況的發(fā)生,因為開發(fā)者總是 需要插入自定義的JavaScript來提高web應用。

        相比之下,使用Wt開發(fā)的web應用就要好許多,因為這樣的應用只使用一種編譯 語言(C++),而且生成必要的HTML/XHTML、Javascript、CGI、SVG/VML/Canvas以及 AJAX代碼的任務都交給Wt庫完成。自然地,web開發(fā)的安全性和瀏覽器可移植性問題也都 交給了Wt。另外,在可能的情況下,Wt將最大限度地使用JavaScript和AJAX;特別 地,在不支持AJAX的情況下,采用Wt開發(fā)的web應用仍能正常工作,因為Wt采用了 轉回普通HTML/CGI的機制(reverting to a plain HTML/CGI mechanism),保證了 瀏覽器與服務器之間的正常通訊。

        典型應用舉隅:

        • 由于Wt web應用服務器占用較低的內存(low footprint),故而可以為 可聯(lián)網(wǎng)的嵌入式系統(tǒng)(web-enabled embedded systems)提供基于web的圖形 用戶界面(GUI);
        • Wt可以為需要整合現(xiàn)有C++庫的應用提供基于web的圖形用戶界面(GUI), 這些應用包括科學上的或工程上的應用;
        • Wt可以創(chuàng)建從現(xiàn)有C++桌面應用到web的有效渠道(port)。

         

        使用Wt的好處

        • 可以象開發(fā)C++桌面應用一樣開發(fā)web應用;
        • Wt提供最基本的(plain)widgets,這些widgets可以在運行環(huán)境不支持 JavaScript的情況下照常工作(當然,如果支持的話效果會更好)。同時Wt::Ext命名 空間下的widgets工作效果會更酷(more polished),而且可以提供更高級的功能, 但是會需要對JavaScript的支持以及更為流行的瀏覽器。以上兩類widgets在Wt中共享 同一套應用編程接口(API);
        • Wt提供兩種開發(fā)與部署模式,即使用Wt內置(build-in)httpd或者FastCGI連接器 (connector),前者在Wt內較容易實現(xiàn),而后者則實際上是在開發(fā)FastCGI應用;
        • 客戶端與服務器端在驗證(validation)和事件處理(event handling)方面采用同 一原則(a single specification),即兩種應用下,開發(fā)者在服務器端使用C++編寫, Wt既在服務器端生成C++代碼,又同時在客戶端生成JavaScript代碼;其中事件處理特 指使用無狀態(tài)槽(stateless slot)實現(xiàn)的情況;
        • 可以產生標準的、符合HTML/XHTML規(guī)范的代碼;
        • 使用內聯(lián)VML、SVG、HTML 5 Canvas可以提供可移植的(portable)、抗鋸齒圖像 (anti-aliased graphics);
        • 無跨站腳本(XSS)風險,因為Wt完全控制表示層(presentation layer),并提前 (proactively)過濾掉活動(active) 標簽(tags)和屬性(attibutes),這樣很好地 隱藏了駐留在服務器端的業(yè)務邏輯(business logic);
        • 基于Wt的應用載入時間極短(ultra-fast load time),同時占用較低帶寬 (low bandwidth usage),當然也會受到顯示內容復雜程度(screen complexity)的影響, 但肯定不會是應用程序的大小。

        瀏覽 25
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        編輯 分享
        舉報
        評論
        圖片
        表情
        推薦
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        編輯 分享
        舉報
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            公交车上黄色小说 | 久久久久久久久久久久久久久女乱 | 国产亲子乱婬一级A片 | 探花视频在线播放 | 被黑人操 | 欧美裸体xxxxx | 男人j捅女人 | 欧美黄色看 | 伊人久久一区 | 国产91对白在线观看九色 |