1 / 20

Developing Applications with the CSI Framework

Developing Applications with the CSI Framework. A General Guide. Framework Overview. Developed over 10 years (since 1999) Represents over two man-years development effort Object-oriented application framework Targets Win32 applications Can be used with Delphi 2005-2007

lapis
Download Presentation

Developing Applications with the CSI Framework

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Developing Applications with the CSI Framework A General Guide

  2. Framework Overview • Developed over 10 years (since 1999) • Represents over two man-years development effort • Object-oriented application framework • Targets Win32 applications • Can be used with Delphi 2005-2007 • Can be used with Windows 2000 and above • Specifically targeted at multi-threaded multi-tiered/distributed applications

  3. Framework Goals • Fundamental goal of the framework is to provide all necessary software “plumbing” for application development • Secondary goal of the framework is to do this in a way that enables scalable development across threads and processes

  4. Using the Framework • Latest version can be downloaded from the ADUG web-site • Follow the installation guide to install • Simple Developer’s Guide can be downloaded from the ADUG web-site

  5. Application Components • Six types of application “components”: • Application threads • UI threads • Communications clients • Communications servers • Database managers • Globals component

  6. Application Messaging • All application components, except database managers, are “connected” via the passing of application “messages” • An application message is actually an object that holds arbitrarily structured information • Component messaging interface enables the asynchronous and synchronous processing of messages • Component messaging interface enables the registration of other application components as “consumers” or “handlers” of messages

  7. Application Configuration • Static application configuration file (.cnf) lists the application components, their initial configuration, and their messaging connections • Dynamic application settings file (.ini) enables any performance settings for each application component to be updated dynamically

  8. Framework Layers • Split into four layers • Core • Utilities • Application • Framework

  9. Core Layer • Essential system, string, date/time, file, and application routines • Application logging, exception handling, and startup/shutdown management • Configuration variable management • Singleton object management • Base threading framework, including a base thread class, thread-safe utility classes, and thread-synchronisation classes/routines • Essential utility classes, including integer set, id/value pairs, and text streams

  10. Utilities Layer • Additional compression, encryption, and network routines • Base threaded-queue framework, including a base threaded-queue class and additional thread-safe utility classes • Additional utility classes, including XML object, XML parser/assembler, stopwatch, class registry, virtual directory, and persistent queue • Utility components, including timer and file iterator

  11. Application Layer • Application globals class to manage the application as a whole • Application configuration manager class to manage standard configuration settings • Base thread message class to encapsulate arbitrary structured data • Extended threaded-queue framework, including thread message object handling and a thread timers class • Object/interface reference manager to enable the mapping of object/interface references to strings • Generic TCP client and server classes for inter-process communication • Generic database manager class for database access

  12. Framework Layer • High-level management of inter-process communication • High-level management of database access • Implementation of a configurable "application component" framework • Implementation of a consistent thread messaging interface for all thread and communication "application components“ • Separation of dynamic performance settings from static application configuration

  13. Useful Constructs/Techniques • Separation of VCL-specific (non-RTL) code into a separate unit • Implementation of an accurate high-resolution timer • Optimised utility class to manage id-value pairs of strings • Separation of Windows system-specific code into a separate unit • Generic utility classes for text stream manipulation using records and fields

  14. Useful Constructs/Techniques (cont’d) • Class registry to enable the mapping of class names to classes • Virtual directory class to handle a large number of files in a single directory • XXTEA 128-bit encryption routines • Zip compression routines

  15. Useful Constructs/Techniques (cont’d) • RAM and CPU usage logging • Single application instance management • Restart application on shutdown management • Reference manager to enable the mapping of object/interface references to strings • Thread timers class to implement timers for threads

  16. Framework Benefits • Reduction in amount of untested application-specific code • Simplified thread-specific code • Simplified database access code • Simplified user interface access code • Built-in diagnostic tools to aid issues resolution • Consistent implementation of common functionality

  17. Future Directions • Cross-platform support: Win32 (now), .NET using Visual Studio (not yet released), Linux (hopefully with Delphi 2011) • Additional core functionality: server solicit/client response message pattern (not yet released), thread pooling (in development) • Simple installation support (in development) • File Sync system (in development)

  18. Summary • The CSI Framework provides a relatively easy way to develop complex multi-threaded multi-tiered/distributed applications

  19. Links • http://www.adug.org.au/downloads/CSIFramework.html

  20. Questions • Any questions?

More Related