Thursday, November 12, 2009

Chapter 18. Component Object Model (COM)



< BACK  NEXT >

[oR]

Chapter
18. Component Object Model (COM)

The discussion in
Chapter 15
showed how the COM Components are being used in the new approach to Windows 2000 administration and management. The distributed program-to-program communications that we showed in
Chapter 10, can be handled nicely with Distributed COM (DCOM). The Component Object Model (COM) is a component software architecture that allows applications and systems to be built from components supplied by different software vendors. As we pointed out in
Chapter 15, it is expected that a great many of the snap-ins will be produced by ISVs.


The most fundamental question addressed by COM is, how can a system be designed so that binary executables from different vendors, written in different parts of the world and at different times, are able to interoperate? To solve this problem, we have to find solutions to four specific problems:



  • Basic interoperability. �

    How can developers create their own unique components, yet be assured that these components will interoperate with other components built by different developers?




  • Versioning. �

    How can one system component be upgraded without forcing all the system components to be upgraded?




  • Language independence. �

    How can components written in different languages communicate?




  • Transparent cross-process interoperability. �

    How can we give developers the flexibility to write components to run in-process or cross-process (and eventually cross-network), using one simple programming model?




Additionally, high performance is a requirement for component software architecture. While cross-process and cross-network transparency are laudable goals, it is critical for the commercial success of a binary-component marketplace that components interacting within the same address space be able to utilize each other's services without any undue "system" overhead. Otherwise the components will not realistically be scalable down to very small, lightweight pieces of software equivalent to C++ classes or graphical userinterface (GUI) controls.




< BACK  NEXT >


No comments:

Post a Comment