Автономная сетевая потоковая передача

Изобретение относится к области компьютерных и сетевых технологий. Технический результат заключается в обеспечении динамической доставки виртуальных программных приложений и распределении данных приложения между локальным и сетевым хранилищами данных. Технический результат достигается за счет установки фильтра ввода/вывода (I/O) данных, выполненного с возможностью перехватывать запросы файла данных, отправляемых из виртуального программного приложения файловой системе операционной системы, извлекать требуемый файл данных из файловой системы, направлять перехваченный запрос на считывание в хранилище данных, доступное по сети, которое выполнено с возможностью возвращать требуемый файл данных, отправлять требуемый файл данных виртуальному программному приложению, а также за счет генерирования метаданных, описывающих, какие требуемые части виртуального приложения сохранены в локальном хранилище. 3 н. и 12 з.п. ф-лы, 4 ил.

 

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

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

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

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

Описанные здесь варианты осуществления направлены на динамическую доставку виртуальных программных приложений и на распределение данных приложения между локальным и сетевым хранилищами данных. В одном варианте осуществления компьютерная система устанавливает фильтр ввода/вывода (I/O) данных, выполненный с возможностью перехватывать запросы файла данных, отправляемые из виртуального программного приложения файловой системе операционной системы. Фильтр I/O данных перехватывает запрос на считывание файла данных, который выполнен с возможностью извлекать требуемый файл данных из файловой системы. Фильтр I/O данных направляет перехваченный запрос на считывание в хранилище данных, доступное по сети, которое выполнено с возможностью возвращать специфичный файл данных. Затем, после приема требуемого файла данных из сетевого хранилища данных, фильтр I/O отправляет требуемый файл данных виртуальному программному приложению. Таким образом, требуемый файл данных является пригодным для использования виртуальным приложением.

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

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

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

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

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

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

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

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

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

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

Описанные здесь варианты осуществления направлены на динамическую доставку виртуальных программных приложений и распределение данных приложения между локальным и сетевым хранилищами данных. В одном варианте осуществления компьютерная система устанавливает фильтр ввода/вывода (I/O) данных, выполненный с возможностью перехватывать запросы файла данных, отправляемых из виртуального программного приложения файловой системе операционной системы. Фильтр I/O данных перехватывает запрос на считывание файла данных, который выполнен с возможностью извлекать требуемый файл данных из файловой системы. Фильтр I/O данных направляет перехваченный запрос на считывание в хранилище данных, доступное по сети, которое выполнено с возможностью возвращать конкретный файл данных. Затем, после приема требуемого файла данных из сетевого хранилища данных, фильтр I/O отправляет требуемый файл данных виртуальному программному приложению. Таким образом, требуемый файл данных является пригодным для чтения виртуальным приложением.

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

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

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

Компьютерные запоминающие носители включают в себя RAM, ROM, EEPROM, CD-ROM, твердотельные накопители (SSDs), которые основаны на RAM, флэш-памяти, памяти на фазовых переходах (PCM) или других типах памяти, или другие оптические дисковые накопители, магнитные дисковые накопители или другие магнитные запоминающие устройства, или любой другой носитель, который может быть использован для того, чтобы хранить желаемые средства программного кода в форме машиноисполняемых инструкций, данных или структур данных, доступ к которым можно осуществлять посредством компьютера общего назначения или специализированного.

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

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

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

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

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

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

Операционная система далее устанавливает указатель инструкций в точку входа для приложения и запускает процесс. Уровень виртуализации в пределах операционной системы обнаруживает и инициализирует себя в течение этой фазы запуска. Виртуальное приложение затем запускается в пользовательской компьютерной системе.

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

Тем не менее, описанные здесь варианты осуществления не копируют содержимое файла на локальный жесткий диск. Передаваемое посредством потоковой передачи содержимое перехватывается фильтром ввода/вывода (I/O) данных до того, как оно может быть сохранено на диске. Фильтр I/O данных пропускает передаваемые посредством потоковой передачи данные в приложение, чтобы удовлетворить запрос на считывание. Приложение затем использует передаваемые посредством потоковой передачи данные для функционирования, как оно обычно это и делало бы, без записи каких-либо передаваемых посредством потоковой передачи данных на диск. На самом деле, виртуальное приложение даже не знает (или не должно знать), что его запрос на считывание был удовлетворен не локальным жестким диском, а вместо этого динамически передаваемыми посредством потоковой передачи данными. Никаких изменений не требуется выполнять в виртуальном приложении или файловой системе компьютерной системы. Вместо этого фильтр I/O данных функционирует незаметно между ними так, чтобы предоставить динамически передаваемое посредством потоковой передачи виртуальное приложение. Это же самое виртуальное программное приложение (сохраненное в сетевом хранилище данных) может быть предоставлено, по существу, любому количеству других компьютерных систем и/или виртуальных машин. Кроме того, когда одно и то же приложение используется на множестве разных компьютерных систем, дисковое пространство не будет дублировано, так как единственная копия приложения на сервере может быть передана посредством потоковой передачи каждой из разных компьютерных систем. Эти концепции будут объяснены далее с учетом способов 200 и 300 на Фиг. 2 и 3 соответственно.

