Я был поклонником обучения и руководства Ювала Лоуи в области разработки .NET в течение ряда лет. Он также написал одну из моих любимых книг: программирование компонентов .NET.
Однако в недавнем подкасте DotNet Rocks (январь 2010 г.), посвященном обсуждению WCF / COM и .NET, он сделал несколько комментариев, которые меня очень удивили:
Ювал Леви: ..... в .NET, вот
и вот, каждый класс здесь является COM
объект. Мы знаем это. На самом деле, это намного больше, чем COM, потому что мы
есть компиляция GIT, у нас есть сборка мусора,
у нас есть стек безопасности ...
Карл Франклин: Ну, вы должны уточнить, что
хоть. Я имею в виду, каждый
Объект не является COM-объектом. каждый
объект имеет возможности, которые COM
объект делает, но .NET Framework
не является библиотекой COM.
Ювал Леви: Нет, нет. Прежде всего .NET на самом деле построен на
верхняя часть COM. Это все COM внизу.
Затем, после того, как Карл Франклин просит пояснить этот комментарий:
Карл Франклин: Да, я понял. мой
вопрос был .NET построен на COM?
Ювал Леви: Конечно, все это COM
внизу.
Карл Франклин: Нет. Я знаю, что это
переплетены и это требуется, но
когда вы создаете новый объект .NET, вы
не создает COM-объект.
Ювал Леви: Вы создаете объект .NET, но все
Я говорю, что .NET построен
под. Это все C ++ и COM.
Карл Франклин: Это C ++, но вы не
регистрация COM-объекта через
COM интерфейс. Это еще не все
если вы специально не сделаете это.
Ювал Леви: Но некоторые вещи используют
COM внизу, но это рядом с
точка. Забудьте о том, как это сделано.
Как вы читаете эти комментарии?
Хотя я понимаю (и подтвердил), что некоторые из системных сборок написаны на неуправляемом C ++, можно ли также сказать, что они «все под COM»?
Я предполагал, что совершенно возможно написать C ++-совместимые сборки .NET CLI, которые не имеют абсолютно никакого отношения к COM / ATL / ActiveX?
Вот расшифровка PDF для рассматриваемого подкаста. См. Стр. 7.