Эффективное кодирование альтернативных графических наборов

Иллюстрации

Показать все

Изобретение относится к способам отображения графических объектов. Технический результат заключается в уменьшении времени кодирования и визуализации удаленных графических отображений. В способе выполняют одно или несколько приложений на локальном устройстве, каждое из которых генерирует графическое отображение на основе конкретного языка графики для отображения на удаленном устройстве. Принимают набор графики для конкретного языка графики, причем набор графики включает в себя один или несколько ресурсов, одну или несколько команд отображения или и то, и другое, которые используют в визуализации по меньшей мере части графического отображения для одного или нескольких приложений и данные кодирования. 3 н. и 17 з.п. ф-лы, 7 ил.

Реферат

УРОВЕНЬ ТЕХНИКИ

С ростом популярности компьютеризованных систем увеличилась необходимость в распределении файлов и ресурсов обработки компьютерных систем как в больших, так и в малых сетях. Обычно компьютерные системы и родственные устройства передают информацию по сети по разнообразным причинам, например, для обмена персональными электронными сообщениями, продажи товаров, обеспечения отчетной информации и т.д. Будет ясно, однако, что поскольку компьютерные системы и связанные с ними приложения становятся все более усложненными, возникающие проблемы, связанные с разделением (совместным использованием) данных и ресурсов на сети, также увеличиваются.

Некоторые современные способы распределения ресурсов в пределах организационной сети могут включать централизованный сервер (или локальное устройство), разделяющий ресурсы с одним или несколькими клиентами (или удаленными устройствами), которые обычно не имеют ресурсов, установленных локально. Такие системы обычно используют специализированный протокол, такой как протокол удаленного рабочего стола (“RDP”), архитектура независимых вычислений (ICA) и другие, для совместного использования различных приложений с удаленным клиентом. С такими протоколами компьютерная система клиента может получать доступ к централизованному сетевому серверу, который играет роль ведущего узла относительно интересующих ресурсов и взаимодействует с этими ресурсами, как если бы эти ресурсы были установлены локально.

Этот сетевой сервер, в свою очередь, обрабатывает эти взаимодействия, создает соответствующую информацию данных визуализации и посылает как обработанные данные, так и созданную информацию визуализации обратно к клиенту. Компьютерная система клиента затем принимает эти данные и информацию визуализации и использует видеодрайвер стороны клиента для визуализации и отображения принятых данных локально. В идеале, это взаимодействие между компьютерной системой клиента и сетевым сервером происходит цельно, как будто компьютерная система клиента фактически обработала эти данные локально с ее собственными установленными ресурсами. К сожалению, такие системы могут быть подвержены ограничениям производительности сети, которые при соответствующей нагрузке могут приводить к «задержке» между тем, что локальная компьютерная система клиента «видит» в элементах взаимодействия и обработки.

Другой тип системы, который подобен в большинстве отношений модели централизованного разделения, описанной выше, включает в себя передачу (или «посылку») компьютерной системы клиента, имеющей конфигурацию для посылки оконной информации к другим компьютерным системам клиентов-получателей на сети. Это свойство иногда также называется «разделением рабочего стола». В этом примере передающий компьютер (например, «инструктор» в среде обучения) и компьютерные системы-получатели (например, «учащиеся») соединяются с использованием общей установленной прикладной программы, которая дает возможность разделять (совместно использовать) виды рабочего стола и локально установленные приложения в компьютере-инструкторе. Подобно сценарию централизованной компьютерной системы, компьютерные системы клиентов могут взаимодействовать с окнами, показанными в компьютере-инструкторе, как будто эти окна были на компьютере-учащемся.

Поскольку растровые отображения графических объектов (побитовые отображения) являются дорогими с точки зрения потребления диапазона рабочих частот при посылке по сетевому соединению (например, Интернет), вместо посылки целых побитовых отображений большинство систем в настоящее время (такие как системы, описанные выше) посылают графические примитивы (базисные элементы, элементарные действия) и другие операции, которые сообщают подпрограмме на стороне клиента, что и как рисовать. Например, клиенту могут сказать нарисовать прямоугольник вместе с информацией о том, где он должен быть нарисован, какого размера, цвета и т.д. Например, прямоугольник может использоваться для рисования кнопки для пользовательского интерфейса, границы вокруг документа или для любой другой цели, для которой может быть полезна прямоугольная форма. Конечно, имеется много других форм и операций, которые могут использоваться как примитивы, которые могут быть более сложными и требуют больше обработки, которая должна быть выполнена для передачи и осуществления этой операции на удаленном клиенте.

