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 firstname.lastname@example.org 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
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
Where to Next?
The latest framework version can be downloaded CsiFramework.zip. 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.