ВУЗ:
Составители:
Рубрика:
4
сходит со сцены , уступая место технологии Microsoft .NET, а используется с
ней параллельно .
Причина столь широкого распространения состоит, прежде всего, в том, что
COM решает несколько важных проблем , стоящих перед разработчиками
сложных программных комплексов .
Во-первых – это проблема создания единого, унифицированного и независимо-
го от языка программирования и архитектуры вычислительной среды (локаль -
ной или сетевой ) механизма обмена информацией между приложениями или
частями одного приложения.
Во-вторых, это проблема экспорта методов объектов между приложениями .
Традиционные DLL экспортируют (делают доступными извне) процедуры и
функции, а не объекты . Методы же объектов по своей сути не могут выпол-
няться вне контекста объекта , которому они принадлежат (принцип инкапсуля-
ции). Доступ к объектам, находящимся в отдельных процессах, выполняющих-
ся в изолированных адресных пространствах , традиционными способами не-
возможен в принципе.
В -третьих, применение пользователем компонентов сторонних разработчиков
(например, Delphi-компонентов ) в собственной программе может быть затруд -
нено конфликтами версий компонентов или несовместимостью языковой сре -
ды. Этот перечень проблем может быть продолжен.
Поддержка COM встроена в большинство современных языков программиро -
вания. Далее, без ограничения общности , мы будем рассматривать основные
принципы COM на примере среды программирования Delphi 6.
COM базируется на объектно - ориентированном программировании. Экземпляр
COM-объекта обычно называется просто объектом, а тип, который идентифи-
цирует этот объект, – компонентным классом (component class или coclass).
COM-сервер – программа, создающая COM-объект. Это всегда исполняемый
файл или динамически компонуемая библиотека (DLL). COM-клиент – про -
грамма, обращающаяся к экспортируемым методам сервера .
Можно выделить три вида серверов .
1. Внутренний (In-Process) сервер. Представляет собой динамически компонуе-
мую библиотеку (DLL), которая может создавать COM-объекты для исполь -
зования в вызывающем (клиентском) приложении (DLL-сервер). Относится к
тому же процессу , что и клиентское приложение, использует его адресное
пространство. Разновидностью внутренних серверов являются компоненты
ActiveX, поставляемые в виде файлов *.dll, *.ocx и пригодные для редактиро -
вания в различных визуальных средах программирования (Visual C++, Del-
phi и др.).
2. Локальный или внешний сервер (Out-Of-Process Server). Создается отдель -
ным процессом на том же компьютере , что и клиентское приложение, но ра -
ботает, разумеется, в отдельном адресном пространстве. Хранится в виде
EXE-файлов (EXE-сервер). Примерами локальных серверов являются при -
ложения MS Word, Excel и др. из пакета MS Office.
4 сход и т со сцены , уступая место технологи и Microsoft .NET, а и спольз уется с ней параллельно. При чи на столь ш и рокого распространени я состои т, преж д е в сего, в том, что COM реш ает несколько в аж ны х проблем, стоящ и х перед раз работчи ками слож ны х программны х комплексов . В о-первы х –это проблема соз д ани я ед и ного, уни фи ци ров анного и нез ав и си мо- го от яз ы ка программи ров ани я и архи тектуры в ы чи сли тельной сред ы (локаль- ной и ли сетев ой ) механи з ма обмена и нформаци ей меж д у при лож ени ями и ли частями од ного при лож ени я. В о-в торы х, это проблема экспорта метод ов объектов меж д у при лож ени ями . Т рад и ци онны е DLL экспорти рую т (д елаю т д оступны ми и з в не) процед уры и функци и , а не объекты . М етод ы ж е объектов по св оей сути не могут в ы пол- няться в неконтекста объекта, которому они при над леж ат(при нци п и нкапсуля- ци и ). Д оступ кобъектам, наход ящ и мсяв отд ельны х процессах, в ы полняю щ и х- ся в и з оли ров анны х ад ресны х пространств ах, трад и ци онны ми способами не- в оз мож ен в при нци пе. В -третьи х, при менени е польз ов ателем компонентов сторонни х раз работчи ков (напри мер, Delphi-компонентов ) в собств енной программе мож ет бы ть з атруд - нено конфли ктами в ерси й компонентов и ли несов мести мостью яз ы ков ой сре- д ы . Э тотперечень проблем мож етбы ть прод олж ен. Под д ерж ка COM в строена в больш и нств о сов ременны х яз ы ков программи ро- в ани я. Д алее, без ограни чени я общ ности , мы буд ем рассматри в ать основ ны е при нци пы COM на при мересред ы программи ров ани яDelphi 6. COM баз и руется на объектно-ори енти ров анном программи ров ани и . Э кземпляр COM-объекта обы чно наз ы в ается просто объектом, а ти п, которы й и д енти фи - ци руетэтотобъект, –компонентны м классом (component class и ли coclass). COM-сервер– программа, соз д аю щ ая COM-объект. Э то в сегд а и сполняемы й фай л и ли д и нами чески компонуемая би бли отека (DLL). COM-кли ент – про- грамма, обращ аю щ аясякэкспорти руемы м метод ам сервера. М ож но в ы д ели ть три в и д а серв еров . 1. В нутренни й (In-Process) сервер. Пред став ляетсобой д и нами чески компонуе- мую би бли отеку (DLL), которая мож ет соз д ав ать COM-объекты д ля и споль- з ов ани яв в ы з ы в аю щ ем (кли ентском) при лож ени и (DLL-сервер). О тноси тсяк тому ж е процессу, что и кли ентское при лож ени е, и спольз ует его ад ресное пространств о. Раз нов и д ностью в нутренни х серверов яв ляю тся компоненты ActiveX, постав ляемы ев в и д ефай лов *.dll, *.ocx и при год ны ед ляред акти ро- в ани я в раз ли чны х в и з уальны х сред ах программи ров ани я (Visual C++, Del- phi и д р.). 2. Л окальны й и ли в неш ни й сервер(Out-Of-Process Server). Соз д ается отд ель- ны м процессом на том ж екомпью тере, что и кли ентскоепри лож ени е, но ра- ботает, раз умеется, в отд ельном ад ресном пространств е. Х рани тся в в и д е EXE-фай лов (EXE-сервер). При мерами локальны х серверов яв ляю тся при - лож ени яMS Word, Excel и д р. и з пакета MS Office.
Страницы
- « первая
- ‹ предыдущая
- …
- 2
- 3
- 4
- 5
- 6
- …
- следующая ›
- последняя »