Хотя вышеупомянутое использование примитивов повысило цельность сетевых систем, поскольку приложения продолжают получать более сложные графические интерфейсы и другие отображения, использование вышеупомянутых примитивов становится все более интенсивным по обработке. Кроме того, информация, посылаемая от локального устройства к удаленному устройству для визуализации графики на дисплее клиента, обычно используется в режиме непосредственного представления, когда мозаично размещенные окна приводят к потере графической информации. Например, при использовании режима непосредственного представления доступна только информация, необходимая для рисования видимых частей окон. Другими словами, отсутствует графическая информация, сохраненная для частей окон на заднем фоне, закрытых другими окнами, т.е. графическая информация сохраняется только для верхнего окна. Соответственно, при перемещении окна на передний план необходима новая информация для рисования этого окна. Из-за отмеченного выше увеличения сложности графики эта продолжающаяся посылка информации может перегрузить систему, когда необходимы частые обновления, например при перестановках, поворотах и повторных размещениях окон. Это также представляет различные возникающие проблемы, касающиеся более сложных анимаций.

СУЩНОСТЬ ИЗОБРЕТЕНИЯ

Вышеуказанные недостатки современных сетей преодолеваются через примерные варианты осуществления данного изобретения. Например, описанные здесь варианты осуществления обеспечивают механизмы, используемые для эффективного кодирования и использования ресурсов для приложений, выполняемых на локальном устройстве, еще показанных на удаленном устройстве. Отметим, что эта сущность изобретения обеспечена для введения набора понятий в упрощенной форме, которые дополнительно описаны ниже в подробном описании. Эта сущность изобретения не предназначена для идентификации ключевых или существенных особенностей заявленного предмета рассмотрения, а также не предназначена для использования в качестве помощи в определении объема заявленного объекта изобретения.

Один примерный вариант осуществления обеспечивает механизм эффективного кодирования графических объектов для отображения на удаленном устройстве для приложения (приложений), запущенных на локальном устройстве посредством определения подходящего механизма кодирования независимо от типа языка графики. Этот механизм предусматривает выполнение приложения (приложений) на локальном устройстве, каждое из которых генерирует графическое отображение - на основе конкретного языка графики - для отображения на удаленном устройстве. Далее принимается набор графики для конкретного языка графики, который включает в себя ресурс (ресурсы) и/или команду (команды), используемые в визуализации по меньшей мере части графического отображения для приложения (приложений). Также принимаются данные кодирования, которые включает в себя информацию для следующего: (1) метаданные, которые описывают содержимое полей в пределах набора графики, используемого для поддержки модулей сжатия данных для более эффективного сжатия набора графики, чем когда набор графики находится в нормальной форме; и/или (2) данные типа кодирования, которые описывают механизм (механизмы) сжатия данных, поддерживаемые удаленным устройством, для выбора типа эффективного сжатия для набора графики. На основе принятых данных кодирования соответствующий механизм кодирования определяется для различных частей набора графики.

Другие примерные варианты осуществления обеспечивают эффективную визуализацию графических объектов на удаленном устройстве отображения для приложения (приложений), запущенных на локальном устройстве посредством определения того, какие ресурсы (если таковые имеются) для приложения должны быть посланы к удаленному устройству. В этом варианте осуществления приложение (приложения) также выполняются на локальном устройстве, каждое из которых генерирует графические отображения для передачи к удаленному устройству. Затем принимается набор графики, который включает в себя ресурс (ресурсы) и/или команду (команды) отображения, который может использоваться для визуализации по меньшей мере части отображения (отображений) графики для приложения (приложений). Также принимаются данные ресурсов, которые включают в себя информацию для следующего: (1) информация состояния доставки для определения того, был ли ресурс (ресурсы), соответствующий набору графики, послан к удаленному устройству и сохранен в центральном кэше для повторного использования независимо от типа сохраненного ресурса; (2) информация поддержки приложения для определения выделенных ресурсов, доступных в настоящее время на удаленном устройстве, для отображения ресурса (ресурсов) на удаленном устройстве для приложения (приложений) без передачи ресурса (ресурсов) от локального устройства; (3) данные ограничения системы для определения того, следует ли постепенно посылать часть (части) ресурса к удаленному устройству таким образом, что ухудшенная версия полного ресурса посылается первой, и обновления, которые улучшают ухудшенную версию, посылаются позже для экономии диапазона рабочих частот или других системных ограничений; и/или (4) информация видимости, которая описывает, могут ли ресурсы, соответствующие набору графики, быть видны в настоящее время пользователю в удаленном устройстве. На основе принятой информации ресурсов часть (части) графического набора выбираются для кодирования.

