Форум программистов, компьютерный форум, киберфорум
C/C++
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/18: Рейтинг темы: голосов - 18, средняя оценка - 4.56
10 / 10 / 6
Регистрация: 24.05.2013
Сообщений: 350
1

Создание COM-компонента

21.10.2015, 02:15. Показов 3488. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Я только начал изучать что такое COM и фреймворки и у меня есть недопонимание. Прошу ответить возможно ли то что я описал ниже, а лучше сказать как чаще всего делают и как правильно делать. Я могу кое где быть слегка не прав или полностью, поэтому я могу сказать что, то что я описал может быть возможным, но могут быть инструменты\способы\подходы которые лучше подходят, использование которых - хороший тон.

Планирую в ближайшее время начать работать с ActiveX.(Не MFC)

Может ли COM-компонент быть в отдельной dll библиотеке?
Обязательно ли в такой COM-компонент вносить методы управления этим компонентом?

Правильно ли я понимаю: За основу управления COM-компонентами берется стандартный фреймворк(В моем случае ActiveX), который содержит методы для взаимодействиями между COM-компонентами.
Можно ли создать пустой исполняемый(exe) фреймворк?

Как происходит управление COM-компонентами?
Правильно ли я понимаю: Нужно дополнить этот пустой фреймворк вызовом хотя бы одной библиотеки\COM-компонента что бы пошла работа.

Где содержится логика взаимодействия между отдельными COM-компонентами? Как я понимаю изначально есть методы для взаимодействия между COM-компонентами. Но где то нужно прописать как они будут взаимодействовать между собой, что то типа функции main где производится начальная настройка, конфигурация и вызывается как минимум одна, главная библиотека\com-компонент.

Где лучше располагать логику взаимодействия между отдельными COM-компонентами? В исполняемом файле, пустом фреймворке дополнив его в отдельном COM-компоненте?

Может ли быть децентрализованное управление COM-компонентами? Чтобы в разные моменты времени разные COM-компоненты управляли другими COM-компонентами. Может ли отсутствовать самый главный COM-компонент?

Мне бы хорошую статью или урок разъясняющий что такое COM с примерами использования и советами, желательно содержащий аналогии. на русском.
Что то типа самоучителя для чайников.

Добавлено через 5 минут
Как мне создать COM-компонент отдельным не исполняемым файлом в Visual Studio 2012? Какой проект выбирать? ATL? Какое расширение у COM-компонента? dll?
для создания исполняемого файл содержащего фреймворк тоже выбирать проект ATL?
Могут ли COM-компоненты сразу быть вшиты в исполняемый файл? Как лучше? хранить их отдельно?

Добавлено через 43 минуты
Чем ActiveX от .NET отличается?
Мне кажется .NET более современная замена ActiveX.
ActiveX я могу описать как фреймворк, отвечающий за их взаимодействие между собой отдельных компонентов стандарт для которых - COM.
.NET могу описать также как ActiveX, где вместо VBA для взаимодействия с компонентами используется C# и где все более ориентировано на написание компонентов, чем на их взаимодействие.

Добавлено через 7 минут
то есть .NET включает в себя создание и управление компонентами(на шарпе). А ActiveX только управление(взаимодействие).
Верно ли?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.10.2015, 02:15
Ответы с готовыми решениями:

Создание компонента, при добавлении автоматически получить Parent фокусированного компонента
Привет всем, вот ни разу не писал еще компоненты, начал разбираться, все просто, понятно, доступно,...

Создание визуального компонента наследника базового компонента
Добрый день! В VS 2005 было возможно создать элемент Windows Forms control library на базе...

Создание своего компонента на основе компонента Timer
нужно создать свой компонент какбы который наследует компонент Таймер нужно хотя бы добавить...

Экспорт компонента из DLL, создание компонента в DLL
MYAPI подчеркнута с надписью "linkage specification is not allowed" #ifndef _ANIMAL_H_ #define...