С учетом описанных выше систем и архитектур, методологии, которые могут быть реализованы в соответствии с раскрытым объектом изобретения, будут лучше поняты со ссылкой на блок-схемы на Фиг. 2 и 3. В целях упрощения объяснения эти методологии показаны и описаны как последовательность этапов. Однако должно быть понятно и очевидно, что заявленный объект изобретения не ограничен порядком этапов, так как некоторые этапы могут встречаться в разных порядках и/или совместно с другими этапами из тех, что изображены и описаны в данном документе. Более того, не все проиллюстрированные этапы могут быть востребованы для того, чтобы реализовать методологии, описанные в дальнейшем.

Фиг. 2 иллюстрирует блок-схему способа 200 динамической доставки виртуальных программных приложений. Способ 200 будет теперь описан с постоянной ссылкой на компоненты и данные среды 100.

Способ 200 включает в себя этап установления фильтра ввода/вывода (I/O) данных, выполненного с возможностью перехватывать запросы файла данных, отправляемые из виртуального программного приложения файловой системе операционной системы (этап 210). Например, фильтр 120 I/O данных может быть установлен в режиме 141 ядра операционной системы клиентской компьютерной системы. Фильтр I/O данных может перехватывать запрос 111 на считывание, отправленный из виртуального приложения 110. Запрос данных является обычным запросом приложения на считывание, как правило, отправляемый из виртуального приложения файловой системе 125. В этом случае фильтр I/O данных перехватывает запрос на считывание, который иначе был бы отправлен файловой системе (и затем на диск 126). Фильтр I/O данных реализован без выполнения изменений в том, как программное приложение запрашивает файлы данных. Традиционный программный стек, как таковой, остается неизмененным. В некоторых случаях фильтр I/O может быть драйвером, работающим как часть процесса операционной системы.

Способ 200 далее включает в себя этап перехвата фильтром I/O данных запроса на считывание файла данных, который выполнен с возможностью извлекать требуемый файл данных из файловой системы (этап 220). Например, фильтр 120 I/O данных может перехватить запрос 111 на считывание до того, как он будет отправлен файловой системе 125. Запрос на считывание представляет собой запрос файла данных, доступ к которому пытается получить виртуальное приложение 110. Файл данных вместо сохранения на локальном диске, сохраняется в хранилище 130 данных доступном по сети. Для каждого запрашиваемого файла на диске 126 динамически создается разреженный файл 127. Как пояснено выше, разреженный файл представляет собой файл-заполнитель, который включает в себя только имя и размер файла, но не фактические данные файла. Этот заполнитель удовлетворяет изначальный запрос виртуальных приложений, чтобы определить, существует ли файл. Когда виртуальное приложение удовлетворено тем, что файл существует (после того, как оно считает разреженный файл), приложение запрашивает фактические данные файла в запросе 111 на считывание.

Этот процесс перехвата запросов на считывание может иметь место в отношении каждого файла приложения. Соответственно, каждый файл может передаваться динамически посредством потоковой передачи виртуальному приложению, когда он необходим. Файлы могут передаваться посредством потоковой передачи по отдельности или во множестве. В некоторых случаях множественные файлы данных могут запрашиваться и передаваться посредством потоковой передачи параллельно. После приема запроса на считывание в фильтре I/O данных запрос конвертируется в запрос I/O режима ядра, который перехватывается фильтром I/O. Фильтр I/O данных затем направляет перехваченный запрос на считывание в хранилище 130 данных, доступное по сети, которое выполнено с возможностью возвращать конкретный файл 131 данных (этап 230). В некоторых случаях перехваченный запрос может быть направлен службе 115 пользовательского режима, которая находится между хранилищем данных, доступным по сети, и фильтром I/O данных. Служба пользовательского режима может запускаться в пользовательской компьютерной системе или в другой подключенной к сети компьютерной системе. Система принимает запросы 111 данных из фильтра I/O данных и направляет запросы в сетевое хранилище данных. Служба может также использоваться для того, чтобы принимать запрашиваемые данные из сетевого хранилища и пропускать их в фильтр I/O данных. В некоторых случаях сетевое хранилище данных может содержать облако (или Интернет), и требуемые файлы данных, как таковые, могут быть извлечены из облака/Интернета с использованием протокола передачи гипертекста (HTTP).

