C++ 的 web 工具包,Wt 3.3.2 發布
Wt 3.3.2 發布,此版本更新內容如下:
除了版本 2 現支持 推ter Bootstrap 3.1
添加了一個選項到 WGLWidget,用來渲染一個 off-screen 緩沖區的服務器端(使用 OpenGL),作為瀏覽器沒提供 WebGL 的一個便捷的解決方案,或者場景復雜度太高,或者客戶端下載效率太低的問題
添加了一個 3D 圖形庫,補充現有的 2D 圖表 API
改進了 wthttpd 架構,提升了性能
Wt(音同'witty')是一個C++庫,同時也是開發和部署web應用的服務器。 Wt不是所謂框架(framework),它只是一個庫,它不會將編程方式強加于開發者。
Wt的API是以widget為中心(widget-centric)的,并受到現有C++圖形用戶界面(GUI) 的應用編程接口(APIs)的啟發。Wt為開發者提供了幾乎所有web實現細節的抽象,其中 包括事件處理和圖像支持。
基于頁面的web應用開發框架(Page-based frameworks),如PHP、JSP/JSF (+servlets+struts)等,沒有實現對一些最基本技術的特性的抽象,這些技術包括 HTML/XHTML、JavaScript、CSS、AJAX、 Forms、DHTML、SVG/VML/Canvas等,顯然基 于頁面的開發框架(frameworks)必須要求開發者隨時熟悉和掌握這些基本技術。另外, 當選擇某一種基本技術時(如當前流行的AJAX),開發者則要對該技術的優雅降級 (graceful degradation)負責,比如當AJAX或JavaScript已經不復存在或某些功能失效 時。同時,應用程序結構還要遵循早期HTML以頁面為基礎的開發范式。作為一個AJAX開 發者,這就意味著他需要手工設計和維護客戶端/服務器端的通訊。
盡管開發者有時不希望,但為了生成HTML代碼或填充HTML模板會在頁面中插入 JavaScript,如此操作則會帶來安全風險,如跨站腳本(XSS:Cross-Site-Scripting)。 但是,模板框架(template frameworks)本身無法避免這種情況的發生,因為開發者總是 需要插入自定義的JavaScript來提高web應用。
相比之下,使用Wt開發的web應用就要好許多,因為這樣的應用只使用一種編譯 語言(C++),而且生成必要的HTML/XHTML、Javascript、CGI、SVG/VML/Canvas以及 AJAX代碼的任務都交給Wt庫完成。自然地,web開發的安全性和瀏覽器可移植性問題也都 交給了Wt。另外,在可能的情況下,Wt將最大限度地使用JavaScript和AJAX;特別 地,在不支持AJAX的情況下,采用Wt開發的web應用仍能正常工作,因為Wt采用了 轉回普通HTML/CGI的機制(reverting to a plain HTML/CGI mechanism),保證了 瀏覽器與服務器之間的正常通訊。
典型應用舉隅:
由于Wt web應用服務器占用較低的內存(low footprint),故而可以為 可聯網的嵌入式系統(web-enabled embedded systems)提供基于web的圖形 用戶界面(GUI);
Wt可以為需要整合現有C++庫的應用提供基于web的圖形用戶界面(GUI), 這些應用包括科學上的或工程上的應用;
Wt可以創建從現有C++桌面應用到web的有效渠道(port)。
使用Wt的好處
可以象開發C++桌面應用一樣開發web應用;
Wt提供最基本的(plain)widgets,這些widgets可以在運行環境不支持 JavaScript的情況下照常工作(當然,如果支持的話效果會更好)。同時Wt::Ext命名 空間下的widgets工作效果會更酷(more polished),而且可以提供更高級的功能, 但是會需要對JavaScript的支持以及更為流行的瀏覽器。以上兩類widgets在Wt中共享 同一套應用編程接口(API);
Wt提供兩種開發與部署模式,即使用Wt內置(build-in)httpd或者FastCGI連接器 (connector),前者在Wt內較容易實現,而后者則實際上是在開發FastCGI應用;
客戶端與服務器端在驗證(validation)和事件處理(event handling)方面采用同 一原則(a single specification),即兩種應用下,開發者在服務器端使用C++編寫, Wt既在服務器端生成C++代碼,又同時在客戶端生成JavaScript代碼;其中事件處理特 指使用無狀態槽(stateless slot)實現的情況;
可以產生標準的、符合HTML/XHTML規范的代碼;
使用內聯VML、SVG、HTML 5 Canvas可以提供可移植的(portable)、抗鋸齒圖像 (anti-aliased graphics);
無跨站腳本(XSS)風險,因為Wt完全控制表示層(presentation layer),并提前 (proactively)過濾掉活動(active) 標簽(tags)和屬性(attibutes),這樣很好地 隱藏了駐留在服務器端的業務邏輯(business logic);
基于Wt的應用載入時間極短(ultra-fast load time),同時占用較低帶寬 (low bandwidth usage),當然也會受到顯示內容復雜程度(screen complexity)的影響, 但肯定不會是應用程序的大小。
來自:http://www.oschina.net/news/49703/wt-3-3-2