Changes between Version 2 and Version 3 of LibdodoDetailedDescription

Show
Ignore:
Timestamp:
09/16/2009 10:31:04 AM (12 months ago)
Author:
niam
Comment:

formatting

Legend:

Unmodified
Added
Removed
Modified
  • LibdodoDetailedDescription

    v2 v3  
    1 '''libdodo''' consists of several subsystems: 
     1= libdodo architecture = 
    22 
    3  * cgi 
    4    provides instrumentation for CGI interface 
    5    * basic 
    6      basic CGI support 
    7    * fast 
    8      Fast-CGI support 
    9    * exchange 
    10      CGI-independent abstraction for interaction between application and web-server 
    11      CGI and Fast-CGI defines interface-specific options 
    12    * server 
    13      CGI-independent abstraction of CGI server interface 
    14      CGI and Fast-CGI defines interface-specific options 
    15  * data 
    16    provides interfaces for data access and manipulation 
    17    * base 
    18      with help of '''accumulator''' and '''connector''' interfaces forms SQL-independent data base abstraction for relativistic databases 
    19      currently mysql, postresql and sqlite databases are supported 
    20    * format 
    21      defines data format abstraction 
    22      currently XML and JSON data formats are supported 
    23    * memory 
    24      forms shared memory interface between OS processes  
    25    * tpl 
    26      implements [wiki:LibdodoTplProcessor template processor] interface 
    27  * exception 
    28    interface for handling application exceptions 
    29  * graphics 
    30    '''image''', '''draw''' and '''tranform''' form image manipulation interface 
    31  * io 
    32    * event 
    33      I/O event interface, normally used with conjunction of non-blocked Input/Output 
    34      '''descriptor''' and '''manager''' interfaces serves for this purpose 
    35    * channel 
    36      basic interface Input/Output interface 
    37      branches out into '''block''' and '''stream''' interfaces to handle block and stream I/O accordingly  
    38    * file 
    39      representative of '''block''' interface to handle file based I/O 
    40      divided into '''regular''', '''fifo''' and '''temp''' interfaces defined to handle read and write from and to regular files, fifos and temporary files 
    41    * memory 
    42      abstraction of memory region as a '''block''' device 
    43      useful in areas where '''channel''' is required but memory as a storage is preferable 
    44    * network 
    45      network interaction subsystem that is divided into '''client''', '''server''' and '''exchange''' interface that stand for client- and server- side connection and '''stream''' interface to exchange data accordingly. Generic network and unix socket connections supported. SSL encryption of transferred data is supported in both cases.  
    46    * pipe 
    47      simple inter-process communication '''stream''' interface for data exchange 
    48  * pc 
    49    stands for parallel computation 
    50    * sync 
    51      handles synchronization mechanisms between asynchronous events such as threads or processes 
    52      * data 
    53        * single provides access synchronization for single data entry 
    54        * collection provides access synchronization for collection of entries 
    55      * section 
    56        provides access synchronization for program flow 
    57    * job 
    58      this subsystem provides '''manager''' interface as an abstraction of asynchronous program flow management 
    59      '''process::manager''' and '''thread::manager''' are helper interfaces for handling processes and threads management accordingly 
    60  * rpc 
    61    provides interface for remote procedure calls 
    62    '''client''' interface serves for client-side connection and '''server''' is for handling server-side  
    63    '''value''', '''method''' and '''response''' represents RPC value, client request and server response accordingly 
    64    XML and JSON RPC protocols supported 
    65  * tools 
    66    contains various helper functions 
    67    * code 
    68      provides data encoding, compression, etc. 
    69    * filesystem 
    70      contains filesystem related routines 
    71    * library 
    72      helper functions to work with dynamically and statically libraries 
    73    * logger 
    74      provides logging facilities 
    75    * misc 
    76      defines miscellaneous routines not included in other sections 
    77    * network 
    78      generic network functions 
    79    * os 
    80      provides interface for interaction with OS such signal handling, getting information about environment, etc. 
    81    * regexp 
    82      regexp matching and replacement interface 
    83      currently pcre and posix regexp libraries could be used as backends 
    84    * string 
    85      various functions to work with strings 
    86  * xexec 
    87    provides hooks injection into various libdodo subsytems 
    88    with help of '''xexec''' it is possible to define pre-exec and post-exec actions 
     3Brief overview of libdodo subsystems: 
     4 
     5 * '''cgi''' interface provides instrumentation for CGI 
     6   [[BR]]'''basic''' and '''fast''' interfaces implement generic CGI and Fast-CGI support accordingly 
     7   * '''dialogue''' defines CGI-independent abstraction for interaction between application and web-server with help of '''exchange''' interface 
     8   [[BR]]CGI and Fast-CGI define interface-specific '''exchange''' interfaces 
     9   * '''server''' provides CGI-independent abstraction of CGI server interface 
     10   [[BR]]CGI and Fast-CGI define interface-specific '''server''' interfaces 
     11 * '''data''' describes interfaces for data access and manipulation 
     12   * '''base''' forms SQL-independent data base abstraction for relativistic databases with help of '''accumulator''' and '''connector''' interfaces 
     13     [[BR]]currently '''mysql''', '''postresql''' and '''sqlite''' databases supported 
     14   * '''format''' defines data format abstraction 
     15     [[BR]]currently '''XML''' and '''JSON''' data formats supported 
     16   * '''memory''' interface forms interface for shared memory between OS processes  
     17   * '''tpl''' implements [wiki:LibdodoTplProcessor libdodo template processor] interface 
     18 * '''exception''' defines interfaces for handling application exceptions 
     19 * '''graphics''' forms image manipulation interface with help of '''image''', '''draw''' and '''transform''' interfaces 
     20 * '''io''' provides Input/Output interfaces 
     21   * '''event''' provides I/O event interface 
     22     [[BR]]'''descriptor''' and '''manager''' interfaces available for this purpose 
     23     [[BR]]normally used with conjunction of non-blocked Input/Output 
     24   * '''channel''' is basic Input/Output interface 
     25     [[BR]]branches out into '''block''' and '''stream''' interfaces to handle block and stream I/O accordingly  
     26   * '''file''' is a representative of '''block''' interface to handle file based I/O 
     27     [[BR]]divided into '''regular''', '''fifo''' and '''temp''' interfaces to handle read and write from and to regular files, fifos and temporary files 
     28   * '''memory''' implements abstraction of memory region as a '''block''' device 
     29     [[BR]]useful in areas where '''channel''' interface is required but memory as a storage is preferable 
     30   * '''network''' is a network interaction subsystem that is divided into '''client''', '''server''' and '''exchange''' interface that stand for client- and server- side connection and '''stream''' interface to exchange data accordingly. 
     31     [[BR]]Generic network and unix socket connections supported. SSL encryption of transferred data is supported in both cases.  
     32   * '''pipe''' provides simple inter-process communication '''stream''' interface for data exchange 
     33 * '''pc''' stands for parallel computation and defines needed tools for this purpose 
     34   * '''sync''' handles synchronization mechanisms between asynchronous events such as threads or processes 
     35     * '''data''' provides access synchronization interface 
     36       * '''single''' interface provides access synchronization for single data entry 
     37       * '''collection''' interface provides access synchronization for collection of entries 
     38     * '''section''' provides access synchronization interface for program flow 
     39   * '''job''' subsystem provides '''manager''' interface as an abstraction of asynchronous program flow management 
     40     [[BR]]'''process::manager''' and '''thread::manager''' are helper interfaces for handling processes and threads management accordingly 
     41 * '''rpc''' provides interface for remote procedure calls 
     42   [[BR]]'''client''' interface serves for client-side connection and '''server''' is for handling server-side  
     43   [[BR]]'''value''', '''method''' and '''response''' represents RPC value, client request and server response accordingly 
     44   [[BR]]XML and JSON RPC protocols supported 
     45 * '''tools''' subsystem contains various helper functions 
     46   * '''code''' interface provides data encoding, compression, etc. routines 
     47   * '''filesystem''' contains filesystem related routines 
     48   * '''library''' provides helper functions to work with dynamically and statically linked libraries 
     49   * '''logger''' implements logging facilities 
     50   * '''misc''' provides miscellaneous routines not included in other sections 
     51   * '''network''' contains network functions 
     52   * '''os''' provides interface for interaction with OS such signal handling, getting environment information, etc. 
     53   * '''regexp''' is a regular expression matching and replacement interface 
     54     [[BR]]currently '''pcre''' and '''posix regexp''' libraries could be used as backends 
     55   * '''string''' defines various functions to work with strings 
     56 * '''xexec''' provides hooks injection into various libdodo subsystems mechanism 
     57   [[BR]]with help of '''xexec''' it is possible to define pre-exec and post-exec actions 
    8958 
    9059Most of the interfaces are thread- or process- safe by default. To avoid unneeded overhead it's possible to chose the protection in objects constructors or turn it off completely.