Connection Pooling is usually refered to when talking about COM+.
COM+ is smart enough to recognize requests for database connections, and if it has one in it's pool where the connect string is an exact match, it will give the caller one from the pool, rather than creating one from scratch. This is much faster.
Once it detects that a caller is finished with a connection, it will move the connection object to it's internal pool for possible later use. It's possible to set the maximum number of connections held by the pool (in order to comply with licensing agreements, for example), and it's also possible to set the number of initial connections so that growing the pool is less likely to happen.
==============
Due to recent things I've learned about COM+, I plan to stay away from it if possible. It turns out that COM+ components that use ADO access are automatically promoted to using "Serialized" database access, which causes locking problems (we have 1.2 million+ hits a day on our site, and this is a concern).
If you don't want to use COM+, you can write your own pool manager in .NET. All you'd do is write a pool manager object which is a singleton (it stores an instance of itself internally in order that there always be only one copy of itself in existance). You'd then add an internal collection of connection objects, and add public methods to provide one upon request, and for clients to return them to the pool.
Chip H.