Have you heard the term - MIDDLEWARE? It's the
Application Layer you put in the "middle" of your
multi-tiered architecture software, allowing the
various layers or "Tiers" to talk to each other.
Middleware is the "glue" used to build efficient and
scalable N-Tier Client/Server programs.
I have developed a middleware framework called MidWare.
It consists of a set of components and units which
allow you to create an Application Server and related
thin Client application, in just a few minutes. All
without worrying about Client connections, data formatting
and other details which make a multi-tiered Client/Server
program so difficult to write. MidWare also includes
CGI, ISAPI and ASP modules for web
See the MidWare Web Technology page.
Midware for Delphi XE/2010/2009 (Requires ICS V7)
Download the MidWare Distribution for older Delphi (Requires ICS V5)
- How does it work?
A MidWare Application Server is based on:
- A Server component
- An Object Request Broker (ORB)
- A set of Server objects you write
A MidWare Client Application is based on:
- One or more application Server Client objects
- One or more
- Zero or more
The following illustrations are available to show
the basic concepts of MidWare component technologies:
MidWare is distributed as freeware and contains
a complete help file as well as the full source code for
all MidWare components and many sample
applications. Source code is heavily commented, so
you should read the source carefully and try to
understand how it works. If you have questions, there
is a related mailing list available for support.
- Compatibility Note:
All components and sample applications are compatible with
Delphi versions 2, 3, 4, 5
and C++Builder versions 1, 3, 4
-- with the exception of
TMWTable component, which uses
new features introduced in Delphi 3 and is not
compatible with Delphi 2 or C++Builder 1.0
Below is a list of the components and sample applications contained
in the MidWare distribution:
TDataSet descendant) which can be linked
TDataSource and therefore used
with data-aware components such as
DBNavigator or others.
A component which is able to hold a
variable number of records counting a
variable number of fields, each one
containing a variable length string.
Everything is variable. This component
is used to format the request from the
Client to the Server, and to format the
reply from the Server to the Client.
A component that connects to the Server,
sends requests and retrieves related answers.
It uses a
TMWBuffer to hold the request
and is linked to a
TMWBuffer in order
to return the result set.
A component which is the Server kernel.
TAppServer allows an unlimited number
of concurrent Clients. (Limited only
by system resources). This component
TWSocket components to communicate
with Clients using the TCP/IP protocol.
TWSocket is an
A component which handles object
instanciation inside the Server
(called an Object Request Broker).
Each request is processed by a Server
object. The ORB is responsible for
instanciating and destroying the object,
as required by the connected Clients.
A base component which is used as an
ancestor to derive new components which
perform the tasks needed to satisfy the
Basic winsock component. Fully event-driven
and multi-thread safe. It supports TCP,
UDP and can be used to build both Client
and Serverprograms. Click here for a
primer text about TCP and UDP.
A sample Server with a lot of
functions built-in. Each function is
based on a
TServerObject. The various
Server objects show how to do simple
computation (conversion to uppercase),
how to use a thread for a lengthy process,
how to use a
and how to use a
A sample Server which uses a visual
TServerObject component. The key is
ServerObjectSQLTHREAD, which shows
how to build a multithreaded
which is able to execute lengthy
SQL requests in the background.
A sample Client application showing how
to use a Client side object to make a
request, send it to the application Server
and get the result back. This demo also
shows how to traverse a firewall or proxy
using the SOCKS5 protocol.
A sample Client showing how to use
memo fields and image fields (blobs)
with MidWare. It uses the well known
sample data from the BioLife Delphi demos.
A sample Client which shows how to
DBGrid and a
display the result from an application Server.
A simple program to show how to manipulate
A simple multi-user chat Server, used
with the companion
(see below) application. It shows how MidWare
can be used as a
general purpose communication system.
Client demo application for