Все, что упрощает сложный процесс создания больших программ, — хорошо. Соглашения, определенные СОМ, достигают этого несколькими путями.
СОМ предоставляет удобный способ структурирования сервисов, предоставляемых разными фрагментами программного обеспечения. Разработчик может вначале организовать проект в виде СОМ-объектов, а затем определить интерфейсы каждого объекта. Это одно из традиционных преимуществ объектно-ориентированного подхода к проектированию. Но СОМ идет дальше, позволяя разработчикам создавать программные компоненты, которые можно распространять и повторно использовать разными путями.
Второе преимущество СОМ — последовательность. Общий подход к созданию всех типов программных сервисов в СОМ упрощает проблемы, с которыми сталкиваются разработчики. Находится ли нужное программное обеспечение в библиотеке, в другом процессе, является ли частью операционной системы, доступ к нему всегда осуществляется единообразно. У последовательности есть и побочный эффект: СОМ сглаживает различия между системным и прикладным программным обеспечением. Если работать со всеми компонентами, как с объектами СОМ, то не чувствуется между этими двумя типами программного обеспечения существенных различий, которые обычно весьма ощутимы. Теперь можно разрабатывать приложения, использующие доступные в данной среде программные сервисы, независимо от того, чем эти сервисы являются и кто их предоставляет.
В дополнение к этому СОМ безразличен язык программирования. СОМ определяет двоичный интерфейс, который должны поддерживать объекты, поэтому объекты СОМ можно создавать на любом языке, способном поддерживать данный интерфейс. Затем обращаться к методам этих объектов можно будет на любом языке, позволяющем осуществлять вызовы данного двоичного интерфейса. Ни объект, ни его клиент не знают — да и зачем им это? — на каком языке написан другой. Правда, некоторые языки лучше подходят СОМ, однако сама по себе СОМ пытается быть независимой от языка.
Еще одно преимущество СОМ вытекает из ее подхода к одной из сложнейших проблем разработки и установки программ — контролю версий (versioning) — т.е.