Products - MidWare
Latest Release: Aug 16, 2010
Latest Beta: none

      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 applications. See the MidWare Web Technology page.

[ Midware for Delphi 10.3.1 Rio (And probably previous versions)(Requires ICS V8) ]
[ 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 TMWBuffer objects
  • Zero or more TMWTable objects

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 forum available for Midware and ICS 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 the 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:

MidWare Component Description
TMWTable A TTable/TQuery like component (TDataSet descendant) which can be linked to a TDataSource and therefore used with data-aware components such as DBGrid, DBNavigator or others.
TMWBuffer 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.
TAppSrvClient 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.
TAppServer A component which is the Server kernel. TAppServer allows an unlimited number of concurrent Clients. (Limited only by system resources). This component uses TWSocket components to communicate with Clients using the TCP/IP protocol. TWSocket is an ICS component.
TRequestBroker 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.
TServerObject A base component which is used as an ancestor to derive new components which perform the tasks needed to satisfy the Client requests.
TWSocket 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. TWSocket is an ICS component.

Sample Application Description
SrvTst 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 TTable and how to use a TQuery.
SrvDemo A sample Server which uses a visual TServerObject component. The key is ServerObjectSQLTHREAD, which shows how to build a multithreaded TServerObject, which is able to execute lengthy SQL requests in the background.
CliTst 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.
BioLife 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.
TblTst A sample Client which shows how to use a DBGrid and a DBNavigator to display the result from an application Server.
BufTst A simple program to show how to manipulate the TMWBuffer component.
ChatSrv A simple multi-user chat Server, used with the companion ChatCli (see below) application. It shows how MidWare can be used as a general purpose communication system.
ChatCli Client demo application for ChatSrv (see above).