Система и способ проецирования данных от одного ко многим
Иллюстрации
Показать всеИзобретение относится к средствам проецирования информации или представления, позволяющим пользователю представлять информацию на одном или нескольких экранах без необходимости в дополнительных кабелях. Техническим результатом является обеспечение управления информацией, совместно используемой во время представления. Принцип Universal Plug and Play (UPnP) используется для объявления, обнаружения устройств отображения и управления ими. Обратный сеанс обслуживания терминалов (TS) используется для подключения отображения к машине пользователя. Вопрос посещения и получения представления решается как со стороны презентатора, так и со стороны посетителя посредством модели абонирования. Для упрощения этой модели абонирования и для обеспечения защиты представления предусмотрено использование приглашений на встречу. Эти приглашения генерируются презентатором и могут запрашиваться посетителями. 14 н. и 18 з.п. ф-лы, 15 ил., 18 табл.
Реферат
Область техники, к которой относится изобретение
Настоящее изобретение относится, в целом, к представлениям информации и, в частности, к системе и способу проецирования информации от одного презентатора на множественных посетителей и проекционные устройства.
Уровень техники
Несмотря на технологический прогресс последних лет, многие традиционные действия, связанные с бизнесом, все еще занимают существенное место на современных рабочих местах. Одним из таких действий является проведение встреч или конференций. Нередко в ходе такого совместного мероприятия одному участнику приходится представлять материал нескольким другим участникам. Традиционное средство представления информации включает в себя проецирование на экран, отображение на мониторе или ином оптически активном устройстве или представление в виде документальной копии, например, на белой доске, черной доске или проекционном экране. Хотя каждый из этих методов имеет свои достоинства и недостатки в отношении стоимости, сложности и эффективности, проецирование и отображение обычно наиболее пригодно для быстро изменяющихся данных, например, представляемых посредством слайдов или видео. Кроме того, проецирование и отображение идеально подходят для совместного использования информации с экрана компьютера или другого вычислительного устройства, например, в процессе представления слайдов посредством PowerPoint торговой марки Майкрософт.
К сожалению, для пользователей и участников проекционной технологии традиционные механизмы проецирования и отображения информации с вычислительного устройства, несмотря на высокую эффективность в действии, нередко весьма сложны в подготовке, требуют подключения шнуров, например кабелей VGA, и регулировки различных параметров. Эта сложность может создавать трудности до и в процессе представления и часто приводит к задержкам начала представления. Кроме того, такие механизмы не позволяют просто и быстро передавать управление представлением от одного выступающего другому. Так, например, если первый выступающий использует ПК для представления слайд-шоу PowerPoint и желает передать слово второму выступающему, то второму выступающему обычно приходится физически вставать со стула и занимать место первого выступающего перед ПК, что создает перерыв, задержку и отвлечение для других участников.
Еще одна проблема связана с защитой информации, представляемой на такой встрече. В частности, когда посетитель физически находится в помещении или способен наблюдать за происходящим в помещении, где проводится представление, не существует возможности ограничить возможность этого лица видеть представляемую информацию. Хотя можно использовать физические способы препятствования первоначальному доступу в физическое место представления, такие способы не обеспечивают безопасность, когда в одном и том же месте проводится несколько представлений, что рассматривалось выше. Таким образом, если человек находится в месте представления, он может наблюдать все представления, проводимые в этом месте.
Чтобы разрешить эту проблему, во многих местах для семинаров используют несколько разных, меньшего размера мест или помещений для представления. Таким образом, можно более тщательно проверять лиц, допущенных к каждому представлению. Однако, несмотря на решение вопросов безопасности для презентаторов, это создает трудности для посетителей на этих представлениях. Посетителям приходится физически переходить с места на место, чтобы видеть разные представления, собирать и разбирать свои материалы на каждом месте. Кроме того, посетители с физическими недостатками могут пропустить начало представления или им придется уходить с представления раньше, чтобы перейти в другое помещение. Дополнительный материал может быть пропущен, поскольку посетители могут ошибиться комнатой или не найти место того или иного представления.
Поэтому имеется необходимость в системе и способе проецирования информации от одного к многим (1:М), которые удовлетворяют требованиям и желаниям как презентатора, так и посетителя, обеспечивают безопасность для презентаторов и позволяют управлять информацией, совместно используемой во время представления.
Раскрытие изобретения
Настоящее изобретение предусматривает новые и усовершенствованные систему и способ отображения информации для множественных посетителей. В частности, настоящее изобретение предусматривает новые и усовершенствованные систему и способ доставки представления множественным посетителям. Предпочтительно, представление можно отображать на проекторе и/или устройствах отображения множественных посетителей. Представление может быть открытым или может требовать осуществления защитной аутентификации для допуска посетителя к просмотру представления.
Согласно предпочтительному варианту осуществления настоящего изобретения представление и посетители отвечают стандарту "Universal Plug and Play", что позволяет обнаруживать их в сети. Соединения производятся посредством сеанса обслуживания терминалов. С точки зрения презентатора, обнаружение проекторов и посетителей позволяет контролировать, для кого и что допускается к представлению. Для этого можно требовать приглашение, сгенерированное презентатором, которое обеспечивает допуск на представление. Для усиления защиты можно также требовать пароль. Презентатор может также указать, что представление открытое, и может автоматически генерировать приглашения для любого посетителя, запрашивающего допуск на представление. С точки зрения посетителей, они могут найти имеющиеся представления, осуществляя поиск устройства представления в сети. Затем они могут выбрать, какие представления они хотят увидеть, и запросить допуск к ним. Когда презентатор хочет остановить представление, он просто просит менеджера представления остановить представление. Менеджер представления разрывает все соединения и очищает все состояния.
Согласно одному варианту осуществления настоящего изобретения предусмотрены интерфейсы прикладного программирования (API). Эти API включают в себя методы просмотра представления и методы дачи представления. API просмотра включают в себя методы регистрации и отмены регистрации устройства отображения и метод посещения представления. API дачи представления включают в себя методы начала и остановки представления, приглашения и отключения посетителя, фильтрации экрана презентатора, извлечения списка отдельных пользователей и проекторов, извлечения возможностей, состояния и списка соединений проектора и извлечения и задания настроек и режима отображения проектора.
Краткое описание чертежей
Прилагаемые чертежи входят в состав и образуют часть описания изобретения, иллюстрируя некоторые аспекты настоящего изобретения, и совместно с описанием служат для объяснения принципов изобретения. На чертежах:
фиг.1 - блок-схема, в общем виде иллюстрирующая иллюстративную компьютерную систему, в которой реализуется настоящее изобретение;
фиг.2 - упрощенная блок-схема, иллюстрирующая программный интерфейс между двумя сегментами кода;
фиг.3 - упрощенная блок-схема, иллюстрирующая альтернативный вариант осуществления программного интерфейса между двумя сегментами кода;
фиг.4 - упрощенная блок-схема, иллюстрирующая программный интерфейс между двумя сегментами кода, коммуникации которых разбиты на множественные дискретные коммуникации, иллюстрирующие концепцию разложения;
фиг.5 - упрощенная блок-схема, иллюстрирующая альтернативный вариант осуществления программного интерфейса между двумя сегментами кода, коммуникации которых разбиты на множественные дискретные коммуникации, иллюстрирующие концепцию разложения;
фиг.6 - упрощенная блок-схема, иллюстрирующая программный интерфейс между двумя сегментами кода, определенные аспекты которых игнорируются, добавляются или переопределяются, иллюстрируя концепцию переопределения;
фиг.7 - упрощенная блок-схема, иллюстрирующая альтернативный вариант осуществления программного интерфейса между двумя сегментами кода, определенные аспекты которых игнорируются, добавляются или переопределяются, иллюстрируя концепцию переопределения;
фиг.8 - упрощенная блок-схема, иллюстрирующая программный интерфейс между двумя сегментами кода, некоторые функции двух модулей кода которых сливаются так, что интерфейс между ними меняет форму, иллюстрируя концепцию внутритекстового кодирования;
фиг.9 - упрощенная блок-схема, иллюстрирующая альтернативный вариант осуществления программного интерфейса между двумя сегментами кода, некоторые функции двух модулей кода которых сливаются так, что интерфейс между ними меняет форму, иллюстрируя концепцию внутритекстового кодирования;
фиг.10 - упрощенная блок-схема, иллюстрирующая программный интерфейс между двумя модулями кода, где коммуникация осуществляется косвенно путем разбиения коммуникации на множественные дискретные коммуникации, иллюстрируя концепцию разведения;
фиг.11 - упрощенная блок-схема, иллюстрирующая альтернативный вариант осуществления программного интерфейса между двумя модулями кода, где коммуникация осуществляется косвенно путем разбиения коммуникации на множественные дискретные коммуникации, иллюстрируя концепцию разведения;
фиг.12 - упрощенная блок-схема, иллюстрирующая динамически переписываемый код для замены программного интерфейса чем-либо другим, что достигает того же результата, иллюстрируя концепцию переписывания;
фиг.13 - упрощенная блок-схема, иллюстрирующая альтернативный вариант осуществления динамически переписываемого кода для замены программного интерфейса чем-либо другим, что достигает того же результата, иллюстрируя концепцию переписывания;
фиг.14А и 14В - схематические диаграммы, где показаны альтернативные архитектуры сетевой системы, в которой можно реализовать вариант осуществления изобретения, содержащей множественные компьютеры, в частности, проецирующий компьютер и множественные целевые компьютеры проецирования, а также экран дисплея или проектор в помещении для электронных конференций; и
фиг.15 - схематическая диаграмма, более подробно иллюстрирующая размещение и взаимные соединения компонентов прикладной программы проецирования и связанных с ними компонентов согласно варианту осуществления изобретения.
Хотя изобретение будет описано в связи с определенными предпочтительными вариантами осуществления, никакого ограничения этими вариантами осуществления не предусмотрено. Напротив, предусмотрен охват всех альтернатив, модификаций и эквивалентов, отвечающих сущности и объему изобретения, заданным в прилагаемой формуле изобретения.
Осуществление изобретения
На чертежах, где сходные позиции обозначают сходные элементы, проиллюстрирована реализация изобретения в подходящей вычислительной среде. Хотя это и не требуется, изобретение будет описано в общем контексте компьютерно-выполняемых инструкций, например, программных модулей, выполняемых персональным компьютером. В общем случае, программные модули включают в себя процедуры, программы, объекты, компоненты, структуры данных и пр., которые выполняют конкретные задания или реализуют те или иные абстрактные типы данных. Кроме того, специалистам в данной области очевидно, что изобретение можно осуществлять на практике применительно к другим конфигурациям компьютерной системы, включая карманные устройства, многопроцессорные системы, микропроцессорную или программируемую бытовую электронику, сетевые ПК, мини-компьютеры, универсальные компьютеры и т.п. Изобретение также можно осуществлять на практике в распределенных вычислительных средах, где задания выполняются удаленными обрабатывающими устройствами, связанными посредством сети связи. В распределенной вычислительной среде программные модули могут размещаться в локальных и удаленных запоминающих устройствах.
На фиг.1 показан пример подходящей среды 100 вычислительной системы, в которой можно реализовать изобретение. Среда 100 вычислительной системы является всего лишь примером подходящей вычислительной среды и не призвана как-либо ограничивать объем использования или функциональные возможности изобретения. Также вычислительную среду 100 не следует рассматривать как имеющую какую-либо зависимость или требование в отношении к какому-либо одному компоненту, проиллюстрированному в иллюстративной операционной среде 100, или их комбинации.
Изобретение применимо ко многим другим средам или конфигурациям вычислительной системы общего или специального назначения. Примеры общеизвестных вычислительных систем, сред и/или конфигураций, которые могут быть пригодны для использования в соответствии с изобретением, включают в себя, но не исключительно, персональные компьютеры, компьютеры-серверы, карманные или портативные устройства, многопроцессорные системы, системы на основе микропроцессора, телевизионные приставки, программируемую бытовую электронику, сетевые ПК, мини-компьютеры, универсальные компьютеры, распределенные вычислительные среды, которые включают в себя любые из вышеперечисленных систем или устройств, и т.п.
Изобретение можно описать в общем контексте компьютерно-выполняемых инструкций, например программных модулей, выполняемых компьютером. В общем случае программные модули включают в себя процедуры, программы, объекты, компоненты, структуры данных и т.п., которые выполняют конкретные задания или реализуют определенные абстрактные типы данных. Изобретение также можно применять на практике в распределенных вычислительных средах, где задания выполняются удаленными обрабатывающими устройствами, связанными посредством сети связи. В распределенной вычислительной среде программные модули могут размещаться как на локальных, так и на удаленных компьютерных носителях данных, включая запоминающие устройства.
Согласно фиг.1 иллюстративная система для реализации изобретения включает в себя вычислительное устройство общего назначения в виде компьютера 110. Компоненты компьютера 110 могут включать в себя, но не исключительно процессор 120, системную память 130 и системную шину 121, которая подключает различные компоненты системы, включая системную память, к процессору 120. Системная шина 121 может относиться к любому из нескольких типов шинных структур, включая шину памяти или контроллер памяти, периферийную шину и локальную шину с использованием разнообразных шинных архитектур. В порядке примера, но не ограничения, такие архитектуры включают в себя шину архитектуры промышленного стандарта (ISA), шину микроканальной архитектуры (MCA), шину расширенного стандарта ISA (EISA), локальную шину Ассоциации по стандартам в области видеоэлектроники (VESA) и шину подключений периферийных компонентов (PCI), также именуемую шиной расширения.
Компьютер 110 обычно содержит разнообразные компьютерно-считываемые носители. Компьютерно-считываемые носители могут представлять собой любые имеющиеся носители, к которым может осуществлять доступ компьютер 110, и включают в себя энергозависимые и энергонезависимые носители, сменные и стационарные носители. В порядке примера, но не ограничения компьютерно-считываемый носитель может представлять собой компьютерный носитель данных или среду передачи данных. Компьютерные носители данных включают в себя энергозависимые и энергонезависимые, сменные и стационарные носители, реализованные посредством любого способа или технологии для хранения информации, например, компьютерно-считываемых команд, структур данных, программных модулей или других данных. Компьютерные носители данных включают в себя, но не исключительно ОЗУ, ПЗУ, ЭСППЗУ, флэш-память или другую технологию памяти, CD-ROM, цифровые универсальные диски (DVD) или иные оптические дисковые носители данных, магнитные кассеты, магнитную ленту, магнитные дисковые носители данных или иные магнитные запоминающие устройства или любой другой носитель, который можно использовать для хранения полезной информации и к которому компьютер 110 может осуществлять доступ. Среды передачи данных обычно воплощают компьютерно-считываемые команды, структуры данных, программные модули или другие данные в виде модулированного сигнала данных, например, несущей волны или иного транспортного механизма. Среды передачи данных также включают в себя любые среды доставки информации. Термин "модулированный сигнал данных" означает сигнал, одна или несколько характеристик которого изменяется так, чтобы кодировать информацию в сигнале. В порядке примера, но не ограничения среды передачи данных содержат проводные среды, например проводную сеть или прямое проводное соединение, и беспроводные среды, например акустические, РЧ, инфракрасные и другие беспроводные среды. В число компьютерно-считываемых сред входят также комбинации любых из вышеперечисленных позиций.
Системная память 130 содержит компьютерные носители данных в виде энергозависимой и/или энергонезависимой памяти, например, постоянной памяти (ПЗУ) 131 и оперативной памяти (ОЗУ) 132. Базовая система ввода/вывода (BIOS) 133, содержащая основные процедуры, которые помогают переносить информацию между элементами компьютера 110, например, при запуске, хранится в ПЗУ 131. ОЗУ 132 обычно содержит данные и/или программные модули, которые непосредственно доступны процессору 120 и/или в данный момент обрабатываются им. В порядке примера, но не ограничения, на фиг.1 показаны операционная система 134, прикладные программы 135, другие программные модули 136 и программные данные 137.
Компьютер 110 может также включать в себя другие сменные/стационарные, энергозависимые/энергонезависимые компьютерные носители данных. В порядке примера на фиг.1 показан привод 141 жесткого диска, который производит считывание со стационарного энергонезависимого магнитного носителя и запись на него, привод 151 магнитного диска, который производит считывание со сменного энергонезависимого магнитного диска 152 и запись на него, и привод 155 оптического диска, который производит считывание со сменного энергонезависимого оптического диска 156, например CD-ROM или другого оптического носителя, и запись на него. Другие сменные/стационарные, энергозависимые/энергонезависимые компьютерные носители данных, которые можно использовать в иллюстративной операционной среде, включают в себя, но не исключительно, кассеты с магнитной лентой, карты флэш-памяти, цифровые универсальные диски, ленту для цифрового видео, полупроводниковое ОЗУ, полупроводниковое ПЗУ и т.д. Привод 141 жесткого диска обычно подключен к системной шине 121 посредством интерфейса стационарной памяти, например, интерфейса 140, а привод 151 магнитного диска и привод 155 оптического диска обычно подключены к системной шине 121 посредством интерфейса сменной памяти, например интерфейса 150.
Приводы и соответствующие компьютерные носители данных, описанные выше и показанные на фиг.1, обеспечивают хранение компьютерно-считываемых команд, структур данных, программных модулей и других данных для компьютера 110. Например, на фиг.1 показано, что на жестком диске 141 хранятся операционная система 144, прикладные программы 145, другие программные модули 146 и программные данные 147. Заметим, что эти компоненты могут быть идентичны операционной системе 134, прикладным программам 135, другим программным модулям 136 и программным данным 137 или отличны от них. Операционная система 144, прикладные программы 145, другие программные модули 146 и программные данные 147 обозначены здесь другими позициями, чтобы показать, что они, как минимум, представляют собой разные копии. Пользователь может вводить команды и информацию в компьютер 110 через устройства ввода, например, клавиатуру 162 и указательное устройство 161, под которым обычно понимают мышь, шаровой манипулятор или сенсорную панель. Другие устройства ввода (не показаны) могут включать в себя микрофон, джойстик, игровую панель, спутниковую антенну, сканер и т.п. Эти и другие устройства ввода часто подключают к процессору 120 через интерфейс 160 пользовательского ввода, который подключен к системной шине, но можно подключать посредством других структур интерфейса и шины, например, параллельного порта, игрового порта или универсальной последовательной шины (USB). Монитор 191 или устройство отображения другого типа может также быть подключен к системной шине 121 через интерфейс, например, видеоинтерфейс 190. Помимо монитора, компьютеры могут содержать другие периферийные устройства вывода, например, громкоговорители 197 и принтер 196, которые может быть подключены через периферийный интерфейс 195 вывода.
Компьютер 110 может работать в сетевой среде с использованием логических соединений с одним или несколькими удаленными компьютерами, например, удаленным компьютером 180. В качестве удаленного компьютера 180 может выступать другой персональный компьютер, сервер, маршрутизатор, сетевой ПК, равноправное устройство или другой общий сетевой узел, который обычно содержит многие или все элементы, описанные выше применительно к персональному компьютеру 110, хотя на фиг.1 показано только запоминающее устройство 181. Логические соединения, указанные на фиг.1, включают в себя локальную сеть (ЛС) 171 и глобальную сеть (ГС) 173, но также могут включать в себя другие сети. Такие сетевые среды обычно используются в офисных, производственных компьютерных сетях, интрасетях и в Интернете.
При использовании в сетевой среде ЛС персональный компьютер 110 подключен к локальной сети 171 через сетевой интерфейс или адаптер 170. При использовании в сетевой среде ГС компьютер 110 обычно содержит модем 172 или другие средства установления соединений по ГС 173, например Интернету. Модем 172, который может быть внутренним или внешним, может быть подключен к системной шине 121 через интерфейс 160 пользовательского ввода или другой соответствующий механизм. В сетевой среде программные модули, указанные в отношении персонального компьютера 110, или часть из них могут храниться в удаленном запоминающем устройстве. В порядке примера, но не ограничения, на фиг.1 показано, что удаленные прикладные программы 185 размещены в запоминающем устройстве 181. Очевидно, что показанные сетевые соединения являются иллюстративными и что можно использовать другие средства установления линии(й) связи между компьютерами.
Ниже изобретение будет описано со ссылкой на действия и символические представления операций, которые выполняются одним или несколькими вычислительными устройствами, если не указано обратное. При этом следует понимать, что такие действия и операции, которые иногда называют компьютерно-выполняемыми, включают в себя манипуляции, выполняемые процессором компьютера над электрическими сигналами, представляющими данные в структурированной форме. Эти манипуляции сводятся к преобразованию данных или поддержанию их в ячейках системы памяти компьютера, в результате чего происходит перенастройка или иное изменение работы компьютера таким образом, как хорошо известно специалистам в данной области. Структуры данных, где поддерживаются данные, являются физическими ячейками памяти, которые имеют конкретные свойства, заданные форматом данных. Однако, хотя изобретение описано в вышеприведенном контексте, это не означает, и это очевидно специалистам в данной области, что некоторые из описанных ниже действий и операций не могут также выполняться аппаратными средствами.
В действительности, программный интерфейс (или просто интерфейс) можно рассматривать как любой механизм, процесс, протокол, позволяющий одному или нескольким сегменту(ам) кода осуществлять связь с функциями, обеспечиваемыми одним или несколькими другими сегментами кода, или доступ к ним. Альтернативно программный интерфейс можно рассматривать как один или несколько механизм(ов), метод(ов), функциональный(х) вызов(ов), модуль(ей), объект(ов) и т.п. компонента системы, способного(ых) обмениваться данными с одним или несколькими другим(и) механизмом(ами), методом(ами), функциональным(ыми) вызовом(ами), модулем(ями) и т.п. другого(их) компонента(ов). Термин "сегмент кода" в предыдущем предложении предусматривает включение одной или более инструкций или строк кода и содержит, например, модули кода, объекты, подпрограммы, функции и т.д., независимо от применяемой терминологии или от того, раздельно ли компилируются сегменты кода, или предоставлены ли сегменты кода в виде исходного, промежуточного или объектного кода, используются ли сегменты кода в системе прогона или процессе, или размещены ли они на одной машине или на разных машинах или же распределены по множественным машинам, или реализованы ли функции, представленные сегментами кода, полностью программными средствами, полностью аппаратными средствами или комбинацией программных и аппаратных средств.
Теоретически программный интерфейс можно рассматривать обобщенно, как показано на фиг.2 или фиг.3. На фиг.2 показан интерфейс Интерфейс 1, служащий каналом связи между первым и вторым сегментами кода. На фиг.3 показан интерфейс, содержащий интерфейсные объекты I1 и I2 (которые могут быть или не быть частью первого и второго сегментов кода), которые позволяют первому и второму сегментам кода связываться посредством носителя М. Согласно фиг.3 интерфейсные объекты I1 и I2 можно рассматривать как отдельные объекты одной системы, а также можно считать, что объекты I1 и I2 плюс носитель М образуют интерфейс. Хотя на фиг.2 и 3 показаны двусторонний поток и интерфейсы по обе стороны потока, некоторые реализации могут обеспечивать только один информационный поток в одном направлении (или ни одного информационного потока, как описано ниже) или интерфейсный объект с одной стороны. В порядке примера, но не ограничения, определение программного интерфейса охватывает такие термины, как программный интерфейс приложения (API), точка входа, метод, функция, подпрограмма, вызов удаленной процедуры и интерфейс компонентной объектной модели (COM).
Аспекты такого программного интерфейса могут включать в себя метод, посредством которого первый сегмент кода передает информацию (где термин "информация" используется в самом широком смысле и включает в себя данные, команды, запросы и т.д.) второму сегменту кода; метод, посредством которого второй сегмент кода принимает информацию; и структуру, последовательность, синтаксис, организацию, схему, хронирование и содержимое информации. В этой связи, сам по себе нижележащий транспортный носитель может быть не важен для действия интерфейса, является ли носитель проводным или беспроводным или комбинированным, при условии, что информация переносится так, как определено интерфейсом. В некоторых случаях информация может не передаваться в одном или обоих направлениях в традиционном смысле, поскольку перенос информации может либо осуществляться другим механизмом (например, информация может помещаться в буфер, файл и т.п., отдельный от информационного потока между сегментами кода), либо не существовать, как в случае, когда один сегмент кода просто обращается к функции, осуществляемой вторым сегментом кода. Некоторые или все эти аспекты могут быть важны в данном случае, например, в зависимости от того, являются ли сегменты кода частью системы в свободно связанной или тесно связанной конфигурации, и поэтому этот список следует рассматривать в порядке иллюстрации, но не ограничения.
Это определение программного интерфейса известно специалистам в данной области и явствует из нижеследующего подробного описания изобретения. Существуют, однако, другие пути реализации программного интерфейса и, если явно не указано обратное, их также следует рассматривать в объеме формулы изобретения, приведенного в конце этого описания изобретения. Такие другие пути могут оказаться более изощренными или сложными, чем упрощенная функция для достижения, в принципе, того же результата. Теперь кратко опишем некоторые иллюстративные альтернативные реализации программного интерфейса.
А. РАЗЛОЖЕНИЕ
Коммуникация от одного сегмента кода к другому может осуществляться косвенно путем разбиения коммуникации на множество дискретных коммуникаций. Это схематически представлено на фиг.4 и 5. Там показано, что некоторые интерфейсы можно описывать в терминах делимых множеств функций. Таким образом, функции интерфейса, показанные на фиг.2 и 3, можно разлагать для получения того же результата, так же, как число 24 можно представить как 2 умноженное на 2 умноженное на 3 умноженное на 2. Соответственно согласно фиг.4 функцию, обеспечиваемую интерфейсом Интерфейс 1, можно разложить для преобразования коммуникаций интерфейса по множественным интерфейсам Интерфейс 1А, Интерфейс 1В, Интерфейс 1С и т.д., получая тот же результат. Согласно фиг.5 функцию, обеспечиваемую интерфейсом I1, можно разложить по множественным интерфейсам I1a, I1b, I1c и т.д., получая тот же результат. Аналогично, интерфейс I2 второго сегмента кода, который принимает информацию от первого сегмента кода, можно разложить на множественные интерфейсы I2a, I2b, I2c и т.д. При разложении количество интерфейсов, входящих в состав первого сегмента кода, не обязано совпадать с количеством интерфейсов, входящих в состав второго сегмента кода. В любом из случаев, представленных на фиг.4 и 5, функциональная сущность интерфейсов Интерфейс 1 и I1 остается такой же, как показано на фиг.2 и 3 соответственно. Разложение интерфейсов можно также осуществлять в соответствии со свойствами ассоциативности, коммутативности и другими математическими свойствами, так что разложение может быть трудно распознаваемым. Например, упорядочение операций может быть не важно, и, следовательно, функция, осуществляемая интерфейсом, может хорошо осуществляться до достижения интерфейса, другим фрагментом кода или интерфейса, или осуществляться отдельным компонентом системы. Кроме того, профессиональному программисту очевидно, что одного и того же результата можно достичь разными путями, делая разные функциональные вызовы.
В. ПЕРЕОПРЕДЕЛЕНИЕ
В некоторых случаях имеется возможность игнорировать, добавлять или переопределять определенные аспекты (например, параметры) программного интерфейса, тем не менее, получая нужный результат. Это показано на фиг.6 и 7. Пусть, например, интерфейс Интерфейс 1, показанный на фиг.2, содержит функциональный вызов Square (input, precision, output) (квадрат), вызов, который содержит три параметра, input (вход), precision (точность) и output (выход), и который исходит от 1-го сегмента кода на 2-й сегмент кода. Если средний параметр, precision, не играет роли в данном сценарии, как показано на фиг.6, его можно просто игнорировать или даже заменить (в данной ситуации) параметром meaningless (не имеющий смысла). Можно также добавить параметр additional (дополнительный), не играющий роли. В любом случае, функция "квадрат" может выполняться при условии, что выходное значение возвращается после того, как входное значение возводится в квадрат вторым сегментом кода. "Точность" может быть весьма важным параметром для некоторой последующей или другой части вычислительной системы; если же выясняется, что для узкой цели вычисления квадрата "точность" не требуется, ее можно заменить или игнорировать. Например, вместо того, чтобы передавать действительное значение "точность", можно передавать не имеющее смысла значение, например, дату рождения, не оказывая отрицательного влияния на результат. Аналогично, как показано на фиг.7, интерфейс I1 можно заменить интерфейсом I1', переопределенным на игнорирование или добавление параметров к интерфейсу. Интерфейс I2 можно аналогично переопределить как интерфейс I2', переопределенный на игнорирование ненужных параметров или параметров, которые можно обрабатывать в другом месте. Суть в том, что в некоторых случаях программный интерфейс может включать в себя аспекты, например, параметры, которые, по некоторой причине, не нужны и потому могут игнорироваться или переопределяться или обрабатываться в другом месте для других целей.
С. ВНУТРИТЕКСТОВОЕ КОДИРОВАНИЕ
Возможно также осуществлять слияние некоторых или всех функций двух отдельных модулей кода, в результате чего "интерфейс" между ними изменяет форму. Например, функции, указанные на фиг.2 и 3, можно преобразовать в функции, указанные на фиг.8 и 9 соответственно. Согласно фиг.8, предыдущие 1-й и 2-й сегменты кода, показанные на фиг.2, сливаются в модуль, содержащий их обе. В этом случае сегменты кода могут по-прежнему связываться друг с другом, но интерфейс можно преобразовать к форме, более пригодной для единого модуля. Так, например, формальные операторы Call и Return могут уже не требоваться, но аналогичные обработка или отклик(и), соответствующие интерфейсу Интерфейс 1, по-прежнему могут иметь силу. Аналогично, как показано на фиг.9, интерфейс I2, показанный на фиг.3, частично (или полностью) можно записать внутритекстово в интерфейс I1, чтобы сформировать интерфейс I1". Показано, что интерфейс I2 делится на I2a и I2b, и часть I2a интерфейса закодирована внутритекстово с интерфейсом I1 для формирования интерфейса I1". Для конкретного примера, положим, что интерфейс I1, показанный на фиг.3, осуществляет функциональный вызов square (input, output), получаемый от интерфейса I2, который после обработки значения, переданного посредством input (для возведения его в квадрат) вторым сегментом кода, передает результат возведения в квадрат обратно посредством output. В этом случае обработка, производимая вторым сегментом кода (возведение input в квадрат), может осуществляться первым сегментом кода без обращения к интерфейсу.
D. РАЗВЕДЕНИЕ
Коммуникация от одного сегмента кода к другому может осуществляться косвенно путем разбиения коммуникации на множественные дискретные коммуникации. Это схематически обозначено на фиг.10 и 11. Согласно фиг.10 один или несколько фрагментов связующего программного обеспечения (интерфейс(ы) разведения, поскольку они разводят функциональные возможности и/или функции интерфейса от исходного интерфейса), предусмотрены для преобразования коммуникаций на первом интерфейсе, Интерфейсе 1, чтобы согласовывать их с другим интерфейсом, в данном случае интерфейсами Интерфейсом 2А, Интерфейсом 2В и Интерфейсом 2С. Это должно происходить, например, когда установлена база приложений, предназначенная для связи, скажем, с операционной системой в соответствии с протоколом Интерфейса 1, но затем операционная система изменилась для использования другого интерфейса, в данном случае интерфейсов Интерфейса 2А, Интерфейса 2В и Интерфейса 2С. Дело в том, что исходный интерфейс, используемый 2-ым сегментом кода, изменился так, что он перестал быть совместимым с интерфейсом, используемым 1-ым сегментом кода, в результате чего используется посредник для обеспечения совместимости старого и нового интерфейсов. Аналогично, как показано на фиг.11, можно ввести третий сегмент кода с интерфейсом разведения DI1, чтобы принимать коммуникации от интерфейса I1, и с интерфейсом разведения DI2, чтобы передавать функциональные возможности интерфейса, например, на интерфейсы I2a и I2b, перенастроенные на работу с DI2, но при этом получать тот же функциональный результат. Аналогично, DI1 и DI2 могут работать совместно, чтобы преобразовывать функциональные возможности интерфейсов I1 и I2, указанных на фиг.3, к новой операционной системе, в то же время обеспечивая такой же или аналогичный функциональный результат.
Е. ПЕРЕПИСЫВАНИЕ
Еще один возможный вариант состоит в динамическом переписывании кода для замены функциональных возможностей интерфейса чем-то другим, что, тем не менее, приводит к тому же общему результату. Например, может иметь место система, в которой сегмент кода, представленный на промежуточном языке (например, Microsoft IL, Java ByteCode и пр.), поступает на компилятор или интерпретатор, работающий по принципу "точно вовремя" (JIT), в среде выполнения (например, обеспечиваемый каркасом. Net, средой выполнения Java или другими подобного типа средами выполнения). JIT-компилятор может быть выполнен с возможностью динамически преобразовывать коммуникации от 1-го сегмента кода ко 2-му сегменту кода, т.е. согласовывать их с другим инте