NAME

Ginger - Application framework built around Class::Core wrapper system

VERSION

0.02

SYNOPSIS

AppCore is an application server for Perl. It is designed to be modular, with many "default" modules relevant to a base functional system being provided. The "default" modules can be used to build a full application with minimal system code, focusing on application functionality instead of how to handle typical things such as logging, cookies, sessions, api, etc.

AppCore allows for an application to be created as a package of configuration and modules, similar to the way web containers or servlets are used in a Java environment with a Java application server such as JBoss or Tomcat.

AppCore differs significantly from the approach taken by other Perl applications servers such as Catalyst and Dancer, in that it attempts to seperate the configuration of your application from the application code itself.

DESCRIPTION

Basic Example

runcore.pl

#!/usr/bin/perl -w
use strict;
use Ginger::Reference::Core;

my $core = Ginger::Reference::Core->new();
$core->run( config => "config.xml" );

config.xml

<xml>
    <log>
        <console/>
    </log>
    
    <web_request>
        <mod>mongrel2</mod>
    </web_request>
    
    <mode name="default">
        <init>
            <call mod="web_request" func="run" />
            <call mod="web_request" func="wait_threads"/>
        </init>
    </mode>
</xml>

Configuration

Configuration of an AppCore application is accomplished primarily by the creation and editing of a 'config.xml' file. Such an xml file contains the following:

  • A list of the modules your application contains

  • Configuration for each of your modules

  • Configuration for Ginger::Reference::Core itself and the included modules

  • A sequence of steps to be used when starting up an AppCore instance

Application Modules

Application modules are custom modules that interact with AppCore itself to define your custom application logic. An application module is a perl module using Class::Core, containing specific functions so that it can integrate with AppCore and other modules.

Concurrency / Multithreading

AppCore does not currently support multithreading of requests. Long running requests can and will prevent handling of other requests until the long running request is finished. This will be fixed in the next version.

Modules

Note that in version 0.03 ( this version ) the following components are included in the base install of Ginger::Reference::Core. Note also that none of the following links currently have any detailed documentation. The next version should address this.

LICENSE

Copyright (C) 2013 David Helkowski

This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.  You may also can
redistribute it and/or modify it under the terms of the Perl
Artistic License.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.