37 lines (23 with data), 2.6 kB
[/
(C) Copyright 2009 Glyn Matthews.
Distributed under the Boost Software License, Version 1.0.
(See accompanying file LICENSE_1_0.txt or copy at
http://www.boost.org/LICENSE_1_0.txt).
]
[section:intro Introduction]
[section:motivation Motivation]
Modern applications that communicate with the web have never been more prevalent, through a range of diverse areas from high performance servers to embedded systems such as smart phones or navigation systems. Such applications often have high performance or small memory footprint requirements for which C++ is the best language option. Currently, there are no network libraries available that use modern object-oriented techniques in C++. __libcurl__ and __mozilla_netlib__ are two widely used libraries in this domain but there are drawbacks to both:
* __libcurl__ suffers from poor design and inconsistent behavior in a threaded environment
* __mozilla_netlib__ is too heavily coupled within the Mozilla architecture for practical use as a separate component
With the development of __boost_asio__, developing portable network C++ applications has become a very much easier task. What is still lacking is a set of libraries that utilise __boost_asio__ in order to provide application level support so that C++ developers are able to develop internet and distributed applications more effectively.
[endsect]
[section:objectives Objectives]
The objectives of the __cnl__ are to:
* develop a high quality, portable, easy to use C++ networking library
* enable developers to easily extend the library
* lower the barrier to entry for cross-platform network-aware C++ applications
The goal of __cnl__ has never been to build a fully-featured web server - there are plenty of excellent options already available. The niche that this library targets is for light-weight networking functionality for C++ applications that have demanding performance requirements or memory constraints, but that also need to be portable. This type of application is becoming increasingly common as software becomes more distributed, and applications need to communicate with services.
While many languages provide direct library support for high level network programming, this feature is missing in C++. Therefore, this library has been developed with the intention of eventually being submitted to __boost__, a collection of general, high quality libraries for C++ developers.
Eventually, __cnl__ will be extended to support many of the application layer protocols such as SMTP, FTP, SOAP, XMPP etc.
[endsect]
[endsect]