– Kamailio SIP Server –

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

old-content:design [2006/01/25 01:00]
old-content:design [2006/01/25 01:00] (current)
Line 1: Line 1:
 +OpenSER Web Interface will be developed in true OOP fashion, meaning compatability will only be with PHP 5.0+. The program will be composed of the traditional three layers: View, Logic, and Data.
 +
 +Common OOP patters will be employed to solve many of the problems involved with this project. The next three sections will describe the three layers from top-to-bottom, or view-to-data.
 +
 +
 +==== View Layer ====
 +
 +Front Controller
 +
 +  * Single point of entry, everything goes through index.php
 +  * Easy authentication control and program setup
 +  * Minimize duplication of setup in various pages
 +
 +Application Controller
 +
 +  * Loads configurations from file or database, holds for program use
 +  * Caches expensive data loads, such as parsing an XML configuration file
 +  * Acts as DB Singleton and holds DB settings
 +
 +Command Resolver
 +
 +  * Modularizes resolution of commands
 +  * Allows for easier refactoring to support other input methods (HTTP, XML RPC, SOAP, etc.)
 +
 +Context
 +
 +  * Primary responsible is to pass data to and from commands
 +  * Holds all incoming request data
 +  * Passes return results from commands
 +  * Passes DB handle to commands
 +
 +Context Interpretor
 +
 +  * Allows multiple sources of input, compare to command resolver (HTTP, XML RPC, SOAP, etc.)
 +  * Builds context for commands to use
 +  * Responsible for filtering dangerous data, but not for validating data
 +
 +==== View/Logic ====
 +
 +Command
 +
 +  * Creates "real" objects, executes methods, does something
 +  * Acts on contexts
 +  * Responsible for validating form data
 +  * Will return simple status codes, passes returned data back into the context
 +
 +==== Logic ====
 +
 +Domain Objects
 +
 +  * Are the real objects in the system, i.e. User, VoicemailBox, SipProxy, etc.
 +  * Primary responsiblity is to DO something
 +  
 +==== Logic/Data ====
 +
 +Mappers
 +
 +  * Map Domain Objects to the database or other storage layer
 +  * Domain Objects will be unaware of mappers
 +  * Will support four standard operations: Save, Delete, Load, and Update
 +  * Can load collections of objects from arrays of raw data
 +  * Allow for finding/searching for object, returning a collection of possibilities
 +
 +==== Data ====
 +
 +Collections with Lazy Load
 +  
 +  * Implements PHP Iterator interface
 +  * Type specific collection
 +  * Given DB result and a Mapper to build collection of objects with
 +
 +Identity Mapper and Unit of Work
 +
 +  * All Domain Objects are added to this, preventing duplicate objects
 +  * Simplifies database saving, all objects are marked for necessary database operations that are done when the destructor of the mapper is called