|
From: Jose <jm...@gm...> - 2007-06-04 07:13:26
|
Hi Dean,
I've copied your doc here so that comments can be provided inline and the
doc can be merged with the doc I sent a few minutes after you.
I will comment on your doc in a separate message
======================================================================================
C++ Networking Library
Goals and Scope
Objectives
----------
o Develop a high quality, portable, easy to use C++ networking library
o Enable users to easily extend the library
o Lower the barrier to entry for cross-platform network-aware C++
applications
Goals
-----
* Implement a simple message implementation which can be used in
network protocol-specific routines for inter-operability and
to provide a generic interface to manipulating network-oriented
messages.
* Implement easy to use protocol client libraries such as (but not
limited to):
- HTTP 1.0/1.1
- (E)SMTP
- SNMP
- ICMP
* Implement an efficient easy to use URI class/parser.
* Implement a fully compliant cross-platform asynchronous DNS resolver
either as a wrapper to external (C) libraries, or as hand-rolled
implementation.
* Implement a MIME handler which builds message objects from either
data retrieved from the network or other sources and create
text/binary representations from existing message objects intended
for transport over the network.
Scope
-----
* The library will provide a generic message class which is intended
to be the common message type used by the protocol libraries.
* The library will only contain client implementations for the various
supported protocols.
* The library will use only STL and Boost C++ library components,
utilities, and libraries throughout the implementation.
* The library will strive to use C++ templates and template
metaprogramming techniques in order to not require the building of
external shared/static libraries. In other words, the library will be
header-only and compliant with the C++ standard.
On 6/4/07, Jose <jm...@gm...> wrote:
>
>
> Hi,
>
> I would like to get a basic agreement on the goals and roadmap, so that we
> can choose where to contribute and avoid duplicating effort. Pls send me
> your comments so that
> we can get a more concrete document
>
> General library goals
> ===============
>
> - Performance (do not pay for what you don't use)
> I think this is a goal for many C++ libraries and it is specially
> important for a c++ network library
>
> - Reusability of protocol classes
> Already discussed. Very important to the protocol designer
>
> - Protocol conformance
> I think this is key for the success of the library. There are many
> protocol implementations out there and what really hampers them is that they
> provide a partial implementation, which looks like a proof of concept but
> not a complete one. So, whatever protocols are choosen (client or/and server
> side), they should be fully implemented otherwise users will fork their own
> implementations (which is fine but contradicts the value of a library)
>
> Below is a basic list of protocols (which should be in order of priority).
> It has already been stated in the mailing list that the library goal is to
> provide reusable protocol development components and a few protocol
> implementations. Applications like web server or email server could be
> provided but it is not a goal to provide competitive application
> implementations.
>
> Protocol Roadmap
> ==============
>
> * HTTP 1.0 client
> - URI parser
> - request object
> - reply parser
> * SMTP client
> - pls send the list of key features
> * HTTP 1.1 client
> - cookies
> - gzip
> - multipart mime
> - easy interface to async DNS
> * HTTPS
> * ESMTP client
> * HTTP 1.0 server
> * HTTP 1.1 server
> * ESMTP server
>
> Example Applications
> ================
>
> Web server, email server, ...
>
>
> Pls send your comments
>
> regards
> jose
>
|