Другой примерный вариант осуществления обеспечивает эффективную синхронизацию структур данных визуализации, используемых в генерации отображения графики на удаленном устройстве для приложений, выполняемых на локальном устройстве. В этом варианте осуществления, подобном другим вариантам осуществления, приложение (приложения) выполняются на локальном устройстве, каждое из которых генерирует структуру (структуры) данных визуализации конкретного графического языка, которые являются структурами данных режима сохранения, которые поддерживают состояние ресурса (ресурсов) и их используют для формирования отображения графики для приложения (приложений) на удаленном устройстве. После этого принимается набор графики, который включает в себя ресурс (ресурсы) и/или команду (команды) отображения, соответствующие конкретному языку графики, и он используется в модификации структуры (структур) данных визуализации. Далее принимаются метаданные, которые включают в себя описание полей для набора графики для поддержки идентификации модулем (модулями) сжатия данных типа структуры для полей, общих среди графических наборов для различных графических языков, которые модуль (модули) сжатия данных могут более легко распознать и соответствующим образом кодировать. На основе принятых метаданных поля набора графики кодируются для посылки в удаленное устройство и синхронизации структуры (структур) данных визуализации между локальным и удаленным устройствами, которые используются для формирования графического отображения в удаленном устройстве для приложения (приложений).

Дополнительные признаки и преимущества изобретения будут изложены в следующем описании и частично следуют из этого описания или могут быть изучены путем практики применения изобретения. Признаки и преимущества изобретения могут быть реализованы и получены посредством инструментов и комбинаций, конкретно указанных в прилагаемой формуле изобретения. Эти и другие признаки данного изобретения явствуют из следующего описания и прилагаемой формулы изобретения или могут быть изучены путем практики применения изобретения, изложенного далее.

КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ

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

Фиг. 1А иллюстрирует распределенную систему, которая использует различную информацию для эффективного кодирования графических наборов, используемых в визуализации отображения в удаленном устройстве в соответствии с примерными вариантами осуществления.

Фиг. 1В иллюстрирует распределенную систему, которая использует информацию о различных ресурсах для определения того, какие части ресурсов (если таковые имеются) следует кодировать для передачи к удаленному устройству в соответствии с примерными вариантами осуществления.

Фиг. 1С иллюстрирует некоторые из выделенных ресурсов или пиктограмм, которые могут быть доступны на удаленном устройстве и использованы таким образом, что нет передачи этих ресурсов от локального устройства в соответствии с примерными вариантами осуществления.

Фиг. 1D иллюстрирует механизм для улучшения чувствительности посредством визуализации с частично посланными ресурсами в соответствии с примерными вариантами осуществления.

Фиг. 2 иллюстрирует блок-схему последовательности операций для способа эффективного кодирования графических объектов для отображения на удаленном устройстве в соответствии с примерными вариантами осуществления.

Фиг. 3 иллюстрирует блок-схему последовательности операций для способа эффективной визуализации графических объектов на удаленном устройстве отображения в соответствии с примерными вариантами осуществления.

Фиг. 4 иллюстрирует блок-схему последовательности операций для способа эффективной синхронизации структур данных визуализации, используемых в генерации графического отображения на удаленном устройстве в соответствии с примерными вариантами осуществления.

ПОДРОБНОЕ ОПИСАНИЕ

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

В качестве предварительного вопроса, будет ясно и понятно, что примеры и описания здесь делают ссылку на MICROSOFT™ терминологию с целями удобства в различных реализациях. Такая ссылка на специфические термины, однако, не должна толковаться как ограничивающая варианты осуществления здесь до конкретной операции или систем другого типа. Скорее элементная функциональность, описанная здесь, может практиковаться в любом вычислительном окружении или операционной системе, где желательна функциональность, описанная здесь.

