COM-объекты и интерфейсы C#
Я совершенно новичок в этом и следую учебнику по msdn: http://msdn.microsoft.com/en-us/library/aa645736(v=vs.71).aspx
Мой вопрос: почему мы используем интерфейсы COM и классы COM? Кажется странным создавать экземпляр экземпляра COM CoClass, создавать новый объект, который является старым объектом, но преобразуется в интерфейс COM.
Я действительно просто хочу понять идеологию здесь... любая помощь полезна.
2 ответа
Теория состоит в том, чтобы отделить интерфейс (что может сделать объект) от реализации (как он это делает или, более конкретно, какой конкретный код создается для этого).
Определение типов только в качестве интерфейсов позволяет COM определять, как взаимодействуют объекты на нескольких языках; это одна из его главных целей. Поскольку спецификация интерфейса является договором о том, как передавать данные и вызывать методы, любой язык может предоставлять COM-объект, не требуя от клиентов знать о внутренней работе разработчика (CoClass).
Это позволяет VB6, .net, C++, deplhi и любому количеству других языков взаимодействовать в одном приложении.
Статья в Википедии о COM имеет хороший фон в этом отношении.
Это основной принцип проектирования в программной инженерии, интерфейс - это контракт, в мире coClass - это реализация. для COM интерфейс может быть определен в IDL, но реализация (coClass) может быть сделана в VB, C++, .net и т. д.