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