About Us
Mailing List
Reference Papers
Apply to Join
Delphi Jobs
Special Offers

Downloads Index

CSI Application Framework

What is the CSI Application Framework?

The CSI Application Framework is an object-oriented application framework developed by Misha Charrett for applications written in Delphi. The current release targets Win32 applications, and the framework can be used with Delphi 2005 and above, and Windows 2000 and above. In particular, it is specifically targeted at multi-threaded multi-tiered/distributed systems.

What are the Main Goals of the Framework?

The fundamental goal of the framework is to provide all necessary software “plumbing” for application development. Just as plumbing is the “pipes and fixtures for the distribution of water or gas in a building”, software “plumbing” can be said to be the “messaging and classes for the distribution of data in an application or applications”. In essence, the fundamental goal of the framework is to ensure that the developer spends all his/her time designing, implementing, and testing application-specific code, rather than the generic code that connects application functionality.

A further goal of the framework is to do this in a way that enables scalable development across threads and processes, without requiring the developer to master the low-level constructs used to build multi-threaded multi-tiered/distributed systems. This means that users of the framework can design their applications in terms of functional components and their interactions, without worrying about the low-level synchronisation mechanisms used to connect functional components or access shared resources.

How do I Install the Framework?

The CSI Application Framework can be installed by simply extracting the file archive to a suitable directory on the developer’s hard drive, then following the installation instructions in the ‘ReadMe.txt’ file. Apart from the CSI custom source code, the framework also uses the following libraries (although versions of all the required source code apart from Virtual Database are included with the framework):

  • Jedi Code Library (JCL), a freeware third-party component library
  • TurboPower’s Abbrevia, a freeware third-party component library
  • Jeffrey Pohlmeyer's TidyPas, a freeware third-party component library (optional)
  • Dimeric’s Virtual Database, a licensed third-party component library (optional - email for a free version)

How is the Framework Architected?

Fundamentally, the framework breaks application architecture down into a model where each application is built from six types of application “components”. These are “application threads”, “UI threads”, “communications clients”, “communications servers”, “database managers”, and a “globals” component. The GUI itself is actually a seventh application component, but since it is generally application-specific and interacts with the rest of the application via the UI threads, its design is not included in the framework.

All application components, except database managers, are “connected” via the passing of application “messages”. In the context of the framework, an application message is actually an object that holds arbitrarily structured information. In a logical sense it is somewhat like an XML document in that it can be stored as text, can contain typed data, and can have any structure. In fact, any application message can be stored as an XML document, although the reverse is not true.

Where to Next?

The latest framework version can be downloaded Work is proceeding on framework documentation, and an initial Developer's Guide can be downloaded CsiDevelopersGuide. Work is also proceeding on framework examples which are included with the download. There is also a version of the framework that can be used with Visual Studio which may also be available for download in future.