3
Модератор
3386 / 2158 / 352
Регистрация: 13.01.2012
Сообщений: 8,375
21.10.2015, 10:44 2
Цитата Сообщение от drunkwolfs Посмотреть сообщение
Может ли COM-компонент быть в отдельной dll библиотеке?
да. хотя сама формулировка несколько странная... а вы "не отдельную" DLL встречали)?
Цитата Сообщение от drunkwolfs Посмотреть сообщение
Обязательно ли в такой COM-компонент вносить методы управления этим компонентом?
если под методами управления DLL содержащей COM подразумевать наличие экспортируемых функций DllGetClassObject/DllCanUnloadNow/DllRegisterServer/DllUnregisterServer/DllEntryPoint, то, как вы сами понимаете, если этих методов нет система не сможет поднять объект сидящий в этой библиотеке. можно конечно загрузить НЕЧТО сидящее в этой библиотеке самому и самому же его поддерживать, но это почти не имеет отношения к COM
Цитата Сообщение от drunkwolfs Посмотреть сообщение
Правильно ли я понимаю: За основу управления COM-компонентами берется стандартный фреймворк(В моем случае ActiveX), который содержит методы для взаимодействиями между COM-компонентами.
что значит "управления"? есть объект некого класса. он живет в неком месте (DLL или EXE). он предоставляет некие интерфейсы. в плане технологии - на этом все. если речь идет о том как написать такой объект, то разные среды предоставляют для этого разные возможности вплоть до полностью ручного написания.
Цитата Сообщение от drunkwolfs Посмотреть сообщение
Можно ли создать пустой исполняемый(exe) фреймворк?
можно самому написать объект с нуля без всяких ATL и т.п.
Цитата Сообщение от drunkwolfs Посмотреть сообщение
Как происходит управление COM-компонентами?
опять термин "управление". объектами никто не управляет. точнее - ими управляет тот кому это нужно: система знает какие методы она должна вызвать что бы создать объект и получить нужный интерфейс. инициатором работы системы с объектом служит пользовательский вызов (например, создание объекта в своей программе через вызов CoCreateInstance - система через реестр найдет место хранения объекта, произведет запуск EXE или загрузку DLL и вызовы методов создающих объект и получающих интерфейс). после этого прикладная программа сама будет делать с объектом то что ей нужно вызывая методы его интерфейса. если эта программа использует объекты как свои расширения и требует от этих объектов наличия специфических интерфейсов, то, наверное, можно сказать что "управлять" объектом будет программа.
Цитата Сообщение от drunkwolfs Посмотреть сообщение
Правильно ли я понимаю: Нужно дополнить этот пустой фреймворк вызовом хотя бы одной библиотеки\COM-компонента что бы пошла работа.
ничего не понял. что бы пошла работа нужно работать) если вам нужен объект - создайте его. если не нужен - зачем шуршать?
Цитата Сообщение от drunkwolfs Посмотреть сообщение
Где содержится логика взаимодействия между отдельными COM-компонентами?
очевидно, что если они взаимодействуют эта логика будет там где они взаимодействуют (скорее всего в программе). если объекты используют друг друга - очевидно что логика будет там где идет такое использование. ну и подводя итог - эта логика в хелпе к этим объектам - там уж наверняка опишут какой объект какому нужен и что с ним делает и что можно сделать со всем этим из внешнего мира
Цитата Сообщение от drunkwolfs Посмотреть сообщение
Как я понимаю изначально есть методы для взаимодействия между COM-компонентами.
изначально нет. однако, есть некоторые интерфейсы, например, обратного вызова которые позволяют делать некие вещи которые можно назвать чем то вроде взаимодействия если это нужно по логике работы. но это чисто лично ваша инициатива. объекту и так хорошо.
Цитата Сообщение от drunkwolfs Посмотреть сообщение
Но где то нужно прописать как они будут взаимодействовать между собой, что то типа функции main где производится начальная настройка, конфигурация и вызывается как минимум одна, главная библиотека\com-компонент.
без примера понять этот вопрос невозможно. дайте пример. взаимодействие идет там где оно идет. если я использую какой то объект получая от него какие то данные и хочу передать эти данные в другой объект очевидно я напишу код программы так что в нем будут строки обращения к одному а потом к другому объекту. наверное, это означает что взаимодействие будет в моей программе
Цитата Сообщение от drunkwolfs Посмотреть сообщение
Где лучше располагать логику взаимодействия между отдельными COM-компонентами? В исполняемом файле, пустом фреймворке дополнив его в отдельном COM-компоненте?
вы используете терминологию которую не может понять мой мозг. я пытаюсь вам объяснить но с каждым разом думаю что вы всетаки хотите сказать не то что я вам объясняю поэтому это я комментировать не буду.
Цитата Сообщение от drunkwolfs Посмотреть сообщение
Может ли быть децентрализованное управление COM-компонентами? Чтобы в разные моменты времени разные COM-компоненты управляли другими COM-компонентами. Может ли отсутствовать самый главный COM-компонент?
никаких главных объектов нет если это не подразумевает ваша программа. объектам все равно. они не страдают манией величия. если в вашей программе например есть объект взаимодействующий с базой данных и объект получающий данные с устройства и вы хотите брать эти данные и класть в базу - кто тут главный? нет его. а теперь вы еще написали объект который как раз и перекладывает данные. вы его создали, создали те два объекта, подали их этому объекту, дунули плюнули и поехало. кто главный? этот третий? нет. главный - автор программы)
Цитата Сообщение от drunkwolfs Посмотреть сообщение
Мне бы хорошую статью или урок разъясняющий что такое COM с примерами использования и советами, желательно содержащий аналогии. на русском.
Что то типа самоучителя для чайников.
тут (не забудьте указать верную кодировку)
Цитата Сообщение от drunkwolfs Посмотреть сообщение
Как мне создать COM-компонент отдельным не исполняемым файлом в Visual Studio 2012?
как минимум - как обычную DLL так как по вопросу - вы не хотите создавать EXE. а вообще - там могут быть какие то свои шаблоны проекта чисто под это дело. я всегда руками создавал.
Цитата Сообщение от drunkwolfs Посмотреть сообщение
Какой проект выбирать? ATL? Какое расширение у COM-компонента? dll?
какой нравится) я руками делал. расширение - по вопросу будет DLL наверное)
Цитата Сообщение от drunkwolfs Посмотреть сообщение
для создания исполняемого файл содержащего фреймворк тоже выбирать проект ATL?
я не знаю что такое фреймоврк у вас)
Цитата Сообщение от drunkwolfs Посмотреть сообщение
Могут ли COM-компоненты сразу быть вшиты в исполняемый файл? Как лучше? хранить их отдельно?
можно сделать объект который будет жить в EXE. лучше тот способ который подходит вашей задаче. объекты живущие в DLL они ммм... вроде не могут быть глобальными - ну что бы вы в одной программе сделали вызов, а другая увидела ее результата - DLL то у каждой отдельная будет, своя. а EXE - он глобальный
Цитата Сообщение от drunkwolfs Посмотреть сообщение
Чем ActiveX от .NET отличается?
очевидно тем что первое это очередное маркетинговое название некого подраздела COM а второе это че это.. платформа)? имитация кроссплатформы.. "наш" ответ яве)
Цитата Сообщение от drunkwolfs Посмотреть сообщение
Мне кажется .NET более современная замена ActiveX.
мне кажется не нужно было им столько делать всего. могли бы на COM успокоится - там все есть
Цитата Сообщение от drunkwolfs Посмотреть сообщение
ActiveX я могу описать как фреймворк, отвечающий за их взаимодействие между собой отдельных компонентов стандарт для которых - COM.
.NET могу описать также как ActiveX, где вместо VBA для взаимодействия с компонентами используется C# и где все более ориентировано на написание компонентов, чем на их взаимодействие.
я не знаю что вы делаете. я не понимаю ваших терминов
Цитата Сообщение от drunkwolfs Посмотреть сообщение
то есть .NET включает в себя создание и управление компонентами(на шарпе). А ActiveX только управление(взаимодействие).
Верно ли?
дот нет это платформа. то что они запихали в нее возможность создания COM-объектов не делает эту ВЕЩЬ матерью всех COM. ActiveX это маркетинг какого то подраздела COM.
3
1130 / 789 / 232
Регистрация: 12.04.2010
Сообщений: 2,012
23.10.2015, 17:53 3
Цитата Сообщение от drunkwolfs Посмотреть сообщение
статью или урок разъясняющий что такое COM с примерами
Введение в COM - в частности, примеры кода в части 4 и 5 ( с использованием и без использования ATL ).

Добавлено через 12 минут
1) Основы СОМ Дейл Роджерсон; 2) Искуство программирования. А Коберниченко

Добавлено через 47 минут

Не по теме:

Цитата Сообщение от vxg Посмотреть сообщение
должна вызвать чтобы создать
слитно или раздельно

1
vxg
26.10.2015, 09:35     Создание COM-компонента
  #4

Не по теме:

Цитата Сообщение от Alex5 Посмотреть сообщение
слитно или раздельно
vs
Цитата Сообщение от Alex5 Посмотреть сообщение
в частности, примеры кода в части 4 и 5 ( с использованием и без использования ATL )
1 повторение однокоренных слов в смежных предложениях или в одном предложении - плохой стиль
2 после скобок пробел не ставится
дальше о русском языке дискутируем)?

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.10.2015, 09:35

Создание компонента
Помогите написать delphi 7 компонент, автоматически включающаяся кнопка, по истечению времени,...

Создание компонента
У нас есть компоненты, для которого нам важно, что бы оно обновлялся только в случаях изменения...

Создание компонента
Создать компонет-панель с возможностью активизации вариантов (используются флажки, радиокнопки)...

создание компонента
Помогите написать delphi 7 компонент, автоматически включающаяся кнопка, по истечению времени,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru