механизм применения преобразований к файлам, состоящим из множественных частей
Классы МПК: | G06F15/16 сочетание двух или более вычислительных машин, каждая из которых снабжена по меньшей мере арифметическим устройством, программным устройством и регистром, например для одновременной обработки нескольких программ |
Автор(ы): | ХИЛЛБЕРГ Майкл Дж. (US), ЧЕНГ Роджер (US), ОРНСТЕЙН Дэвид Б. (US), КАХИЛЛ Джейсон М. (US) |
Патентообладатель(и): | МАЙКРОСОФТ КОРПОРЕЙШН (US) |
Приоритеты: |
подача заявки:
2003-05-17 публикация патента:
27.02.2009 |
Изобретение относится к системе и способу применения преобразований к файлам, состоящим из множественных частей. Техническим результатом является возможность автоматического извлечения вспомогательных объектов и решение возникающих при этом проблем за одно обращение к главному объекту. Согласно способу выполнения преобразований над данными принимают запрос доступа к потоку в файле, состоящем из множественных частей, по получении запроса идентифицируется список преобразований, связанных с потоком, при этом список также включается в файл, состоящий из множественных частей, а преобразования, указанные в списке преобразований, осуществляются над данными до выполнения запроса, причем если это запрос на запись, то кодируют данные, а если это запрос на чтение, декодируют данные. Список преобразований зависит от порядка необходимых преобразований и включает в себя структуру данных, имеющую первый поток, включающий в себя отображение, сопоставляющее поток с именем для списка преобразований, второй поток, перечисляющий каждое из преобразований для потока, третий поток для каждого из перечисленных преобразований, который идентифицирует информацию, связанную с преобразованием. 3 н. и 24 з.п. ф-лы, 5 ил.
Формула изобретения
1. Реализуемый компьютером способ выполнения преобразований над данными, содержащий этапы, на которых принимают запрос доступа к потоку в файле, состоящем из множественных частей, причем файл, состоящий из множественных частей, включает в себя потоки и пространства данных, при этом каждое пространство данных задает список преобразований, подлежащих применению в заданном порядке к данным внутри потока, идентифицируют пространство данных, которое связано с упомянутым потоком, причем это пространство данных идентифицируют из файла, состоящего из множественных частей, и выполняют преобразования над данными в порядке, указанном в списке преобразований, перед завершением обработки запроса.
2. Реализуемый компьютером способ по п.1, отличающийся тем, что файл, состоящий из множественных частей, включает в себя составной файл OLE.
3. Реализуемый компьютером способ по п.1, отличающийся тем, что при идентификации пространства данных производят поиск отображения пространства данных для потока, причем отображение пространств данных обеспечивает корреляцию между потоком и именем пространства данных, связанным с упомянутым пространством данных.
4. Реализуемый компьютером способ по п.1, отличающийся тем, что упомянутый список включает в себя тип и имя каждого преобразования, указанного в списке.
5. Реализуемый компьютером способ по п.1, отличающийся тем, что список дополнительно включает в себя данные экземпляра преобразования для одного из преобразований, указанных в списке, причем данные экземпляра преобразования задают существенную информацию для декодирования данных, преобразованных этим одним преобразованием.
6. Реализуемый компьютером способ по п.1, отличающийся тем, что запрос является запросом записи порции данных, и по меньшей мере одно преобразование выполняют над упомянутой порцией данных для создания кодированных данных, которые записывают в среду хранения данных.
7. Реализуемый компьютером способ по п.6, отличающийся тем, что порция данных не является смежной с другими порциями данных, предварительно записанными в среду хранения данных для этого потока.
8. Реализуемый компьютером способ по п.6, отличающийся тем, что порция данных является порцией фиксированного размера по отношению к другим порциям данных для потока.
9. Реализуемый компьютером способ по п.1, отличающийся тем, что список включает в себя преобразование сжатия и преобразование шифрования.
10. Реализуемый компьютером способ по п.1, отличающийся тем, что запрос является запросом чтения порции данных, и по меньшей мере одно преобразование осуществляет обратное преобразование над порцией данных, извлеченной из потока, для предоставления запрашивающей стороне декодированных данных.
11. Компьютерная система, имеющая механизм применения преобразований к файлам, состоящим из множественных частей, содержащая процессор, память, распределяемую для множества выполняемых компьютером команд, загружаемых в память для выполнения процессором, причем выполняемые компьютером команды осуществляют способ, содержащий этапы, на которых
принимают запрос доступа к потоку в файле, состоящем из множественных частей, причем файл, состоящий из множественных частей, включает в себя потоки и пространства данных, при этом каждое пространство данных задает список преобразований, подлежащих применению в заданном порядке к данным внутри потока,
идентифицируют упомянутый список преобразований, связанных с потоком, причем список идентифицируют из файла, состоящего из множественных частей, и
выполняют преобразования в порядке, указанном в списке преобразований, над данными перед завершением обработки запроса.
12. Компьютерная система по п.11, отличающаяся тем, что файл, состоящий из множественных частей, включает в себя составной файл OLE.
13. Компьютерная система по п.11, отличающаяся тем, что при идентификации списка преобразований производят поиск отображения пространства данных для потока, причем упомянутое отображение пространства данных обеспечивает корреляцию между потоком и именем пространства данных, связанным с упомянутым пространством данных.
14. Компьютерная система по п.11, отличающаяся тем, что список преобразований включает в себя тип и имя каждого преобразования, указанного в списке.
15. Компьютерная система по п.11, отличающаяся тем, что список дополнительно включает в себя данные экземпляра преобразования для одного из преобразований, указанных в списке, причем данные экземпляра преобразования задают существенную информацию для декодирования данных, преобразованных этим одним преобразованием.
16. Компьютерная система по п.11, отличающаяся тем, что запрос является запросом записи порции данных, и по меньшей мере одно преобразование выполняют над порцией данных для создания кодированных данных, которые записывают в среду хранения данных.
17. Компьютерная система по п.16, отличающаяся тем, что порция данных не является смежной с другими порциями данных, предварительно записанными в среду хранения данных для потока.
18. Компьютерная система по п.16, отличающаяся тем, что порция данных является порцией фиксированного размера по отношению к другим порциям данных для потока.
19. Компьютерная система по п.11, отличающаяся тем, что список включает в себя преобразование сжатия и преобразование шифрования.
20. Компьютерная система по п.11, отличающаяся тем, что запрос является запросом чтения порции данных, и по меньшей мере одно преобразование осуществляет обратное преобразование над порцией данных, извлеченной из потока, для предоставления декодированных данных запрашивающей стороне.
21. Считываемая компьютером среда, в структуре данных которой содержатся кодированные данные, содержащая первый поток, включающий в себя отображение, которое коррелирует поток в файле, состоящем из множественных частей, с именем для списка преобразований, подлежащих применению в заданном порядке к упомянутому потоку,
второй поток, который перечисляет каждое из преобразований для упомянутого потока, и третий поток для каждого из преобразований, причем третий поток идентифицирует информацию, связанную с преобразованием.
22. Считываемая компьютером среда по п.21, отличающаяся тем, что структура данных включена в файл, состоящий из множественных частей.
23. Считываемая компьютером среда по п.21, отличающаяся тем, что имя для списка преобразований может быть коррелировано с множеством потоков в файле, состоящем из множественных частей.
24. Считываемая компьютером среда по п.21, отличающаяся тем, что список преобразований зависит от порядка.
25. Считываемая компьютером среда по п.21, отличающаяся тем, что информация идентифицирует имя класса и тип класса для преобразования.
26. Считываемая компьютером среда по п.25, отличающаяся тем, что информация дополнительно идентифицирует данные экземпляра, связанные с преобразованием.
27. Считываемая компьютером среда по п.26, отличающаяся тем, что преобразование включает в себя преобразование сжатия, и данные экземпляра включают в себя размер окна для преобразования сжатия.
Описание изобретения к патенту
Данная заявка подается как заявка РСТ, поданная 17 мая 2003 г. корпорацией Майкрософт, созданной и находящейся в США, с указанием всех стран, кроме США.
Предпосылки изобретения
Современные компьютерные системы обычно хранят большой объем данных в нескольких файлах. Формат файлов может быть одним из нескольких разных форматов, совместимых с различными приложениями, например текстовыми редакторами, электронными таблицами и т.п. Часто бывает необходимо передать файл на другой компьютер, чтобы другой пользователь мог видеть данные в файле или манипулировать ими. Иногда, когда файл слишком велик, до отправки файла на другой компьютер над файлом осуществляется преобразование (например, сжатие). Благодаря сжатию файла для отправки файла на другой компьютер требуется меньшая пропускная способность. В других случаях, для защиты данных от доступа со стороны неавторизованных пользователей, можно осуществлять другое преобразование (например, шифрование).
Некоторые из этих преобразований имеют особые методы кодирования и используют отдельный файл (например, словарь) для хранения информации о конкретном методе кодирования. Этот отдельный файл должен использоваться при доступе к преобразованному файлу. В случае повреждения, потери или недоступности этого отдельного файла, преобразованный файл оказывается бесполезным. Кроме того, поскольку некоторые из этих преобразований задают свои собственные методы кодирования для перемежения кодированных данных и информации обработки, файл, подвергнутый преобразованию, не подлежит совместному использованию или общей обработке. Кроме того, до преобразования файла современные преобразования требуют, чтобы данные в файле были организованы в виде последовательных байтов. Гарантия того, что байты в файле остаются последовательными, требует больших накладных расходов и нежизнеспособно для часто редактируемых файлов. Таким образом, хотя эти преобразования весьма полезны, способ их реализации не дает пользователям большой свободы действий.
Сущность изобретения
Настоящее изобретение относится к системе и способу реализации преобразований, обеспечивающих пользователям повышенную гибкость. В целом, настоящее изобретение обеспечивает механизм сохранения информации преобразования, связанной с одним или несколькими преобразованиями в файле, состоящем из множественных частей. Файл, состоящий из множественных частей, также содержит данные, к которым применяются одно или несколько преобразований. Таким образом, настоящее изобретение обеспечивает формат файла для файла, состоящего из множественных частей, что позволяет приложениям, обращающимся к файлу, легко осуществлять доступ к преобразованным данным. Согласно изобретению, множественные преобразования данных могут образовывать цепь. Эти преобразования данных, составляющие цепь, именуются «пространствами данных». Каждое пространство данных имеет уникальный порядок и тип для преобразований, образующих цепь. Например, два пространства данных могут задавать одни и те же преобразования, но разный порядок применения преобразований. Информация преобразования содержит информацию о пространствах данных.
Согласно другому аспекту изобретения, файл, состоящий из множественных частей, содержит множество потоков. Каждый поток может быть связан с одним из пространств данных. Таким образом, согласно настоящему изобретению, некоторые потоки в файле, состоящем из множественных частей, могут преобразовываться, тогда как другие потоки могут оставаться в своем естественном формате. Эта способность преобразовывать конкретные потоки без необходимости преобразования всего файла, состоящего из множественных частей, обеспечивает пользователям большую гибкость, например позволяет пользователям шифровать только значимую информацию в файле, состоящем из множественных частей (например, при редактировании документов).
Таким образом, настоящее изобретение относится к системе и способу применения преобразований к файлам, состоящим из множественных частей. Поступает запрос на доступ к потоку данных в файле, состоящем из множественных частей. По получении запроса идентифицируется список преобразований, связанных с потоком. Список также включается в состав файла, состоящего из множественных частей. Преобразования, указанные в списке преобразований, осуществляются над данными до завершения запроса. Если это запрос на запись, то преобразования кодируют данные. Если это запрос на чтение, то преобразования декодируют данные. Список преобразований зависит от порядка. Список преобразований содержит структуру данных, имеющую первый поток, который включает в себя отображение (соответствие), сопоставляющее поток с именем списка преобразования. Второй поток, перечисляющий все преобразования для потока. Третий поток для каждого из перечисленных преобразований, который идентифицирует информацию, связанную с преобразованием.
Краткое описание чертежей
Фиг.1 - функциональная блок-схема вычислительного устройства, которое можно использовать в реализациях настоящего изобретения.
Фиг.2 - функциональная блок-схема, иллюстрирующая в общих чертах процесс преобразования согласно настоящему изобретению.
Фиг.3 - графическое представление древовидной иерархии, которая представляет метаданные преобразования, показанные на фиг.2.
Фиг.4 - схема процесса преобразования.
Фиг.5 - логическая последовательность операций, иллюстрирующая в общих чертах процесс доступа к преобразованным данным в файле, состоящем из множественных частей, согласно одному варианту осуществления изобретения.
Подробное описание предпочтительного варианта осуществления
Изобретение обеспечивает механизм применения преобразований к файлам, состоящим из множественных частей. Механизм предусматривает структуру для задания информации преобразования. Информация преобразования и преобразованные данные сосуществуют в одном и том же документе. Механизм, предусмотренный изобретением, предпочтительно базируется на формате файла, состоящего из множественных частей, который допускает наличие множественных типов потоков в одном документе. Изобретатели определили, что формат составного файла по стандарту связывания и встраивания объектов (OLE) особенно подходит для реализаций изобретения. Таким образом, ниже изобретение описано с использованием формата составного файла. Однако специалистам в данной области, внимательно изучившим нижеследующее описание, будет ясно, что другие форматы мультифайла могут реализовывать настоящее изобретение с различными модификациями механизма, описанными ниже, приспособленными к другим форматам мультифайла. Таким образом, очевидно, что варианты осуществления изобретения не ограничиваются описанными здесь.
Сначала опишем изобретение со ссылкой на один пример иллюстративной вычислительной среды, в которой можно реализовать варианты осуществления изобретения. Затем опишем подробный пример одной конкретной реализации изобретения. Альтернативные варианты осуществления также могут быть включены в отношении определенных деталей конкретной реализации.
Иллюстративная вычислительная среда, отвечающая изобретению
На фиг.1 показана функциональная блок-схема вычислительного устройства, которое можно использовать в реализациях настоящего изобретения. На фиг.1 показано иллюстративное вычислительное устройство, которое можно использовать в реализациях настоящего изобретения. Согласно фиг.1, в очень общей конфигурации вычислительное устройство 100 обычно содержит, по меньшей мере, один процессор 102 и системную память 104. В зависимости от конкретных конфигурации и типа вычислительного устройства 100 системная память 104 может представлять собой энергозависимое запоминающее устройство (например, ОЗУ), энергонезависимое запоминающее устройство (например, ПЗУ, флэш-память и т.д.) или какую-либо их комбинацию. В системной памяти 104 обычно размещаются операционная система 105, один или несколько программных модулей 106 и, в необязательном порядке, программные данные 107. В качестве примеров программных модулей 106 могут выступать приложение обозревателя (программы просмотра), приложение финансового управления, текстовый редактор и т.д. Эта базовая конфигурация представлена на фиг.1 компонентами, окруженными пунктирной линией 108.
Вычислительное устройство 100 может иметь дополнительные особенности или функции. Например, вычислительное устройство 100 может также включать в себя дополнительные запоминающие устройства со сменными и/или стационарными носителями, в качестве которых могут выступать магнитные диски, оптические диски или лента. Такие дополнительные запоминающие устройства представлены на фиг.1 в виде запоминающего устройства 109 со сменным носителем и запоминающего устройства 110 со стационарным носителем. Компьютерные среды хранения данных могут включать в себя энергозависимые и энергонезависимые, сменные и стационарные среды хранения, реализующие любой способ и любую технологию хранения информации, как то: считываемых компьютером команд, структур данных, программных модулей или иных данных. Системная память 104, запоминающее устройство 109 со сменным носителем и запоминающее устройство 110 со стационарным носителем - все они являются примерами компьютерных сред хранения данных. Компьютерные среды хранения данных включают в себя, но без ограничения, ОЗУ, ПЗУ, ЭСППЗУ, флэш-память или другую технологию памяти, CD-ROM, цифровые универсальные диски (DVD) или другое оптическое запоминающее устройство, магнитные кассеты, магнитную ленту, запоминающие устройства на основе магнитных дисков или других магнитных носителей, или любую другую среду, которую можно использовать для хранения полезной информации и к которой можно осуществлять доступ посредством вычислительного устройства 100. Любая такая компьютерная среда хранения данных может входить в состав устройства 100.
Вычислительное устройство 100 может также содержать устройство(а) 112 ввода, например клавиатуру, мышь, перо, устройство голосового ввода, устройство тактильного ввода и т.д. Оно также может содержать устройство(а) 114 вывода, например дисплей, громкоговорители, принтер и т.д. Эти устройства общеизвестны в технике и не нуждаются в дополнительном описании.
Вычислительное устройство 100 также может содержать средства связи 116, позволяющие устройству 100 осуществлять связь с другими вычислительными устройствами 118, например, по сети. Средства связи 116 являются примером сред связи. Среды связи обычно реализуют компьютерно-считываемые команды, структуры данных, программные модули или другие данные в модулированном сигнале данных, например несущей волне или ином транспортном механизме, и включают в себя любые среды доставки данных. Термин «модулированный сигнал данных» означает сигнал, одна или несколько характеристик которого изменяется определенным образом, что позволяет кодировать информацию в сигнале. В порядке примера, но не ограничения, среды связи включают в себя проводные среды, например проводную сеть или прямое проводное соединение, беспроводные среды, например акустические, ВЧ, инфракрасные и другие беспроводные среды. Используемый здесь термин «компьютерно-считываемые среды» подразумевает как среды хранения данных, так и среды передачи данных.
Общее рассмотрение компонентов
На фиг.2 показана функциональная блок-схема, иллюстрирующая в общих чертах компоненты среды, реализующей настоящее изобретение. Проиллюстрирован файл 202, состоящий из множественных частей, предпочтительно составной файл OLE. Модель документа OLE известна в технике и широко используется как механизм содержания многих несопоставимых типов данных в едином документе. Традиционно, составной файл OLE используется совместно с несколькими внедренными файлами или иного содержимого поддержки, связанного с единичным документом. Каждый элемент составного файла хранится так, чтобы приложение, создавшее элемент, могло манипулировать им. Каждый элемент хранится в виде потока, например потоков 204, 206 и 208, показанных на фиг.2. Согласно вышеуказанному, каждый поток может относиться к одному из нескольких типов. Например, поток 204 stream1 может представлять собой документ текстового редактора, поток 206 stream2 может представлять собой электронную таблицу, а поток 208 streamZ может быть графическим файлом.
До настоящего времени после запрашивания преобразования на файле 202, состоящем из множественных частей, требовалось, чтобы все составляющие файла 202, состоящего из множественных частей, (т.е. потоки 204-208) были непрерывными и обрабатывались совместно. Однако, согласно настоящему изобретению, потоки 204-208 не обязаны быть непрерывными. Напротив, потоки 204-208 могут быть основаны на секторах. В нижеследующем рассмотрении под секторизованными файлами будем понимать файлы, в которых сохранены множественные куски (порции) данных, представляющие целый поток. Множественные порции могут храниться последовательно, но обычно хранятся не последовательно. В одном варианте осуществления порции могут иметь фиксированный размер, например 512 байт. Альтернативно, не выходя за рамки объема настоящего изобретения, можно предусмотреть порции переменного размера. При редактировании потока новая порция данных может создаваться и сохраняться в байтах, не последовательных по отношению к другим порциям данных для потока. Таким образом, секторизованные файлы позволяют легко редактировать поток без дополнительных затрат на гарантию, что поток остается непрерывным.
Согласно подробно описанному ниже, настоящее изобретение позволяет преобразовывать конкретные порции данных 240, связанные с потоком (например, потоком 206) в файле 202, состоящем из множественных частей, без преобразования других потоков. Поскольку настоящее изобретение позволяет преобразовывать указанные потоки независимо от других потоков, изобретение обеспечивает большую гибкость для защиты данных и управления данными. Например, на фиг.2 показан поток 206 stream2, подвергнутый процессу преобразования. Поток 206 stream2 может представлять собой электронную таблицу, содержащую цены конкретных товаров. Поэтому может быть желательно защищать эту информацию цен, чтобы неавторизованные пользователи не могли видеть цены. Таким образом, данные 240, направляемые в поток 206 stream2, подвергаются цепи преобразований (т.е. преобразованиям 220-224). Специалисту в данной области очевидно, что любое количество преобразований может составлять цепь, и они могут размещаться в цепи в любом порядке. Конкретные преобразования, образующие цепь, и порядок, в котором преобразования размещены в цепи, представляют пространство 230 данных. В целом, пространство данных может задавать одно преобразование, а может задавать множественные преобразования. В вышеприведенном примере последнее преобразование (например, преобразование 224) записывает преобразованные данные в поток 206 stream2, который может размещаться на диске (не показан). Один вариант осуществления для использования механизма применения преобразований к файлам, состоящим из множественных частей, подробно описан ниже со ссылкой на фиг.4.
Рассмотрение конкретного варианта осуществления изобретения
На фиг.3 показано графическое представление одного варианта осуществления древовидной иерархии, которая представляет метаданные 210 преобразования, показанные на фиг.2. В целом, древовидную иерархию можно вводить в состав файла, состоящего из множественных частей, любым способом, совместимым с файлом, состоящим из множественных частей. Ниже описана древовидная иерархия применительно к составным файлам. В целом, составные файлы рассматриваются как «файловая система внутри файла». В составном файле имеется иерархия «хранилищ», аналогичных директориям в файловой системе, и «потоков», аналогичных файлам в файловой системе. На фиг.3 прямоугольники представляют потоки, а овалы представляют хранилища. Прежде чем перейти к описанию метаданных 210 преобразования, отвечающих настоящему изобретению, заметим, что потоки 204-208 (показанные на фиг.2) проиллюстрированы в этой иллюстративной иерархии под корнем 302. Задание потоков под корнем является обычной техникой для форматов составного файла.
Теперь рассмотрим более подробно метаданные 210 преобразования, предусмотренные настоящим изобретением. Метаданные 210 преобразования хранятся в особом хранилище, именуемом "