Как отмечено ранее, вышеуказанные недостатки удаления графических отображений современных сетей преодолеваются через примерные варианты осуществления, обеспеченные здесь. Например, один вариант осуществления обеспечивает кодирование полей, которое является механизмом, используемым для идентификации полей набора графики для конкретного языка графики таким образом, что идентифицируется общность различных полей по различным языкам графики. После идентификации связанная избыточность или общность, идентифицированная по различным типам данных в пределах полей набора графики, может быть эффективно кодирована. Например, избыточность или общность между полями может быть устранена или эффективно сжата посредством применения одного или нескольких из следующих способов: (1) преобразование полей между машинным форматом и сетевым форматом на основе метаданных или другой информации, обеспеченной для этого поля; (2) кодирование поля в переменную длину (например, кодирование двух/трех/четырех байтов); (3) дельта-кодирование, которое обычно используется для кодирования массивов координат, где точка может быть кодирована как дельта относительно предыдущей точки в массиве, и приращения могут быть представлены меньшим числом байтов, чем абсолютная координата; (4) межпорядковое сжатие, которое используется для кодирования структуры определенного типа на основе предыдущей кодированной структуры того же типа. Отметим, что вышеуказанные механизмы могут в настоящее время применяться в других протоколах (например, протокол удаленного рабочего стола (RDP)); однако варианты осуществления, обеспеченные здесь, расширяют кодирование полей до других графических языков, отличных от интерфейса графических устройств (GDI) - например, информация Обоснования Представления Окон (WPF).

В другом варианте осуществления обеспечено кэширование ресурсов таким образом, что неоднородные ресурсы будут трактоваться однородным образом при их хранении. Хотя современный механизм (такой как RDP) дает возможность хранить ресурсы на клиенте для экономии диапазона рабочих частот посредством повторного использования их в последующих операциях или командах, данное изобретение распространяет механизм кэширования для использования в других графических языках (например, отличных от GDI подобно WPF). Например, современные механизмы хранят типы ресурсов (например, глифы (образы символов в побитовом отображении информации), побитовые отображения, спрайты (фантомы, небольшие изображения, переносимые по экрану независимо от других) и т.д.) в отдельных кэшах, тем самым обеспечивая нерасширяемый подход к повторному использованию ресурсов. Соответственно, варианты осуществления обеспечивают более общий и расширяемый механизм, который обеспечивает центральный кэш для всех ресурсов, независимо от их типа. Как таковой, ресурс может использоваться много раз в пределах структуры данных визуализации или даже по структурам данных для различных приложений, и, таким образом, необходимо только послать ресурс один раз к удаленному устройству и использовать его по подструктурам различного состава (например, поддерево).

В еще одном варианте осуществления тип кодирования или сжатия для удаленных ресурсов или других элементов в пределах набора графики может быть определен на основе типов механизмов сжатия, поддерживаемых удаленным устройством. В этом случае доступные механизмы сжатия могут быть согласованы между клиентом (т.е. удаленным устройством) и сервером (т.е. локальным устройством) во время соединения; однако точный механизм сжатия, используемый сервером для сжатия ресурса, будет выбран во время сжатия локальным устройством. Соответственно, локальное устройство выберет один из согласованных форматов на основе того, насколько хорошо каждый формат сжимает заданные данные. Например, одним типом сжатия могут быть различные способы сжатия, используемые на единственном ресурсе. Результирующий механизм сжатия, который наиболее эффективно уменьшает величину данных, может затем использоваться для посылки ресурса (или других данных) к удаленному устройству. Отметим, что локальный сервер может выбрать либо формат сжатия, не допускающий потери, либо формат сжатия с потерями на основе различных ресурсов или других данных для сжатия.

Другие примерные варианты осуществления обеспечивают улучшение чувствительности посредством визуализации с частично посланными ресурсами. Соответственно, на основе различных системных ограничений, таких как диапазон рабочих частот, или ограничений устройства отображения части ресурса могут быть посланы вместе с командами полной визуализации для визуализации чего-нибудь важного приложением. Например, побитовые отображения или другие ресурсы могут содержать изображение, сжатое таким постепенным способом. В этом случае цветное изображение может первоначально быть неточным, так как не все данные, необходимые для распаковки полного изображения, прибыли в клиенте. Удаленное устройство, однако, может использовать неясное изображение или другое ухудшенное изображение для начальной визуализации.

