当前位置: 首页 > 软件库 > Web应用开发 > Web框架 >

Wt

C++ Web 工具包
授权协议 GPLv2
开发语言 C/C++
所属分类 Web应用开发、 Web框架
软件类型 开源软件
地区 不详
投 递 者 燕烨
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

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)的影响, 但肯定不会是应用程序的大小。

  • Wt是一个用于开发web应用程序的c++库。诚然,当人们谈到web开发时,c++并不是首选的编程语言。Web开发通常与脚本语言相关联,并且通常在为传入请求生成响应的级别上实现。由于请求和响应都是文本编码,web编程最终是一个文本处理任务,因此可以方便地用脚本语言表示。 然而,从功能的角度来看,作为一个编程任务,现代web应用程序更像一个桌面应用程序:它具有高度的交互性,不再以页面形式组织(可能仍然

  • 一篇关于Wt C++类库开发Web应用的深入浅出的介绍 *最早发布于2006年4月“软件开发者”期刊,针对于Wt1.1.0。当然也可以获取PDF形式的拷贝。 1 介绍 未来的web开发技术 C++是一种公认的可以可以用来开发各种应用的语言,比如桌面应用程序,邮件客户端程序,数据库引擎程序等等。然而使用C++开发web应用却有着一定的限制。相反占据web应用开发的语言有:Java,PHP,Pytho

  • 如果数据直接写磁盘,就叫做直写,也就是write through 如果数据先写到阵列卡的cache,这叫做回写,也就是write back 转载于:https://blog.51cto.com/9425473/1558129

  • WTBS™系统是移动WAP类第三方业务(以下简称WAP业务)支撑系统,是MISC™ xTBS产品线中的一个子系统。WTBS™系统完成中国移动WAP第三方增值业务的流程控制、业务代理与代计费等功能。WTBS™在MISC™、WAP网关与SP之间搭起了一个桥梁,对WAP类数据业务的开展提供了很好的支持。 整个梦网的WAP类业务可以比喻为一个有序的大超市,MISC™平台完成了进货,WAP Portal™完

  • 1. A new kind of copper alloy(Cu wt%14Al X)for die was developed and effects of heat treatment on its microstructure and hardness were discussed. 对研制的新型铜合金模具材料(Cu 14Al X)的热处理工艺进行了试验研究,分析讨论了固溶时效处理对铜合金模

  • 0 学习目标 1 了解什么是无状态 2 cookie、session、jwt的特点和区别? 3 RSA非对称加密算法和对称加密算法的特点和区别 4 能够搭建授权中心 5 能够在zuul中解析权限 1.无状态登录原理 1.1.什么是有状态? 有状态服务,即服务端需要记录每次会话的客户端信息,从而识别客户端身份,根据用户身份进行请求的处理,典型的设计如tomcat中的session。 例如登录:用户登

  • 众所周知MongoDB的底层存储是由WiredTiger负责的,其数据文件也是.wt格式。既然如此,我们就有可能不通过MongoDB服务,而是直接用wt工具从数据文件中恢复数据。虽然我们通常推荐生产环境一定要配置复制集,但是很无奈,技术社区已经数次有人因为单机运行,最后硬盘损坏等原因导致无法启动。wt工具作为最后一根稻草,可以在放弃治疗前再尝试挽救一下。 编译 wt工具可以运行于Linux和Win

  • 1.弗洛伊德(Floyd ) 用来求解赋权图中每对顶点间的最短距离,Floyd算法是经典的动态规划算法,基本思想是递推产生一个矩阵序列A1,A2,…,Ak,…,An(图有n个节点),Ak=(ak(i,j))nxn。其中矩阵Ak第i行第j列表示从顶点vi到顶点vj的路径上经过的顶点序号不大于k的最短路径长度。 电车 题目描述 在一个神奇的小镇上有着一个特别的电车网络,它由一些路口和轨道组成,每个路口

  • WTC

    bootnode   1 修改core/types/block.go中Header的结构体。加上 Signature      []byte      `json:"signature"        gencodec:"required"` 2 在p2p/discover/udp.go中修改 "os" "github.com/ethereum/go-ethereum/common" p :=

  • 小波变换介绍 小波变换字面理解:专用于小的波形信号处理,可能有非常好的效果。 小波变换(wavelet transform,WT)是一种新的变换分析方法,它继承和发展了短时傅立叶变换局部化的思想,同时又克服了窗口大小不随频率变化等缺点,能够提供一个随频率改变的“时间-频率”窗口,是进行信号时频分析和处理的理想工具。它的主要特点是通过变换能够充分突出问题某些方面的特征,能对时间(空间)频率的局部化分

  • 生成JWT代码实现: @Test public void genJwt(){ Map<String,Object> claims = new HashMap<>(); claims.put(“id”,1); claims.put(“username”,“Tom”); String jwt = Jwts.builder() .setClaims(claims) //自定义内容(载荷)

  • TCP连接第四次挥手结束时,主动发起连接释放请求的一方进入TIME_WT状态,此时主动发起连接释放请求的一方会等待2MSL(最大报文生存期)才会回到初始状态CLOSED。 在TCP四次挥手阶段,当对方提出连接释放请求时,自身给予响应ACK确认应答,但是TCP连接是全双工的,也需要自身发送连接释放请求,即FIN。但是自身并没有立即发送FIN,进入CLOSE_WT状态。 产生CLOSE_WT的原因一般

 相关资料
  • Web 开发者工具 Web 开发者工具允许开发者测试和调试代码, 它们不同于网站生成器和 IDE, 因为 Web 开发者工具不直接参与网页的创建, 而是用于测试网站或 Web 应用的用户界面接口的工具. Web 开发者工具是浏览器的加载项或内置功能. 当今最流行的web浏览器, Google Chrome, Firefox, Opera, Internet Explorer, 和 Safari 都

  • Django常用Web工具 ① 文件上传 ② 分页操作 ③ 富文本编辑器 ④ Django部署Apache

  • 目录 http_load webbench ab siege http_load 程序非常小,解压后也不到100K http_load以并行复用的方式运行,用以测试web服务器的吞吐量与负载。 但是它不同于大多数压力测试工具,它可以以一个单一的进程运行,一般不会把客户机搞死。 还可以测试HTTPS类的网站请求。 下载地址:http_load-12mar2006.tar.gz 安装很简单 tar z

  • (商用请联系作者获取授权,个人用户无限制) 简介 FTP Manage Tools(FTP管理工具)是一个基于WEB的FTP客户端程序,你可以通过它对你的FTP文件进行管理。 程序采用AJAX,由PHP+JQuery/JavaScript完成。 你可以在http://119.29.112.32/ 进行体验。 包含功能 包括文件新建、上传、下载、复制、剪切、粘贴、删除、重命名,对Windows平台的

  •  一直做开发,很少关注测试工具,尤其是以往的测试都主要是Junit测试,难免在web层面上因没有严格测试而经常出现bug,近来小小接触了一下这一类的测试工具,感觉蛮好玩的,在此和大家分享一下,希望多多交流。   一、Selenium IDE 介绍   下载selenium ide插件并安装(firefox),在tools菜单下可以看到。   单击上面的红色原点,即可对你在网页上的任何操作做记录,以

  •  一直做开发,很少关注测试工具,尤其是以往的测试都主要是Junit测试,难免在web层面上因没有严格测试而经常出现bug,近来小小接触了一下这一类的测试工具,感觉蛮好玩的,在此和大家分享一下,希望多多交流。   一、Selenium IDE 介绍   下载selenium ide插件并安装(firefox),在tools菜单下可以看到。      单击上面的红色原点,即可对你在网页上的任何操作做记

  • HTTP GET # http_server_GET.py from http.server import BaseHTTPRequestHandler from urllib import parse class GetHandler(BaseHTTPRequestHandler): def do_GET(self): parsed_path = parse.url

  • 工具包提供了大量的通用实用函数去编写 dapps、处理用户输入和格式化数据等功能。 地址相关函数 There are several formats available to represent Ethereum addresses and various ways they are determined. utils . getAddress ( address )   =>   Address