Wt Functions

来自开放百科 - 灰狐
2010年9月14日 (二) 15:13Allen (讨论 | 贡献)的版本

(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)
跳转到: 导航, 搜索

Wt特点

目录

核心库

  • 支持所有主流浏览器(包括Firefox/Gecko、Internet Explorer、Safari、 Konqueror以及Opera),同时在不支持JavaScript的浏览器上亦能正常 工作(已经测试过的有Links和Lynx);
  • 开发和部署平台为Unix/GNU Linux (gcc)或者Microsoft Windows (Visual Studio);
  • 在有无JavaScript或AJAX支持的情况,应用程序行为基本保持一致;
  • 整合了对UTF8及UTF16的支持;
  • 提升了AJAX页面变化的渲染(rendering)能力;
  • Wt将AJAX页面变化的渲染(rendering)分成可见部分和运行在背景中(隐式)的不可见部分; 而当不使用AJAX时,只有可见部分被渲染;
  • 提供可自由配置的会话跟踪(session tracking)选项,这包括URL重写和cookies;
  • 支持定时事件(timed events)和服务器端发起更新(server-initiated updates), 即服务器推送(server push);
  • Wt通过内部地址应用编程接口(internal path API),可以支持浏览器浏览历史导航 (即“转到上一页”、“转到下一页”按钮和“书签”功能[注:在IE以上三项称为“向前”、 “向后”和“收藏夹”]);
  • Wt性能卓越,允许部署在低端嵌入式设备(low-end embedded devices)上,或者当用户希望 其Internet或Extranet应用在功能强弱(energy)、占用空间大小(space)和投入成本(budget)等 方面达到相对平衡时。

事件处理

  • 支持对键盘、鼠标及焦点事件的监听,同时可以获得事件细节,比如鼠标键位、 键盘键位等;
  • Wt使用基于模板的信号/槽系统(template-based signal/slot system)进行事件处理;
  • Wt默认采用基于C++的服务器端事件处理,而不是基于JavaScript的客户端事件处理;
  • 通过详细指明无状态槽(stateless slot)的实现,Wt将动态完成从C++到JavaScript 的转译;单一C++槽既提供客户端事件处理也提供服务器端事件处理,其结果是客户端引起页面 视觉效果变化(visual changes),同时服务器端引起应用状态变化(application state);
  • Wt可以提供自定义JavaScript的钩子(hook)(如仅存在客户端事件处理的情况),由自定义的 JavaScript产生(emit)C++信号;
  • Wt应用编程接口(API)可以轻松实现拖放(Drag&Drop)功能。

独有的绘图系统

  • Wt绘图应用编程接口(unified painting API)使用内联VML、内联SVG或HTML 5 canvas, 充分利用浏览器固有的(向量)图像支持;
  • 绘图系统支持任意路径绘图(arbitrary painter paths)、裁减(clipping)、文本(text)、 图像(images)、变形(transformations)以及画笔(stroke)和类型填充(fill styling);
  • Wt提供两种绘画系统实现方式,即其API与WPaintedWidget类接合使用,或者直接使用 SVGImage绘图设备(SVGImage paint device)。

图形用户界面组件

  • 基本widgets,包括按钮、HTML锚、 选择框、选择按钮、组合框、各种容器(containers)、 文件上传控制框、图像、标签、文本框(单行/多行)等等;
  • 表单widgets,内部使用WValidator类支持客户端和服务器端验证;
  • 复合(Composite)widgets,包括日历、 滚动条、树、树表、菜单、就地编辑(in-place edits)、 虚拟图像、窗体面板等,这些复合widgets建立在基本widgets之上,并仅使用Wt公共应用编程接口(API)
  • Modal视窗,包括对话框和信息提示框;
  • 使用信息资源集(messages resource bundles)实现内置的I18N;
  • Wt采用内联CSS,或者也可以采用内部的或外部指定的样式表;
  • Wt Ext widgets,内部使用 Ext JS 2.0.1 JavaScript widgets,ExtJS widgets的大部分子集在Wt中已经打包为(wrapped as) C++ widgets;
  • 可变的图表(charting)widgets,包括笛卡尔坐标图、饼图等,这些widgets建立在Wt独有的 绘图系统和Wt MVC架构基础之上。

内置安全性

  • Wt采用Kernel级的内存保护方案,特别是在采用专属进程(dedicated-process)模式下, 会话之间完全隔离,这样Wt完全可以保护隐私数据(privacy issues)免受程序Bug的影响;
  • Wt通过在安全超文本传输协议(HTTPS:Secure Hypertext Transfer Protocol)中采用 安全套接层协议(SSL:Secure Sockets Layer)或者传输层安全协议(TLS:Transport Layer Security), 可以支持加密(encryption)和服务器认证(server authentication);
  • 能够满足低带宽需求下HTTPS的连续使用,尤其使AJAX获得更佳使用效果(fine-grained AJAX);
  • Wt提供内置的跨站脚本(XSS)安全保护,文本渲染时能自动过滤掉具有潜在风险的恶意代码, 在Wt应用中使跨站脚本攻击几乎不可能存在。

部署方式

a) FastCGI模式特点

  • 该模式能与多数通用web服务器(如apache, lighttpd)整合在一起;
  • 提供不同的会话-进程映射(session-to-process mapping)策略;
  • 支持热部署(Hot deployment),即新会话使用新的应用版本,同时部署时 未终止的旧会话仍可以按旧的应用版本继续运行;
  • 使用多线程编程,可以满足会话内和会话间的请求的同时处理(simultaneous handling of requests);
  • 可以使用gdb或valgrind进行调试;
  • 该模式仅用于UNIX平台。

b) 内置httpd模式特点

  • 该模式下Wt是简单、高效的web应用服务器,基于C++ asio库,可满足多线程 (multi-threaded)、异步输入输出(asynchronous I/O);
  • 通过OpenSSL库,完全支持HTTP和HTTPS协议;
  • 支持应答分割与压缩(response chunking and compression);
  • 该模式下仅一个进程存在,便于部署和调试;
  • 既适用于UNIX平台也适用于Win32平台;
  • 支持通过代理或为了均衡负载的web服务器端部署(deployment behind a ProxyPass'ing (and if needed, load-balancing) web server)。

链接

分享您的观点
个人工具
名字空间

变换
操作
导航
工具箱