1. Introduction Clients such as Autodesk Map and OSGeo !MapGuide !OpenSource have experienced the need to manage the number of FDO connection objects that are being created within their applications. Continuously creating, initializing and releasing connections has been costly with a noticeable degradation in memory usage and performance. This document describes an enhancement to the FDO API to enable connection pooling and connection reuse within the implementation of the FDO API. This implementation will provide a common standard for all applications implementing support for FDO. The FDO API will be enhanced to allow creation of FdoIConnection objects based on a series of connection parameters including provider name, connection string, configuration document and long transaction name. Applications requesting an FDO connection using these parameters will be returned a newly created connection if a previous connection has not already been created with identical parameters. If an existing connection interface had previously been created and is not currently in use by another process, it will be returned to the calling application. 2. Design The following new unmanaged class will be added to support connection pooling progress. 1) Class !FdoConnectionCacheEntry[[BR]] 2) Class !FdoConnectionCache[[BR]] 3) Class !FdoConnectionCachePair[[BR]] To support connection pooling, the following unmanaged interfaces and classes will be modified. 1) Interface FdoIReader[[BR]] 2) Interface FdoIConnection[[BR]] 3) Interface IConnectionManager[[BR]] 4) Class !FdoConnectionManager[[BR]] To support connection pooling, the following managed interfaces and classes will be modified. 1) Interface OSGeo.FDO.Commands.Feature.IReader [[BR]] 2) Interface OSGeo.FDO.Connections.IConnection[[BR]] 3) Interface OSGeo.FDO.IConnectionManager[[BR]] 4) Class OSGeo.FDO.Connections.IConnectionImp[[BR]] 5) Class OSGeo.FDO.!ClientServices.!ConnectionManager[[BR]]