A networked platform is actually only part of the story. Although networking solutions permitted PCs to communicate with each other and share resources such as printers and disks, applications needed to be able to send and receive data and coordinate their actions with other applications running at the same time on other computers. Many common interprocess communications mechanisms were available, such as named pipes and sockets. These mechanisms were very low-level; using them required a good understanding of how networks function. The same is true today. For example, building applications that use sockets to send and receive data can be a challenging occupation; ostensibly the process is quite simple, but factors such as coordinating access (you don’t want two applications trying to read from the same socket at the same time) can complicate matters. As computers and networks evolved, so did the variety and capabilities of the inter-process communications mechanisms. For example, Microsoft developed the Component Object Model, or COM, as the mechanism for communicating between applications and components running on the Windows platform.
Developers can use COM to create reusable software components, link components together to build applications, and take advantage of Windows services. Microsoft itself uses COM to make elements of its own applications available as services for integration into custom solutions.
Microsoft originally designed COM to enable communications between components and applications running on the same computer. COM was followed by DCOM (distributed COM), which allowed applications to access components running on other computers over a network.
DCOM was itself followed by COM+. COM+ incorporated features such as integration with Microsoft Transaction Server so applications could group operations on components together into transactions. The results of these operations could either be made permanent (committed) if they were all successful or automatically undone (rolled back) if some sort of error occurred. COM+ provided additional capabilities such as automatic resource management (for example, if a component connects to a database, you can ensure that the connection is closed when the application finishes using the component) and asynchronous operations (useful if an application makes a request to a component that can take a long time to fulfill; the application can continue processing, and the component can alert the application by sending it a message when the operation has completed). COM+ was followed in turn by the .NET Framework, which further extended the features available. Microsoft renamed the technology yet again to Enterprise Services. The .NET Framework also provided several new technologies for building networked components. One example was Remoting, with which a client application could access a remote object hosted by a remote server application as though it were running locally, inside the client application.