[Previous] [Contents] [Next]

Chapter Ten

Persistence

Once an interface is published, its survival depends on how useful an abstraction it offers. If developers perceive that the functionality defined by an interface is useful for exposing or accessing a certain service, they'll write components that implement that interface and client applications that use it. The more components that implement or work with a certain interface, the more important that interface becomes. By this measure, IUnknown is the most important interface because all COM+ components must implement it. Other interfaces, such as IMoniker and IConnectionPoint, are also important, but less so.

Most of the original persistence interfaces that are part of COM+ were originally designed to solve project-specific problems in OLE. Over time, however, many developers found these interfaces useful, so they now rank among the more important standard interfaces in COM+. As these interfaces have become more widely used, the persistence facility of COM+ itself has become more important because it makes integration possible between a wide variety of software components. Today, even the Microsoft Visual Basic and Microsoft Java virtual machines provide nearly automatic support for persistence, which means that a tremendous variety of persistable objects are available. This leads to an interesting truth about COM+: as more components are built that reuse standard interfaces for basic facilities such as persistence, naming, and events, the stronger and more important the overall COM+ architecture becomes.