В качестве примера кнопка для приложения может иметь цвет, который очень не точен, и все же представляющий кнопку достаточно хорошим образом для того, чтобы дать пользователю возможность взаимодействовать с этой кнопкой, не ожидая ее конечной версии. По мере того, как больше данных из изображения прибывает от сети, удаленное устройство может обновить изображение и повторно визуализировать часть структуры данных, содержащей изображение. Таким образом, воспринимаемая чувствительность пользователя значительно возрастает просто потому, что в большинстве случаев пользователь может использовать приложение без обновления всех данных изображения. Отметим, что использовался механизм ухудшения цвета; однако может также использоваться любой вид способа постепенного кодирования или чередования. Отметим далее, что такой постепенный механизм или механизм чередования мог бы применяться не только к побитовым отображениям или другим подобным ресурсам, но также будет хорошо работать для изображений с различными массивами, такими как кривые или сетки.

В еще одном примерном варианте осуществления обеспечен механизм для определения того, какие части (если таковые имеются) набора графики следует послать к удаленному устройству и в каком порядке. Например, часто части графического отображения или ресурса могут быть не видны для пользователя. Соответственно, такие вещи, как Z-порядок, прозрачность, состояние минимизации/максимизации, играют эффективную роль в определении того, будет ли приложение или его ресурс формировать вывод, который является видимым для пользователя. Пока приложение или его ресурс не является видимым, может быть необязательным удаление содержания или ресурса этого приложения до более позднего времени. Соответственно, обновления могут быть задержаны, пока позволяет диапазон рабочих частот. Далее локальный сервер может устанавливать приоритет в том, какие части структур данных визуализации или отображений будут посланы в удаленное устройство на основе такой информации видимости.

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

Хотя более конкретные ссылки на выгодные особенности описаны более подробно ниже относительно чертежей, варианты осуществления в пределах объема данного изобретения также включают в себя считываемые компьютером носители для хранения исполняемых компьютером команд или структур данных. Такими считываемыми компьютером носителями могут быть любые доступные носители, к которым может быть получен доступ посредством универсального или специализированного компьютера. В качестве примера, а не ограничения, такой считываемый компьютером носитель может содержать ОЗУ, ПЗУ, ЭСППЗУ, компакт-диск или другое ЗУ на оптическом диске, магнитный диск или другие магнитные ЗУ или любой другой носитель, который может использоваться для хранения желаемых средств программного кода в форме исполняемых компьютером команд или структур данных, и к которым может быть получен доступ посредством универсального или специализированного компьютера. При передаче или обеспечения информации по сети или другому соединению связи (либо проводному, беспроводному, либо комбинации проводного и беспроводного) к компьютеру компьютер правильно «видит» это соединение как считываемый компьютером носитель. Таким образом, любое такое соединение правильно именуется считываемым компьютером носителем. Комбинации вышеуказанного следует также включить в рамки считываемого компьютером носителя.

Исполняемые компьютером команды содержат, например, команды и данные, которые вызывают выполнение универсальным компьютером, специализированным компьютером или специализированным процессором определенной функции или группы функций. Хотя предмет рассмотрения был описан языком, специфическим для структурных особенностей и/или методологических актов, следует понимать, что предмет рассмотрения, заданный в прилагаемой формуле изобретения, необязательно ограничен конкретными особенностями или актами, описанными выше. Скорее, конкретные особенности и акты, описанные выше, раскрыты как примерные формы реализации формулы изобретения.

Как используется здесь, термин «модуль» или «компонент» может относиться к объектам или программам программного обеспечения, которые выполняются в компьютерной (вычислительной) системе. Различные компоненты, модули, машины (механизмы) и службы, описанные здесь, могут быть реализованы как объекты или процессы, которые выполняются на вычислительной системе (например, отдельные подпроцессы). Хотя система и способы, описанные здесь, предпочтительно реализованы в программном обеспечении, реализации в аппаратном обеспечении или комбинации программного и аппаратного обеспечения также являются возможными и рассматриваемыми. В этом описании «вычислительным объектом» может быть любая вычислительная система, ранее описанная здесь, или любой модуль или комбинация модулей, прогоняемая на вычислительной системе.

