C/C++ SOAP工具包 gSOAP
gSOAP一种跨平台的C和 C++软件开发工具包。生成C/C++的RPC代码,XML数据绑定,对SOAP Web服务和其他应用形成高效的具体架构解析器,它们都受益于一个XML接口。 这个工具包提供了一个全面和透明的XML数据绑定解决方案,Autocoding节省大量开发时间来执行SOAP/XML Web服务中的C/C++。此外,使用XML数据绑定大大简化了XML自动映射。应用开发人员不再需要调整应用程序逻辑的具体库和XML为中心的数据,如 交涉DOM。
功能和特点
可移植性:gSOAP支持大多 数平台,包括嵌入式系统和小系统(例如嵌入式Symbian,Palm)。可移植性测试Windows(98,XP,Vista),Linux,Unix 系统,Mac OS X,Solaris,HP-UX,AIX,FreeBSD,TRU64,Irix,QNX,VxWorks。
稳定性:该软件已经成熟。自2001年以来经过几年的发展和试验。许多工业项目和产品都在使用该软件。
广泛的用户群:自2003年以来超过150000次下载,成千上万许可证/支持协议的公司,其中包括一些财富100强企业。
所有功能于一身的软件包:独立第三方工具和库确保可靠的运行执行。
开源:可选择自由和商业许可。
C和C++的支持:支持纯粹的ANSI C和混合的C/C++应用开发。
综合XML数据绑定: gSOAP是唯一的SOAP/XML工具包,支持一个纯粹的本地的C/C++数据绑定到XML。该工具包是以自动序列指针为基础的数据结构。
行业标准协议: SOAP 1.1/1.2 WSDL 1.1,v2和UDDI 。支持XML架构原始XSD结构类型等等。
传 输:HTTP/S, TCP, UDP, MIME (SwA), DIME (streaming), MTOM (streaming), HTTP1.0/1.1, IPv4, IPv6, RSS, XML-RPC, WS-Addressing, WS-Enumeration等
安全:HTTPS和WS安全性:认证令牌,数字签名。
速度:架构特定的编译器生成的代码速度快。基准测试表明速度优于最快的XML解析器。
占用内存小:客户端应用程序总运行内存占用很小。内存管理使用垃圾收集,可以自动清理。
许多例子:软件包,包括许多代码范例,其中包括独立的HTTP/1.1和HTTPS安全的Web服务器。
Web服务器整合:包括Apache_mod, IIS, WinInet, CGI, FastCGI。
跨平台C + +库 CrissCross
CrissCross是一种小型的跨平台C + +库,用于处理控制台和文件I / O , CPU的识别( CPUID ) ,散列( MD2 , MD4 , MD5编码,了SHA - 1 ,SHA- 256 ,SHA- 512 ,Tiger) ,Socket( TCP和目前唯一的UDP )和数据结构( LList , DArray , RedBlackTree , AVLTree , SplayTree等) 。其目的是运行在Windows , Linux , FreeBSD的, OpenBSD系统, NetBSD的, Mac OS X的,甚至是NDS 。其他平台可能成为支持的请求。其主要思想是提供的能力,写一个程序使用相同的呼吁主要平台,而无需重写代码。
C++ Web工具包 Wt
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)的影响, 但肯定不会是应用程序的大小。
common c++
commonc++ 是一个 C++ 类库,用于在编写跨平台的程序时提供统一的接口和方法。commonc++ 封装了例如线程、信号、网络通讯、进程调度、日志、共享内存等等的功能,以便于编写跨平台的C++应用程序
在如下的库支持下,开发的系统可以很方便移植到当前大部分平台上运行
而无需改动,只需在对应的平台下 用你喜欢的编译器 重新编译即可
经典的C++库
STLport-------SGI STL库的跨平台可移植版本,在以前有些编译器离符合
标准比较远的情况下 那时还是有用的,当然目前vc71已经比较接近标准了,
故目前不怎么用它了。
Boost---------准标准库, 功能强大 涉及能想的到的大部分非特别领域的算法,
有一个大的C++社区支持
WxWindows-----功能强大的跨平台GUI库 ,它的功能和结构都类似 MFC,故原则上
可以通过WxWindows把现有MFC程序移植到非Win平台下
Blitz---------高效率的数值计算函数库 ,你可以订制补充你需要的算法
Log4cpp-------日志处理 ,功能类似java中的log4j
ACE-----------自适应通讯环境, 重量级的通讯环境库。
Crypto++ -----加/解密算法库, 非常专业的C++ 密码学函式库
CppUnit --- 一个c++的单元测试框架 类似 java 的JUnit
Loki ------- 一个实验性质的库,尝试把类似设计模式这样思想层面的东西通过
库来提供,他是C++的一个模板库,系C++"贵族", 它把C++模板的功能发挥到了极致
学术性的C++库:
FC++ --------The Functional C++ Library ,用库来扩充语言的一个代表作 ,模板库
CGAL ------- Computational Geometry Algorithms Library计算几何方面的大部分重要的
解决方案和方法以C++库的形式提供给工业和学术界的用户。
wxWidgets和其它类似的GUI(图形用户界面,下同)库比如MFC或者OWL一个最本质的区别在于,它是跨平台的