Далее после приема требуемого файла данных из хранилища данных, доступного по сети, фильтр I/O отправляет требуемый файл данных виртуальному программному приложению так, чтобы требуемый файл данных являлся пригодным для использования виртуальным приложением в ответ на его запрос на считывание (этап 240). Таким образом, запрос 111 данных может быть перехвачен до отправки на диск и направлен службе, которая извлекает данные из локального или удаленного хранилища 130 данных. Служба направляет извлеченные данные 131 назад фильтру I/O, и фильтр I/O направляет данные виртуальному приложению 110. Соответственно, файлы приложения могут передаваться посредством динамической потоковой передачи пользовательской компьютерной системе (в частности, виртуальному приложению) без сохранения в локальной файловой системе компьютерной системы. Каждый файл данных, динамически извлеченный из сетевого хранилища данных, предоставляется виртуальному программному приложению, как если бы файлы данных были приняты из файловой системы компьютерной системы.

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

Фиг. 3 иллюстрирует блок-схему способа 300 для распределения данных приложения между локальным и сетевым хранилищами данных. Способ 300 будет теперь описан с постоянной ссылкой на компоненты и данные среды 400 (Фиг. 4).

Способ 300 включает в себя этап приема от администрирующего пользователя указания того, какие требуемые части виртуального приложения должны быть сохранены в локальном хранилище данных, а какие части должны быть сохранены в сетевом хранилище данных (этап 310). Например, фильтр 420 I/O данных может принимать указание 423 от администрирующего пользователя 425, указывающее, какие требуемые части виртуального приложения 410 должны быть сохранены в локальном хранилище 426 данных, а какие части должны быть сохранены в хранилище 430 данных, доступном по сети. Таким образом, по меньшей мере, в некоторых случаях может быть желательным для компьютерного администратора указывать, что некоторые файлы должны быть сохранены локально в пользовательской локальной компьютерной системе, в то время как другие файлы должны быть сохранены в удаленном хранилище данных. Администратор может указать, какие файлы где сохранены, и может обновить результат определения, пока пользователь использует виртуальное приложение 410. Соответственно, файлы 431, которые были сохранены в локальном хранилище 426 данных, могут удаляться, если так указано администратором. В противном случае файлы данных можно перемещать из хранилища данных, доступного по сети, в локальное хранилище данных, если так указано администратором. Следует отметить, что при ссылке на файлы данных, сохраняемые локально, файлы сохраняются локально и существуют на диске, но в качестве пустых разреженных файлов, которые вмещают в себя только информацию об имени и размере файла.

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

Способ 300 также включает в себя этап генерирования одной или более частей метаданных, описывающих, какие требуемые части виртуального приложения сохранены в локальном хранилище данных (этап 320). Локальная компьютерная система может генерировать метаданные 421, которые используются фильтром I/O данных для того, чтобы определять, куда направлять запросы 411 данных, принятые из виртуального приложения 410. Метаданные указывают для каждого файла, где файл данных сохранен (либо локально 426, либо удаленно 430). Таким образом, когда фильтр I/O данных принимает запрос данных из виртуального приложения, вместо автоматического направления запроса службе 115 пользовательского режима (или напрямую в сетевое хранилище данных) фильтр I/O данных осуществляет доступ к метаданным 421, чтобы определить, сохранены ли данные локально или в удаленном хранилище. Если данные сохранены локально, запрос данных отправляется локальной файловой системе. Если данные сохранены удаленно, запрос данных отправляется в сетевое хранилище данных. Таким образом, как пояснено выше, администратор 425 может указывать, где должен быть сохранен каждый файл, и данные I/O могут быть извещены о выборах администратора, как только они совершены (через индикацию 423). Соответственно, метаданные могут непрерывно обновляться по мере распределения файлов данных администратором, и фильтр I/O данных может корректно направлять запрос данных на основании обновленных метаданных.

Таким образом, как описано выше, запрос 411 файла данных может приниматься из виртуального приложения, запрашивающего данные требуемого файла данных (этап 330). Фильтр 420 I/O данных может затем определять, исходя из сгенерированных метаданных 421, сохранен ли требуемый файл данных в локальном хранилище 426 данных или удаленном хранилище 430 данных (этап 340). Исходя из результата определения, фильтр I/O данных отправляет запрос файла данных либо в локальное хранилище данных, либо в удаленное хранилище данных (этап 350). Запросы файла данных могут приниматься по отдельности или во множестве и могут направляться в соответствующее хранилище данных по отдельности или во множестве. Аналогичным образом данные 431 могут приниматься как отдельные файлы или как группа файлов. В некоторых случаях разные запросы данных могут отправляться как в локальное хранилище данных, так и в удаленное хранилище данных одновременно. Когда запросы данных удовлетворены соответствующими хранилищами данных, данные могут быть отравлены назад в фильтр I/O данных, а затем в виртуальное приложение как отдельные файлы или группа файлов. В некоторых случаях данные могут передаваться посредством потоковой передачи из любого или обоих локального хранилища данных и удаленного хранилища данных, доступного по сети. После приема данных из удаленного хранилища данных они пропускаются в виртуальное приложение без сохранения каких-либо данных в локальном хранилище данных.

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

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

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