Фиг. 1А иллюстрирует распределенную систему, используемую в удаленном отображении (показе) графической информации для приложений на локальном устройстве. Как показано, приложения 115 могут исполняться на локальном устройстве 105, отображения которого предназначены для удаленного устройства 110. Отметим, что приложением 115 может быть любое из бесчисленных приложений, таких как текстовый редактор, приложение электронных таблиц или любое другое хорошо известное приложение. Далее окружением для удаленного устройства 110 и локального устройства 105 может быть окружение типа представления (например, ранее описанное разделение рабочего стола) или сетевая система, в которой удаленное устройство 110 желает выполнить приложения 115 в локальном устройстве 105, еще видеть и управлять приложениями от удаленного устройства 110 вне сети локального устройства 105. Как таковые, коммуникации между локальным устройством 105 и удаленным устройством 110 могут проходить через любую хорошо известную сеть, как локальную, так и распределенную, например ЛВС, Интернет и т.д.

Независимо от типа приложения или сети, используемой для установления канала связи между локальным устройством 105 и удаленным устройством 110, приложения 115 могут делать вызовы 120 программного интерфейса приложений (API) в соответствии с вводом пользователя, принятого от удаленного устройства 110. Такие API вызовы 120 влияют на графические отображения различных приложений 115. Например, API вызовами 120 может быть минимизация/максимизация отображения приложения 115, перемещение пиктограмм или других ресурсов в пределах этого отображения, или любое число хорошо известных способов взаимодействия и изменения графического отображения для одного или нескольких приложений 115. Конечно, как было бы понятно, необязательно для ввода приходить в форме API вызовов 120 для изменения графических отображений различных приложений 115. Соответственно, API вызовы 120 для влияния на графические отображения различных приложений 115 используются здесь только с иллюстративными целями и не означают ограничение или сужение иным образом охвата вариантов осуществления здесь.

Тем не менее, при использовании таких вызовов 120 API вызовы 120 могут вызывать машину 130 формирования, которая генерирует набор 155 графики, который включает в себя команды 160 отображения и/или различные ресурсы 165. Команды 160 отображения (показа) могут включать в себя такую информацию, как тип ресурса 165, позиционирование в пределах отображения (т.е. х-у координаты), размер и/или форма ресурса 165 или любые другие хорошо известные свойства или операции, используемые для отображения различных ресурсов 165. Ресурсы 165 также могут представлять собой любое количество хорошо известных пиктограмм, текста, глифов, спрайтов, побитовых отображений и других типов изображений. Соответственно, команды 160 отображения и ресурсы 165, описанные здесь, должны широко толковаться для охвата любого количества различных операций, выполняемых на ресурсах, а также любое количество данных изображения, используемых для графических отображений приложений 115.

Наборы 155 графики обычно используются для генерации структур 178 данных визуализации для различных приложений 115. В свою очередь, структуры 178 данных визуализации используются для описания отображения приложения 115 и могут быть древовидными структурами, в которых каждый узел представляет ресурс, свойство или относительное их описание. Например, узел в пределах дерева данных может представлять кнопку, тогда как другие узлы описывают цвет, размер, форму или другие свойства этой кнопки, тогда как еще другие узлы представляют связь и взаимодействие с другими компонентами или ресурсами в пределах отображения приложения 114. Соответственно, как было бы понятно, набор 155 графики мог бы использоваться для модификации, генерации или обновления иным образом структуры 178 данных визуализации, которая может затем использоваться для формирования одного или нескольких отображений, соответствующих приложениям 115. Отметим, что в отличие от режимов непосредственного представления других языков графики, описанных выше, использование структур 178, 185 данных визуализации допускает режим сохранения, в котором состояние ресурсов поддерживается. Как будет более подробно описано ниже, это вместе с другими вариантами осуществления, описанными здесь, дает возможность осуществления многих выгодных особенностей.

