Технология OLE
Формирование большинства документов сопряжено с необходимостью дополнения текстовой информации различными иллюстративными материалами (схемами, диаграммами, таблицами и др.), которые сложно подготовить в среде текстового редактора. Для этих целей используются сторонние приложения, разработанные специально для создания подобных фрагментов — табличные процессоры, графические редакторы. Следовательно, для сопряжения текстовых фрагментов с иными форматами должна существовать специальная технология, обеспечивающая возможность совмещения текста и, например, иллюстрации (рис. 11.1).

Рис. 11.1. Сопряжение приложений для передачи фрагментов документа
Технология OLE (Object Linking and Embedding, связывание и внедрение объектов) позволяет устанавливать взаимосвязь между данными различных программ, используемых при создании и редактировании документов. В рамках технологии OLE применяются следующие термины:
- • объект — связанный или внедренный элемент данных;
- • источник — приложение или документ, из которого получен внедренный или связанный объект (например, если происходит внедрение текста из Word в рабочий лист Excel, то Word является приложением-источником, которое иногда называют сервером)’,
- • контейнер — приложение или документ, получающее внедренный или связанный объект (например, если происходит внедрение текста из Word в рабочий лист Excel, то Excel является приложением-контейнером, которое иногда называют клиентом или приемником);
- • внедрить — вставить объект в конечный документ так, что объект становится постоянной частью этого документа;
- • связать — сохранить в конечном документе указатель на исходный объект; при изменении исходного объекта связанный объект в конечном документе обновляется автоматически или по запросу;
- • редактирование по месту — возможность, предоставленная технологией OLE, которая позволяет редактировать внедренный объект непосредственно в конечном приложении; при редактировании по месту в приложении-клиенте появляются меню и панели инструментов приложения-сервера.
Технология OLE поддерживает два механизма: связывание (linking) и внедрение (embedding). Различие между ними существенное, поэтому для правильного и эффективного использования OLE необходимо понимать специфику каждого механизма (рис. 11.2).

