Ядро Windows написано на языке C, а компонент Windows написан на C++. Когда ваше внешнее приложение (скажем, Visual Basic или C#) должно быть интактным с этими компонентами, для взаимодействия с этими компонентами необходим какой-то тип механизма/стандарта. Этот механизм взаимодействия // стандарт называется COM.
Согласно Microsoft «COM - независимая от платформы, распределенная, объектно-ориентированная система для создания компонентов двоичного программного обеспечения, которые могут взаимодействовать».
Обратите внимание, что вам не требуется .Net run-time для взаимодействия с компонентом COM. Его можно вызвать с использованием старых языков, таких как Visual Basic, VC++ и т. Д.
Теперь большинство приложений, разрабатываемых в приложениях .Net и .Net, должны взаимодействовать с компонентами Windows. Microsoft строит слой (API) в верхней части компонента Windows, так что приложение .Net может взаимодействовать с компонентом Windows плавно. Этот слой является WinRT. Как разработчик интерфейса, вам необходимо взаимодействовать с WinRT, и WinRT будет взаимодействовать с компонентом Windows от вашего имени.
Для приложений .Net WinRT в конечном итоге заменит COM. но для приложений Non .Net COM все еще жив.
* "(...), но вы можете сделать COM без него)." - Это справедливо только для объектов in-process, которые поддерживают текущую квартиру. Вы можете загрузить DLL и вызвать 'DllGetClassObject' самостоятельно, но это очень плохая практика, если вы собираетесь взаимодействовать с другими COM-объектами. Кроме того, как COM, так и WinRT предоставляют множество инфраструктур, доступных через вызовы библиотек и базовые классы.Таким образом, хотя они не определяют обязательную и обширную «среду выполнения», такую как CLR или JVM, у них есть свои библиотеки и классы «времени исполнения». – acelent
@acelent - Я никогда не говорил, что вы не можете делать сложный COM. Самый простой COM - это даже не Dll, или interop, это просто бинарный контракт. –
Я спорю по-другому: вы не должны выполнять какие-либо «сложности» COM самостоятельно. И что есть библиотека, набор вспомогательных и базовых классов и много бухгалтерии в COM. – acelent