Отметим, что в одном варианте осуществления желательно синхронизировать структуру 178 данных визуализации на локальном устройстве 105 с подобной структурой 185 данных визуализации на удаленном устройстве 110. В этом примере примерные варианты осуществления, обеспеченные здесь, могут эффективно кодировать различные наборы 155 графики для обновления или модификации структуры 185 данных визуализации на удаленном устройстве 110. Следует отметить, однако, что хотя некоторые механизмы, обеспеченные здесь, используются для графических языков, которые поддерживают структуры 178, 185 данных визуализации, другие варианты осуществления равным образом применимы к графическим языкам, которые не поддерживают такие структуры 178, 185 данных визуализации. Фактически, многие из вариантов осуществления, описанные здесь, используются для широкого разнообразия графических языков, включающих в себя, но не ограниченных этим, GDI, WPF, а также другие известные (и потенциально неизвестные) графические языки. Соответственно, следующее обсуждение различных вариантов осуществления должно широко толковаться как применимое по широкому числу графических языков.

Независимо от графического языка, используемого для создания набора 155 графики, отметим, что модуль 150 принятия решения о кодировании обычно работает непосредственно на структурах 178 данных визуализации (т.е. на структуре или дереве формирования данных режима сохранения). Модуль 150 принятия решения о кодировании может послать данные 178 визуализации непосредственно, когда приложение 115 вызывает 120 машину 130 формирования, или может послать данные 178 в более позднее время, когда позволяет сеть. Например, приложение 115 может вызвать 120 машину 130 для создания цикла. Команда 120 может транслировать в прямой вызов в модуле 150 принятия решения о кодировании и позже немедленно закодировала бы эту команду цикла и послала бы ее по проводу. Могла бы быть альтернативная модель, что модуль 150 принятия решения о кодировании уведомляется, что цикл был добавлен к структуре 178 данных визуализации (например, композиционному дереву) и пусть модуль 150 принятия решения о кодировании решает, когда следует послать данные 178. Первая модель может рассматриваться как модель «толкать», тогда как вторая модель может быть моделью «тянуть». Разницей между этими двумя моделями является просто момент, когда модуль 150 принятия решения о кодировании считывает обновления со структур 178 данных визуализации. Хотя обе модели работают, модель «толкать», возможно, более ограничена, чем модель «тянуть». Соответственно, наиболее эффективными механизмами обновления, возможно, является гибрид между этими двумя моделями (т.е. данные 178 заталкиваются в сеть так быстро, насколько позволяет диапазон рабочих частот, но если имеется некоторая сетевая перегрузка, то система примет модель «тянуть», управляемую событиями доступности сети).

Независимо от модели, используемой для передачи данных 178, в одном варианте осуществления модуль 150 принятия решения о кодировании может использовать таблицу 135 кодирования с метаданными 140 набора графики (также называемыми здесь просто «метаданными») для идентификации различных типов полей в пределах набора 155 графики. Например, метаданные могут описывать различные типы полей в пределах набора 160 графики, которые может использовать модуль 150 принятия решения о кодировании для соответствующего решения, как наилучшим образом кодировать различные поля для эффективной передачи команд 160 отображения и ресурсов 165 к удаленному устройству 110. Более конкретно, метаданные 140 могут использоваться для идентификации различных типов структур данных для полей, общих среди множества наборов 155 графики для различных графических языков. Такая информация может затем использоваться для поддержки модулей 175 сжатия данных для более легкого распознавания и соответствующего кодирования различных полей набора 155 графики.

Например, команды 160 отображения могут иметь строки или другие двоичные представления, которые включают в себя тип ресурса, позиционирование (например, х-у координаты), цвет или другую информацию, традиционно хранимую или преобразованную в последовательную форму в машинный формат. Соответственно, метаданные 140 могут использоваться для распознавания этих полей как строки, сохраняемые в машинном формате, которые могут быть затем преобразованы в сетевой формат. Например, координата (или другая строка или двоичное поле) обычно будет поддерживаться как машинное слово в наборе 155 графики на локальном устройстве 105, используемом для визуализации, но машинное слово в большинстве случаев в 2-4 раза больше, чем фактический байтовый размер, необходимый для хранения такой координаты. В этом случае машинное слово следует преобразовать в меньший размер и поместить в сетевой пакет, что дает возможность модулям 175 сжатия данных более эффективно кодировать эти поля перед передачей к удаленному устройству 110.

Отметим, что другие варианты осуществления используют метаданные 140 набора графики для описания других полей и ресурсов в пределах набора 155 графики для идентификации наиболее эффективного механизма для сжатия. Например, модуль 150 принятия решения