Рис. 11.2. Схема механизмов технологии OLE: а — связывание; б — внедрение
В случае создания в документе связи с данными документа сторонней программы приложение сохраняет множество указателей на исходные данные, но сами данные оно не хранит. Если исходные данные изменяются, то документ, содержащий связь, обновляется либо автоматически, либо по запросу. Обычно для связанных данных требуется меньше дискового пространства, чем для внедренных, однако ддя связывания необходимо, чтобы исходный документ всегда оставался доступным.
Внедренный объект становится частью файла-клиента. Для того чтобы его использовать совместно с целевым документом, понадобится только один файл. В то же время при внедрении данных исходного документа в документ другого приложения в получающий документ вставляется копия внедряемых данных. В этом случае при изменении исходных данных внедренная информация обновляться не будет, но редактирование внедренных объектов возможно непосредственно из конечного документа благодаря свойству редактирования по месту, которое позволяет использовать инструменты стороннего приложения непосредственно в теле документа-контейнера. Следует помнить, что при внедрении объекта в файл-контейнер документ может значительно увеличиться в объеме. Если внедряемый объект — текстовый фрагмент или простая графика, то такое увеличение объема, как правило, несущественно. Однако при работе с несколькими большими графическими файлами ресурсы компьютера могут быть серьезно перегружены.
Сравнительная характеристика механизмов связывания и внедрения объектов при использовании технологии OLE приведена в табл. 11.1.
Правильное использование механизмов, предоставляемых технологией OLE, позволит сократить время и ресурсы компьютера и тем самым повысить эффективность работы с документами.
Предположим, что необходимо использовать в отчетном документе Word данные таблицы, содержащей сведения о динамике погашения кредитов в филиале финансовой компании и записанной в исходном документе, который хранится на файловом сервере. Эти данные в исходном документе еженедельно обновляются сотрудниками кредитного отдела и необходимо, чтобы из документа-отчета (Word), подготавливаемого для представления в головной офис, всегда имелся доступ к текущим значениям таблицы. В данном случае необходимо использовать связывание исходного документа и формируемого отчета. Обновление сведений в этом случае может быть автоматичеТаблица 11.1. Сравнительная характеристика механизмов технологии OLE
Механизм технологии OLE
- 1. Меньший объем используемого дискового пространства.
- 2. Автоматическая актуализация объектов
- 1. Все объекты отображаются в конечном документе.
- 2. Для полноценной работы необходим только конечный файл
Необходимы оба файла — исходный и конечный
- 1. Возможно существенное увеличение исходного объема файла.
- 2. Необходима ручная корректировка данных при изменении исходного объекта
- 1. Объект предназначен для нескольких конечных документов и требуется обеспечить идентичность этих данных во всех документах.
- 2. Объект может со временем измениться и необходимо каждый раз обновлять его в исходном приложении.
- 3. Необходимо избежать увеличения размера конечного документа
- 1. Необходимо, чтобы исходные объекты в их текущем виде стали постоянной частью конечного документа.
- 2. Предполагается, что исходный документ может быть недоступен для конечного документа после завершения его формирования
ским, при котором изменения в динамике данных всегда будут отражаться в отчете, или ручным, при котором значения в документе Word обновляются по запросу.
Если необходимо, чтобы исходные данные в их текущем виде стали постоянной частью конечного документа, или полагается, что исходный документ может быть недоступен для конечного документа, следует использовать внедрение, а не связывание. Предположим, что планируется создание отчета в Microsoft Word, который должен содержать несколько сводных таблиц и диаграмм Excel, и необходимо взять этот отчет с собой для представления в головной офис этой финансовой компании, расположенный в другом городе. На жестком диске портативного компьютера установлены Excel и Word, однако исходные документы Excel хранятся на файловом сервере в офисе.
В данном случае следует внедрить нужные данные из таблиц Excel в документ Word. Если в дороге возникнет необходимость переформатировать или изменить данные Excel, можно просто дважды щелкнуть на внедренных данных в документе Word, чтобы запустить Excel и изменить данные с помощью этой программы.
Внедренные объекты необходимо обновлять вручную. Следует помнить, что на загрузку файлов с внедренными объектами времени уходит меньше, чем на загрузку связанных файлов.
OLE DB
OLE DB (англ. Object Linking and Embedding, Database ) — набор интерфейсов, основанных на COM, которые позволяют приложениям обращаться к данным, хранимым в разных источниках информации или хранилищах данных с помощью унифицированного доступа.
OLE DB (связывание и внедрение объектов, базы данных, а иногда в литературе встречается как OLEDB или OLE-DB) является API разработанной Microsoft для доступа к различным типам данных, которые хранятся в единой форме. Программа представляет собой набор интерфейсов реализованных с помощью Component Object Model (COM); в данном случае это связано с OLE. Она была разработана в качестве дальнейшего развития и должна прийти на замену и в качестве преемника ODBC, расширяя набор функций для поддержки более широкого круга нереляционных источников данных, таких как объектно ориентированые базы данных или электронные таблицы, и для которых не обязательно использовать SQL.
OLE DB отделяет хранилище данных из приложения, которое должно иметь доступ к нему через набор абстракций, которые включают DataSource, сессию, командную строку. Это было сделано потому, что различным приложениям необходим доступ к различным видам и источникам данных и не всегда нужно знать, как получить доступ к методологии функционирования конкретной технологии. OLE DB концептуально разделена на потребителей и поставщиков. Потребителями являются приложения, которым необходим доступ к данным, а поставщик реализует в своем интерфейсе программный компонент и, следовательно, обеспечивает информацией потребителя. OLE DB является частью Microsoft Data Access Components (MDAC). MDAC является группой технологий Microsoft, которые взаимодействуют вместе, как основа, которая позволяет программистам создать единый и всеобщий способ разработки приложений для доступа к данным практически любого хранилища. OLE DB провайдеры могут быть созданы для обеспечения простого доступа к таким хранилищам данных как текстовые файлы и электронные таблицы, вплоть до таких сложных баз данных, как Oracle, SQL Server и Sybase ASE. Он может также обеспечить доступ к иерархическими хранилищами данных таких, как системы электронной почты.
Однако, поскольку различные хранилища данных технологий могут иметь разные возможности, OLE DB не может реализовать все возможности интерфейса доступные для OLE DB. Возможности, которые доступны осуществляются посредством использования объектов COM — поставщик OLE DB будет отсылать к карте хранилища данных технологий обеспечивая функциональность для конкретного интерфейса COM. Microsoft описывает наличие интерфейса «конкретного поставщика», поскольку оно не может применяться в зависимости от используемой технологии баз данных. Отметим также, что поставщики могут увеличить возможности хранения данных — таких возможностей, как услуги в терминологии Microsoft.
Связывание и внедрение объектов
Object Linking & Embedding ( OLE ) является собственностью технологии , разработанной компанией Microsoft , которая позволяет внедрять и связывающую с документами и другими объектами. Для разработчиков он предоставил OLE Control Extension (OCX), способ разработки и использования настраиваемых элементов пользовательского интерфейса. На техническом уровне объект OLE — это любой объект, реализующий IOleObject интерфейс, возможно, вместе с широким спектром других интерфейсов, в зависимости от потребностей объекта.
СОДЕРЖАНИЕ
Обзор [ править ]
OLE позволяет приложению для редактирования экспортировать часть документа в другое приложение для редактирования, а затем импортировать его с дополнительным содержимым. Например, настольная издательская система может отправлять текст в текстовый процессор или изображение в редактор растровых изображений с помощью OLE. Основным преимуществом OLE является добавление в документ различных типов данных из разных приложений, таких как текстовый редактор и редактор изображений. Это создает документ в двоичном формате составного файла и главный файл, на который имеется ссылка в документе. Изменения данных в главном файле немедленно влияют на документ, который на него ссылается. Это называется «связыванием» (вместо «встраиванием»).
OLE также используется для передачи данных между различными приложениями с помощью операций перетаскивания и буфера обмена .
История [ править ]
OLE 1.0 [ править ]
OLE 1.0, выпущенный в 1990 году, был развитием оригинальной концепции динамического обмена данными (DDE), разработанной Microsoft для более ранних версий Windows . В то время как DDE был ограничен передачей ограниченных объемов данных между двумя запущенными приложениями, OLE была способна поддерживать активные связи между двумя документами или даже встраивать один тип документа в другой.
Серверы и клиенты OLE взаимодействуют с системными библиотеками с помощью таблиц виртуальных функций или VTBL. VTBL состоит из структуры указателей функций, которые системная библиотека может использовать для связи с сервером или клиентом. Серверная и клиентская библиотеки OLESVR.DLL и OLECLI.DLL изначально были разработаны для взаимодействия между собой с помощью сообщения WM_DDE_EXECUTE .
Позднее OLE 1.0 превратилась в архитектуру для программных компонентов, известную как Component Object Model (COM), а позже — DCOM .
Когда объект OLE помещается в буфер обмена или внедряется в документ, сохраняется как визуальное представление в собственных форматах Windows (например, растровое изображение или метафайл ), так и базовые данные в собственном формате. Это позволяет приложениям отображать объект, не загружая приложение, использованное для создания объекта, а также позволяет редактировать объект, если установлено соответствующее приложение.
Объект Упаковщик , компонент OLE, доставка из Windows 3.1 до Windows XP позволяет не-OLE — объект , который будет «упакованы» , поэтому он может быть встроен в OLE клиента.
OLE 2.0 [ править ]
OLE 2.0 был следующим этапом эволюции OLE, преследуя многие из тех же целей, что и версия 1.0, но был повторно реализован поверх COM вместо прямого использования VTBL. Новыми функциями стали автоматизация OLE , перетаскивание , активация на месте и структурированное хранилище . Моникеры произошли от имен объектов OLE 1 и предоставили иерархическую систему именования объектов и ресурсов, аналогичную URL-адресам или URI , которые были изобретены независимо друг от друга. Теперь Windows объединила две технологии, поддерживающие тип URL Moniker и схему URL Moniker.
Пользовательские элементы управления OLE [ править ]
Пользовательские элементы управления OLE были представлены в 1994 году как замена устаревшим элементам управления расширением Visual Basic . Вместо их обновления новая архитектура была основана на OLE. В частности, любой контейнер, поддерживающий OLE 2.0, уже может встраивать настраиваемые элементы управления OLE, хотя эти элементы управления не могут реагировать на события, если контейнер не поддерживает это. Пользовательские элементы управления OLE обычно поставляются в виде библиотеки динамической компоновки с расширением .ocx. В 1996 году все интерфейсы для элементов управления (кроме IUnknown) стали необязательными, чтобы уменьшить размер файлов элементов управления, чтобы они загружались быстрее; тогда они были названы элементами управления ActiveX .
Технические детали [ править ]
Объекты и контейнеры OLE реализованы поверх модели компонентных объектов ; это объекты, которые могут реализовывать интерфейсы для экспорта своей функциональности. Обязательным является только интерфейс IOleObject , но могут потребоваться и другие интерфейсы, если требуются функциональные возможности, экспортируемые этими интерфейсами.
Чтобы облегчить понимание того, что следует, необходимо пояснить некоторую терминологию. Статус просмотра объекта — это то, является ли объект прозрачным, непрозрачным или непрозрачным со сплошным фоном и поддерживает ли он рисование с указанным аспектом. Место объекта — это объект, представляющий расположение объекта в его контейнере. Контейнер поддерживает объект сайта для каждого содержащегося объекта.
Далее следует список интерфейсов, сгруппированных по объектам, которые обычно должны их реализовать. Интерфейсы, обычно реализуемые объектом OLE, обычно вызываются контейнером OLE, и наоборот. Обратите внимание, что в следующем списке отступы указывают на наследование интерфейса. Все интерфейсы без отступа являются производными от IUnknown .
OLE-объект [ править ]
Контейнер OLE [ править ]
Другое [ править ]
Конкурс [ править ]
Технология OpenDoc пыталась составить конкуренцию OLE. Некоторые конкуренты Microsoft считали OpenDoc более надежным и простым в использовании; однако у OpenDoc есть некоторые известные проблемы . OpenDoc позволял пользователям просматривать и редактировать информацию в приложениях, прямо конкурируя с проприетарным стандартом OLE от Microsoft. В 1993 году некоторые конкуренты Microsoft учредили консорциум под названием Component Integration Laboratories (CIL) для разработки OpenDoc в качестве открытого стандарта для межплатформенного связывания и встраивания.
Microsoft требовала совместимости с OLE в качестве условия сертификации Microsoft совместимости приложения с Windows 95 . Изначально Microsoft объявила, что приложения, использующие OpenDoc, будут считаться совместимыми с OLE и получат сертификацию для Windows 95. Позже Microsoft отменила это решение и заявила, что приложения, использующие OpenDoc, могут вообще не проходить сертификацию. Microsoft не раскрывала спецификации и отлаженные версии OLE до тех пор, пока не выпустила свои конкурирующие приложения.
Совместимость [ править ]
Использование объектов OLE ограничивает взаимодействие, поскольку эти объекты не широко поддерживаются в программах для просмотра или редактирования файлов вне Microsoft Windows (например, встраивание других файлов в файл, таких как таблицы или диаграммы из приложения электронных таблиц в текстовый документ или файл презентации). [1] [2] [3] [4] Если программное обеспечение, которое понимает объект OLE, недоступно, объект обычно заменяется изображением (растровое представление объекта) или не отображается вообще. [5] [6] [7]
См. Также [ править ]
Ссылки [ править ]
- ^ Byfield, Брюс (2005-08-23). «Сравнение текстовых процессоров FOSS: OOo Writer, AbiWord и KWord» . Linux.com . Фонд Linux . Проверено 29 сентября 2020 .
- ^ Byfield, Брюс (2005-07-28). «Обмен файлами между OpenOffice.org и Microsoft Office» . Linux.com . Фонд Linux . Проверено 29 сентября 2020 .
- ^ Шарма, Mayank (2008-11-20). «SoftMaker Office 2008 ориентирован на совместимость с Microsoft Office» . Linux.com . Фонд Linux . Проверено 29 сентября 2020 .
- ^ Lagadec, Филипп (2006-11-30). «Безопасность OpenOffice / OpenDocument и Microsoft Office 2007 / Open XML» (PDF) . Конференция PacSec 2006 . Проверено 29 сентября 2020 .
- ^ Гонг, Ретт (2005-09-05). «RE: OLE-объект — растровое представление?» . Группа новостей : microsoft.public.win32.programmer.ole . Usenet:[email protected] . Проверено 29 сентября 2020 .
- ^ О’Нил, Майк (2005-02-09). «Богатый элемент управления редактирования, отображающий растровые изображения и другие объекты OLE» . Код проекта . Проверено 29 сентября 2020 .
- ^«ACC: Почему объекты OLE вызывают рост баз данных» . Microsoft . 2007-01-19. Архивировано из оригинала на 2008-02-15.
Внешние ссылки [ править ]
-
— извлекает вложения из документов OLE
Эта статья основана на материалах, взятых из Free On-line Dictionary of Computing до 1 ноября 2008 г. и включенных в соответствии с условиями «перелицензирования» GFDL версии 1.3 или новее.