## OLE Bank Client/Server

This is a simple example illustrating the use of custom COM interfaces to provide the infrastructure of a banking application. This application is a typical example of a three-tier application architecture comprising a database access layer, a business logic layer, and a user interface layer. The application has three components:

- A database that provides persistent storage for the accounts managed by the bank.
- A server that represents the bank and provides an object-oriented interface to its accounts.
- A client that provides a graphical user interface to the bank.

The database layer consists of a Microsoft Access(tm) relational database. The server communicates with the database using Functional Developer's sql-odbc library.

The server provides a single COM object that represents the bank, and a collection of COM objects representing accounts. The bank object has operations for opening, closing, and retrieving accounts from the database. An account has operations for querying and updating its balance. The server uses Functional Developer's OLE-Automation library to implement dual interfaces for all its objects, allowing use with both vtable and dispatch interface clients.

The client contacts the server and presents the user with a graphical interface to the bank. Menus are provided to allow the user to request operations on the bank and selected accounts. The client passes the requests on to the server and provides a local view of account information obtained from the server. The client provided here implements vtable access to the server via Functional Developer's COM library. The user interface is implemented using the Functional Developer DUIM library.

To try out this application, first see the Server README file for instructions on how to build and configure the server and database layers, and then see the Client README file for instructions on building the client.