этап установления фильтра ввода/вывода (I/O) данных, выполненного с возможностью перехватывать запросы файла данных, отправляемых из виртуального программного приложения файловой системе операционной системы;

этап перехвата фильтром I/O данных запроса на считывание файла данных, который выполнен с возможностью извлекать требуемый файл данных из файловой системы;

этап направления фильтром I/O данных перехваченного запроса на считывание в хранилище данных, доступное по сети, сконфигурированное так, чтобы возвращать требуемый файл данных; и

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

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

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

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

5. Способ по п. 1, в котором фильтр I/O данных реализован без выполнения изменений в том, как программное приложение запрашивает файлы данных.

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

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

8. Способ по п. 7, в котором служба пользовательского режима направляет принятые данные фильтру I/O, который направляет данные виртуальному приложению.

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

10. Реализуемый на компьютере способ распределения данных приложения между локальным и сетевым хранилищами данных в клиентской компьютерной системе, включающей в себя по меньшей мере один процессор и память, в компьютерной сетевой среде, включающей в себя множество вычислительных систем, причем способ содержит:

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

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

этап приема запроса файла данных от виртуального приложения, запрашивающего данные требуемого файла данных;

этап определения, исходя из сгенерированных метаданных, хранится ли требуемый файл данных в локальном хранилище данных или удаленном хранилище данных; и

исходя из результата определения, этап отправки запроса файла данных к по меньшей мере одному из локального хранилища данных и удаленного хранилища данных.

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

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

13. Компьютерная система для динамической доставки виртуальных программных приложений, содержащая следующее:

один или более процессоров;

системную память;

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

этап установления фильтра ввода/вывода (I/O) данных, выполненного с возможностью перехватывать запросы 111 файла данных, отправляемых из виртуального программного приложения 110 файловой системе;

этап перехвата фильтром I/O запроса на считывание файла данных, который выполнен с возможностью извлекать требуемый файл данных из файловой системы;

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

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

этап приема запроса от виртуального программного приложения о фактическом содержании данных запрашиваемого файла данных;

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

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

14. Компьютерная система по п. 13, в которой запрашиваемый файл данных передается посредством потоковой передачи виртуальному программному приложению без сохранения какого-либо содержимого файла данных в файловой системе.

15. Компьютерная система по п. 14, в которой по мере того, как виртуальное программное приложение используется пользователем, файлы данных динамически и автоматически передаются посредством потоковой передачи из сетевого хранилища данных по мере необходимости виртуальным приложением.



 

Похожие патенты:

Изобретение относится к средствам отображения иконки на рабочем столе. Технический результат заключается в обеспечении адаптации изображения в зависимости от свойств иконки.

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

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

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

Группа изобретений раскрывает способ редактирования информации в приложении службы социальной сети (SNS) и терминал для этого. Технический результат – экономия объема памяти командного терминала и ускорение процесса редактирования информации.

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

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

Изобретение относится к способам и устройствам для представления фрагмента интерактивной карты с помощью интерфейса пользователя клиентского устройства. Технический результат заключается в сокращении времени обработки запросов.

Изобретение относится к технологиям представления данных в виде электронных таблиц. Техническим результатом является обеспечение автоматической интеграции информации о местоположении с электронной таблицей.

Изобретение относится к области клиент-серверной архитектуры. Техническим результатом является клиент-серверная архитектура, подходящая для выполнения различных типов прикладных программ.

Изобретение относится к технологиям описания интерфейсов прикладного программирования. Техническим результатом является автоматизация описания интерфейса прикладного программирования.

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

Изобретение относится к эксплуатации нефтяных месторождений. Техническим результатом является обеспечение оперативного контроля и реконструкции скважин на месторождении.

Изобретение относится к области вычислительной техники, в частности к организации контроля хода выполнения программы, выполняющейся на вычислительной системе, вычислительном кластере.

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

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

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

Изобретение относится к способу, системе и компьютерному носителю данных для сортировки данных в электронной таблице. Технический результат заключается в ускорении сортировки данных в электронной таблице.

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

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

Изобретение относится к вычислительной технике. Технический результат заключается в расширении арсенала средств для передачи объектов памяти между процессами.
Наверх