Wt is a C++ library for developing web applications.
Wt handles all the nitty-gritty of requests and responses and client-side JavaScript, and allows you to focus on functionality in pure C++.
Wt’s widget abstraction represents HTML elements as C++ objects, allowing them to be easily composable and extendable.
This is free and open source software.
Features include:
- Stable API.
- Secure – designed to be resilient against the most common types of exploits: SQL injection, XSS and CSRF vulnerabilities.
- Core library:
- Hybrid single page framework with full support for browser history navigation and SEO.
- Compatible with HTML5 and HTML4 browsers, but also plain HTML user agents (including web crawlers).
- Develop in and deploy on Linux, UNIX (macOS, FreeBSD, …), or Microsoft Windows (Visual Studio and MinGW) environments.
- High performance (you’d expect nothing else from a C++ library), using asynchronous I/O throughout, multi-threaded, optimized rendering, …
- Allows integration of 3rd party JavaScript libraries/
- Event handling:
- Typesafe C++11 signal/slot API for responding to events: attach C++ code (such as C++11 lambdas or bound object methods) to react to events from keyboard, mouse, touch, history navigation, etc.
- Automated and efficient synchronization of browser and server state, using incremental rendering updates.
- Server-initiated updates using WebSockets with automatic fallback to Ajax long polling.
- 2D and 3D painting:
- 2D painting API which leverages the browsers native (vector) graphics support (HTML5 canvas, inline SVG or inline VML), but can also render to common image formats (PNG, GIF, …) or vector formats (SVG, PDF).
- Unified hardware-accelerated 3D painting API which leverages WebGL in the browser or server-side OpenGL (fallback).
- Integrated capable HTML/CSS renderer lets you generate high quality dynamic PDF reports easily.
- Built-in security:
- In dedicated process mode: ability to leverage kernel-level memory protection to isolate sessions.
- TLS/SSL support.
- Built-in Cross-Site Scripting (XSS) prevention. Rendered text is always filtered against potentially malicious code, making XSS attacks against Wt applications (close to) impossible.
- Built-in Cross-Site Request Forgery (CSRF) prevention. Using cookies for session tracking is not necessary nor recommended. Cookies are never solely relied on for requests that trigger event handling code.
- Application logic attack prevention. Only those events exposed in the interface (accessible from a button, for example) can be triggered.
- Session hijacking mitigation and risk prevention.
- DoS mitigation.
- Authentication module which implements best practices for authentication, including support for OAuth 2.0 and OpenID Connect.
- Self-contained library which implements an Object-Relational Mapper (ORM) for C++, and thus a convenient way to interact with SQL databases from C++:
- No code generation, no macro hacks, no XML configuration, just C++.
- Uses a templated visitor pattern which requires a single template method to provide the mapping: DRY and efficient.
- Flexible mapping support which includes support for surrogate auto-incremental keys or natural keys of any C++ type, which may also be composite (i.e. require more than one database field).
- Supports optimistic concurrency control using a version field.
- Maps Many-to-One and Many-to-Many relations to STL-compatible collections.
- Provides schema generation (aka DDL: data definition language) and CRUD operations (aka DML: data manipulation language).
- Transactions, prepared statements and connection pooling.
- Each session tracks dirty objects and provides a first-level cache.
- Uses native SQL to query individual fields and/or objects.
- Comes with Sqlite3, Firebird, MariaDB/MySQL, SQL Server and PostgreSQL backends, and an Oracle backend is also available on request.
- Deployment:
- Built-in HTTPD:
- Simple, high performance web application server (multi-threaded, asynchronous I/O) based on the C++ asio library.
- Supports the HTTP(S) and (Secure) WebSocket protocols.
- Supports response chunking and compression.
- Can be deployed as a single process (convenient for development and debugging) or multiple processes (e.g. a separate process per session), and is embeddable in an existing application.
- Host multiple applications on the same server, by bolting a reverse proxy in front.
- Available for Linux, UNIX, and Windows platforms.
- FastCGI:
- Legacy protocol that integrates with most common web servers (apache, lighttpd).
- Different session-to-process mapping strategies.
- Hot deployment: new sessions use the new application version while older sessions may continue with their application version.
- Available only for Linux and UNIX.
- ISAPI:
- Integrates with Microsoft IIS server.
- Uses the ISAPI asynchronous API for maximum performance.
- Available for Windows.
- Built-in HTTPD:
Website: www.webtoolkit.eu/wt
Support: Documentation, GitHub Code Repository
Developer: Emweb
License: GNU General Public License, Version 2, with OpenSSL exception. Commercial license is also available.
Wt is written in C++. Learn C++ with our recommended free books and free tutorials.
Return to C++ Web Frameworks | Return to C++ Application Servers
Popular series | |
---|---|
The largest compilation of the best free and open source software in the universe. Each article is supplied with a legendary ratings chart helping you to make informed decisions. | |
Hundreds of in-depth reviews offering our unbiased and expert opinion on software. We offer helpful and impartial information. | |
The Big List of Active Linux Distros is a large compilation of actively developed Linux distributions. | |
Replace proprietary software with open source alternatives: Google, Microsoft, Apple, Adobe, IBM, Autodesk, Oracle, Atlassian, Corel, Cisco, Intuit, and SAS. | |
Awesome Free Linux Games Tools showcases a series of tools that making gaming on Linux a more pleasurable experience. This is a new series. | |
Machine Learning explores practical applications of machine learning and deep learning from a Linux perspective. We've written reviews of more than 40 self-hosted apps. All are free and open source. | |
New to Linux? Read our Linux for Starters series. We start right at the basics and teach you everything you need to know to get started with Linux. | |
Alternatives to popular CLI tools showcases essential tools that are modern replacements for core Linux utilities. | |
Essential Linux system tools focuses on small, indispensable utilities, useful for system administrators as well as regular users. | |
Linux utilities to maximise your productivity. Small, indispensable tools, useful for anyone running a Linux machine. | |
Surveys popular streaming services from a Linux perspective: Amazon Music Unlimited, Myuzi, Spotify, Deezer, Tidal. | |
Saving Money with Linux looks at how you can reduce your energy bills running Linux. | |
Home computers became commonplace in the 1980s. Emulate home computers including the Commodore 64, Amiga, Atari ST, ZX81, Amstrad CPC, and ZX Spectrum. | |
Now and Then examines how promising open source software fared over the years. It can be a bumpy ride. | |
Linux at Home looks at a range of home activities where Linux can play its part, making the most of our time at home, keeping active and engaged. | |
Linux Candy reveals the lighter side of Linux. Have some fun and escape from the daily drudgery. | |
Getting Started with Docker helps you master Docker, a set of platform as a service products that delivers software in packages called containers. | |
Best Free Android Apps. We showcase free Android apps that are definitely worth downloading. There's a strict eligibility criteria for inclusion in this series. | |
These best free books accelerate your learning of every programming language. Learn a new language today! | |
These free tutorials offer the perfect tonic to our free programming books series. | |
Linux Around The World showcases usergroups that are relevant to Linux enthusiasts. Great ways to meet up with fellow enthusiasts. | |
Stars and Stripes is an occasional series looking at the impact of Linux in the USA. |