App-Context

 view release on metacpan or  search on metacpan

lib/App.pm  view on Meta::CPAN

=head2 Distribution Design

The distribution is designed in such a way that most of the functionality
is actually provided by modules outside the App namespace.

The goal of the App-Context framework
is to bring together many technologies to make a
unified whole.  In essence, it is collecting and unifying the good work
of a multitude of excellent projects which have already been developed.
This results in a Pluggable Service design which allows just about
everything in App-Context to be customized.  These Class Groups are described
in detail below.

Where a variety of excellent, overlapping or redundant, low-level modules
exist on CPAN (i.e. L<date and time modules|App::datetime>),
a document is
written to explain the pros and cons of each.

Where uniquely excellent modules exist on CPAN, they are named outright
as the standard for the App-Context framework. 
They are identified as dependencies
in the App-Context CPAN Bundle file.

=head2 Class Groups

The major Class Groups in the App-Context distribution fall into three categories:
Core, Core Services, and Services.

=over

=item * Class Group: L<C<Core>|"Class Group: Core">

=item * Class Group: L<C<Context>|App::Context>
      - encapsulates the runtime environment and the event loop

=item * Class Group: L<C<Conf>|App::Conf>
      - retrieve and access configuration information

=item * Class Group: L<C<Session>|App::Session>
      - represents the state associated with a sequence of multiple events

=item * Class Group: L<C<Serializer>|App::Serializer>
      - transforms a perl struct to a scalar and back

=item * Class Group: L<C<Procedure>|App::Procedure>
      - a (potentially remote) procedure which may be executed

=item * Class Group: L<C<Messaging>|App::Messaging>
      - a message queue with configurable quality of service

=item * Class Group: L<C<Security>|App::Security>
      - provides authentication and authorization

=item * Class Group: L<C<LogChannel>|App::LogChannel>
      - a logging channel through which messages may be logged

=item * Class Group: L<C<SharedDatastore>|App::SharedDatastore>
      - a data storage area which is shared between processes

=item * Class Group: L<C<SharedResourceSet>|App::SharedResourceSet>
      - a set of shared resources which may be locked for exclusive access

=back

=cut

#############################################################################
# CLASS GROUP
#############################################################################

=head1 Class Group: Core

The Core Class Group contains the following classes.

=over

=item * Class: L<C<App>|"Class: App">

=item * Class: L<C<App::Reference>|App::Exceptions>

=item * Class: L<C<App::Reference>|App::Reference>

=item * Class: L<C<App::Service>|App::Service>

=item * Document: L<C<Perlstyle, Perl Style Guide>|App::perlstyle>

=item * Document: L<C<Podstyle, POD Documentation Guide>|App::podstyle>

=item * Document: L<C<Datetime, Dates and Times in App-Context>|App::datetime>

=back

=cut

#############################################################################
# CLASS
#############################################################################

=head1 Class: App

App is the main class through which all of the features
of the Perl 5 Enterprise Environment may be accessed.

 * Throws: Exception::Class::Base
 * Throws: App::Exception
 * Throws: App::Exception::Conf
 * Throws: App::Exception::Context
 * Since:  0.01

=head2 Class Design

The class is entirely made up of static (class) methods.
There are no constructors for objects of this class itself.
Rather, all of the constructors in this package are really
factory-style constructors that return objects of different
classes.
In particular, the new() method is really a synonym for context(),
which returns a Context object.

=head2 Class Capabilities



( run in 0.768 second using v1.01-cache-2.11-cpan-e1769b4cff6 )