Main  /  Edit version 15  /  Edit version 16  /   /  Users Area

Difference "CppCMS 1.x.x tasks" ver. 15 versus ver. 16

Content:

<!--toc-->
# CppCMS 0.999.1 - rc1
## Rewrite socket to better class design
At this point, socket does everything, accept, connects,
read, writes, works with pipes and anything else.
Better class hierarchy needed, something like.
- `base_async_io_device`
- `acceptor`
- `base_socket`
- `stream_socket`
- `datagram_socket`
- `pipe`
It is good to fix this before first stable version.
## Booster.System
Booster.System misses `error_condition` class.
Fix `booster::system` to behave according to C++0x, or
just copy the code from Boost.
## Do changes required in Review Of Event Loop
Implement code review results by Maxim in the code.
## Implement Pre-Upload file validation
In CppCMS application is created only once the request
is fully ready. And after that use can validate
the uploaded files.
This is quite bad in case of big ones.
Possible solution is store the validation requirements
in the session and let `cppcms::impl::cgi_api`
fetch this session data and use rules to validate
uploaded files.
Problems:
- Session fetch may be not so cheap, it may be done over network or require DB access.
- Session API allows only synchronous requests.
- File uploading is done in even loop where all operations
should be non-blocking.
Possible solutions:
- Store this data in signed cookies.
- Add asynchronous api to sessions.
- Send session fetch to thread pool till and get
session data this way.
## Implement Connection Forwarding over unix-sockets
CppCMS forwarding framework allows to forward any connection
to other network node over SCGI API.
Is is very useful to be able to forward connections
between forked processes of same application.
It can be done in much cheaper between forked processes
by forwarding a file descriptor over Unix domain socket and
passing already read information via shared memory.
## Reintegrate Distributed session backend
Distributed session backed was temporary-removed
from the code during refactoring and still hadn't get
back.
So need to revert/rewrite the code in similar way it
is done with TCP Cache backend.
## Booster Reference Documentation
Write Missing documentation for Booster classes using
Doxygen - especially for ones that have no Boost
equivalents.
# CppCMS 1.0.0 - Stable Release
Tasks that does not require changes in API at all but should be done till stable release.
## Improve Unit-Test coverage
- Sesssion API
- Cache API
- Templates System
## Write Examples
- AJAX using JSON-RPC
- AJAX using Asynchronos JSON-RPC
- Comet Programming
- File Uploading + validation
- Good caching examples.
# CppCMS 1.1.0 - Next Release
## Implementing UDP Support for `booster::aio::socket`
Booster.Aio socket supports well stream sockets but
has very poor (if any) support of data-gram sockets.
You can open them, use them but there is no such operations
like `sendto` or `recvfrom` that are data-gram oriented.
Add their implementation to Booster in analogy to
implementations of async/sync read/write operations.
## Booster.Filesystem
Implement Directory Iterator.
## Boost to Booster tasks
- Extract/Reimplement `boost::bind` in Booster.
- Extract/Reimplement `boost::iostreams` in Booster
and replace `cppcms_boost`'s zlib filter with Booster's one.
- Extract/Reimplement `boost::unordered` in Booster.
## Implement Locale sensitive Date-Time Form Widgets
ICU provides good features for parsing and formatting
dates and times, implement Date-Time Widget
for this purpose.
It is not so-straightforward as user should know the
format he/she enters the data, such information
is not supplied by any existing widgets.
Think what to do in case of no-icu builds.
## Rewrite Cache's index to use has instead of tree
Cache backed uses `map` and may use `unordered_map`.
But it is not so simple:
- `unordered_map`, unlike `std::map` may invalidate iterators so direct replacement would not work.
- timeout index probably should be removed as well as
it requires O(log n) access.
And will it bring real performance benefit at all?
## Implement Active Cache invalidation
Distributed Cache system implements L1/L2 cache
allowing a cache client to check if the data is
has is still up-to-date without reading it back.
However each access to cache still require TCP-ping-pong.
So instead active cache invalidation may be done: when
trigger is risen or new data is stored a sort of
a message that causes all clients to drop invalid
cache is broad-casted.
Need to be implemented.
## XSS Filter
Provide HTML filter that allows filtering HTML tags
and properties using strict white list.
Make it manually configurable and allow loading
configuration from JSON.
Needed very fine grained definition of tags and properties
including checks of correct nesting and specifications
of regex for each property if needed.
## Improve Support of RESTful services
Provide friendly API for RESTful applications in similar
way it is done today for JSON-RPC
## SQL Library
Consider writing replacement for `dbixx`:
- Write my own SQL Library (i.e. replace dbi)?
- Improve libdbi - make sure it works on more platforms.
- Improve SOCI?
- Fork SOCI?
Requirements:
- Use prepared statements transparently and support them for 3 major FOSS RDBMS - MySQL, PostgreSQL, Sqlite3
- Cache prepared statements transparently
- Use connection pool transparently
- Use single connection string
- Optimize for performance.
- Use functions style API and provide syntactic sugar that is not "must to use"
- Dynamic type conversions
- Simple deployment, prefer to load client libraries directly rather then use intermediate loadable modules.

About

CppCMS is a web development framework for performance demanding applications.

Support This Project

SourceForge.net Logo

Поддержать проект

CppCMS needs You


Navigation

Main Page


Valid CSS | Valid XHTML 1.0