WinFS

редактировать

WinFS (сокращение от Windows Future Storage ) было кодовым именем для отмененного проект системы хранения данных и управления, основанный на реляционных базах данных, использование Microsoft и доступный в 2003 году в качестве расширенной подсистемы хранения для Microsoft Windows операционная система, предназначенная для сохраняемости и управления структурированными, полуструктурированными и неструктурированными данными.

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

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

Хотя WinFS и ее схема общего типа позволяют приложить различные типы данных, приложение все равно должно быть закодировано для различных типов данных. Следовательно, это не показывает одно приложение, которое может просматривать или редактировать все типы данных; скорее, WinFS позволяет приложениям понимать данные и извлекать информацию, которую они могут использовать в дальнейшем. Когда WinFS была представлена ​​на конференции профессиональных разработчиков 2003 г., Microsoft также выпустила видеопрезентацию под названием IWish, в которой были показаны макеты интерфейсов, показывающие, как приложения будут представлены интерфейсы, использующие преимущества унифицированной системы типов. Концепции, показанные в видео, представлены различные типы приложений, использующих взаимосвязи элементов для динамического предложения параметров, до приложений связанных несколько типов и отображающих их в единой презентации.

WinFS была объявлена ​​одним из столпов «Longhorn» волны технологий и будет поставляться как часть следующей версии Windows. Впечатление было решено, что WinFS будет поставляться после выпуска Windows Vista, но эти планы были отложены в июне 2006 года, и некоторые из его компонентов технологий были интегрированы в ADO.NET и Microsoft SQL Server.

Содержание

  • 1 Мотивация
  • 2 Обзор
  • 3 Разработка
  • 4 Хранение данных
    • 4.1 Архитектура
      • 4.1.1 Хранилище данных
    • 4.2 Модель данных
      • 4.2.1 Система типов
      • 4.2.2 Взаимосвязи
      • 4.2.3 Правила
    • 4.3 RAV
    • 4.4 Контроль доступа
  • 5 Извлечение данных
    • 5.1 Поиски
    • 5.2 Уведомления
  • 6 Совместное использование данных
  • 7 Поддержка приложений
    • 7.1 Пространство имен оболочки
    • 7.2 Microsoft Rave
    • 7.3 StoreSpy
    • 7.4 Браузер типов
    • 7.5 OPather
    • 7.6 Проект "Orange"
  • 8 См. Также
  • 9 Ссылки
  • 10 Внешние ссылки

Мотивация

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

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

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

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

Обзор

WinFS изначально распознает различные типы данных, такие как изображение, электронная почта, документ, аудио, видео, календарь, контакт, вместо того, чтобы просто оставить их как сырые, не проанализированные байтовые потоки (как большинство файловых систем делают). Данные, хранящиеся и управляемые системой, являются экземплярами типа данных, распознаваемого средой выполнения WinFS. Данные структурированы с помощью свойств. Например, экземпляр типа резюме будет отображать данные, предоставляя такие свойства, как имя, квалификация образования, опыт. Каждое свойство может быть простого типа (строки, целые числа, дата) или сложного типа (контакты). Различные типы данных предостав разные свойства. Кроме того, WinFS также позволяет связывать разные экземпляры данных; например, документ и контакт могут быть связаны отношением Автор. Отношения также представлены как свойства; например, если документ связан с контактом отношениями «Создано», тогда документ будет иметь свойство «Кем создано». Когда к нему обращаются, просматривается и возвращаются связанные данные. Следуя отношениям, можно получить доступ ко всем данным. WinFS обеспечивает совместное использование данных между приложениями и их услугами вместе с доступными для всех приложений. Когда приложение хочет использовать тип WinFS, оно может использовать схему для поиска структуры данных и может использовать информацию. Таким образом, приложение имеет доступ ко всем данным в системе, даже если разработчику не нужно было писать анализаторы для распознавания различных форматов данных. Он также может использовать отношения и связанные данные для создания динамических фильтров для представления, с которым работает приложение. API WinFS широко абстрагирует задачу доступа к данным. Все типы WinFS представлены как объекты .NET со свойствами объекта, напрямую сопоставленными со свойствами типа данных. Используя один и тот же экземпляр данных WinFS, можно использовать различные приложения, работающие с одними и теми же данными, вместе с тем, чтобы хранить одни и те же данные в разных файлах. Таким образом WinFS может уменьшить размерность.

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

В дополнение к схематизированным данным (например, XML и реляционным данными) WinFS поддерживает частично структурированные данные (например, изображения, которые имеют неструктурированный битов плюс структурированные метаданные)), а также неструктурированные данные (например, файлы). Он хранит неструктурированные компоненты в виде файлов, а структурированные метаданные - в структурированном хранилище. Внутри WinFS использует реляционную базу данных для управления данными. Это не ограничивает данные принадлежностью к какой-либо модели данных. Среда выполнения WinFS сопоставляет схему с реляционной модальностью, определяя таблицы, в которых будут храниться типы первичные ключи и внешние ключи, которые потребуются для представления отношений. WinFS по умолчанию включает сопоставления для объектных и XML-схем. Должны быть указаны сопоставления для других схем. Схемы объектов указаны в XML; WinFS генерирует код для отображения схем как .NET классов. ADO.NET можно использовать для непосредственного указания реля схемы, хотя необходимо отображать схемы объекта, чтобы указать ее как классы. Обход отношений выполняется как объединяет в этих таблицах. WinFS также автоматически создает индексы для этих таблиц, чтобы обеспечить быстрый доступ к информации. Индексирование ускоряет объединение, а просмотр отношений для извлечения связанных данных выполняется очень быстро. Индексы также используются при поиске информации; поиск и запросы использовать индексы для быстрого завершения операций, как и в системах поиска на рабочем столе.

Разработка

График структурированного хранения 1990 - –1991 - –1992 - –1993 - –1994 - –1995 - –1996 - –1997 - –1998 - –1999 - –2000 - –2001 - –2002 - –2003 - –2004 - –2005 - –2006 - –2007 - –2008 - –2009 - –2010 - –2011 - –2012 - –2013 - –2014 - –2015 - –2016 - –2017 - –2018 - –2019 - OFS в Каире Storage +, используя SQL 7.0 RFS, используя SQL 2000 Exchange Webstore Outlook LIS WinFS Microsoft Semantic Engine ←Отменено ←Отменено ←Отменено ←Функции отключены ←Функции отключены ←Отменены ←Информация отсутствует Хронология различных проектов структурированного хранилища от Microsoft. Ни один из них еще не привел к созданию полнофункциональной среды выполнения и API вокруг нее. Годы указаны приблизительно.

Разработка WinFS является расширением функций, которая изначально планировалась в начале 1990-х годов. Дублированная объектная файловая система, она должна была быть частью Каир. Предполагалось, что в OFS будут мощные функции агрегирования данных, но проект Cairo был отложен, а вместе с ним и OFS. Позже, во время разработки COM, была запланирована система хранения под названием Storage +, основанная на выпускающемся в то время SQL Server 8.0, которая должна предлагать аналогичные функции агрегирования. Это тоже так и не было реализовано, и аналогичная технология, Relational File System (RFS), была задумана для запуска с SQL Server 2000. Однако SQL Server 2000 в конечном итоге стал незначительным обновлением до SQL Server 7.0, а RFS не был реализован.

Но концепция не отказалась. Он просто превратился в WinFS. Первоначально планировалось включить WinFS в Windows Vista и в сборку 4051 Windows Vista, которая затем получила кодовое имя Longhorn, данное разработчикам на конференции Microsoft Professional Developers Conference в 2003 году. включал WinFS, но имел значительные проблемы с производительностью. В августе 2004 года Microsoft объявила, что WinFS не будет поставляться с Windows Vista; Вместо этого он будет доступен в виде загружаемого обновления после выпуска Vista.

29 августа 2005 года Microsoft незаметно сделала бета-версию 1 WinFS доступной для подписчиков MSDN. Он работал на Windows XP и требовал для запуска .NET Framework. WinFS API был включен в пространство имен System.Storage. Бета-версия была обновлена ​​1 декабря 2005 г. для обеспечения совместимости с.NET Framework версии 2.0. WinFS Beta 2 была запланирована на некоторое время в 2006 году и должна была начаться интеграция с Windows Desktop Search, чтобы результаты поиска включали результаты из обычных файлов, так и из хранилища WinFS, а также разрешали доступ к WinFS. данные с использованием ADO.NET.

23 июня 2006 г. команда WinFS в Microsoft объявила, что WinFS больше не будет поставляться как отдельный продукт, а некоторые компоненты будут переданы под эгиду других технологий. Многие из основных функций, которые Microsoft предоставляет в WinFS, включают панель для редактирования метаданных, навигацию по свойствам на основе, фильтрацию или наложение элементов по свойствам, инкрементный поиск и сохраненные поиски ; эти функции были включены в Windows Vista. Составление запроса, функция WinFS, которая позволяет пользователям выполнять дополнительный поиск, повторно используя результаты предыдущего запроса, была позже включена в Windows Vista.

Примеры использования технологий: объектно-реляционная отображение компонентов в ADO.NET Entity Framework ; поддержка неструктурированных данных, режим работы без администратора, поддержка объектов файловой системы через тип данных FILESTREAMи иерархических данных в SQL Server 2008, под кодовым названием Katmai, а также интеграция с Win32 API и Windows Shell и поддержка обхода иерархий путем обхода отношений в более поздних версиях Microsoft SQL Server ; и компоненты синхронизации в Microsoft Sync Framework.

В 2013 году Билл Гейтс назвал WinFS своим самым большим разочарованием в Microsoft и что идея WinFS опередила свое время, которое возродится снова.

Хранение данных

Архитектура

Архитектура стека WinFS

WinFS использует реляционный механизм, который унаследован от SQL Server 2005, для обеспечения связи механизма данных. Хранилища WinFS - это просто файлы базы данных SQL Server (.MDF) с установленным атрибутом FILESTREAM. Эти файлы хранятся в папке с ограниченным доступом под названием «Информация о системном томе» (помещенной в корень тома) в папках в папке «WinFS» с именами GUID этих хранилищ.

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

WinFS работает как служба, которая запускает три обрабатывает :

  1. WinFS.exe, на котором размещается реляционное хранилище данных
  2. WinFSSearch.exe, на котором размещается механизм индексирования и запросов
  3. WinFPM.exe (менеджер продвижения файлов WinFS), который взаимодействует с базовой файловой системой

Она обеспечивает программный доступ к своим функциям через .NET Framework API. Они позволяют приложения определять индивидуальные типы данных, определять между данными, хранить и извлекать информацию, а также разрешать расширенный поиск. Затем приложения могут агрегировать данные и представлять агрегированные данные пользователю.

Хранилище данных

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

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

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

Единица данных, которая должна храниться в хранилище WinFS, называется элементом WinFS. Элемент WinFS вместе с основным элементом данных также содержит информацию о том, как элемент данных связан с другими данными. Это отношение хранится в виде логических ссылок. Ссылки указывают, с какими другими элементами данных связан текущий элемент. Другими словами, ссылки определяют отношения данных с другими элементами данных. Ссылки физически хранятся с использованием идентификатора ссылки, который определяет имя и цель отношения, например тип или состоит из. Идентификатор ссылки сохраняется как атрибут элемента данных. Все объекты с одинаковым идентификатором ссылки считаются связанными. XML-схема , определяющая структуру элементов данных, которые будут храниться в WinFS, должна быть заранее предоставлена ​​среде выполнения WinFS. В бета-версии 1 WinFS сборку схемы нужно было добавить в GAC, прежде чем ее можно было использовать.

Модель данных

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

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

Система типов

Иерархия типов WinFS

Наиболее важное различие между файловой системой и WinFS в том, что WinFS знает тип каждого элемента данных, который она хранит. Тип определить свойства элемента данных. Система типов WinFS связана с концепцией.NET framework классов и наследования. Новый тип может быть создан путем расширения и вложения любых предопределенных типов.

WinFS использует четыре предопределенных базовых типа - Items, Relationships, ScalarTypes и NestedTypes. Элемент - это фундаментальный объект, который можно сохранить, а Отношение - это отношение или связь между двумя элементами данных. Все элементы системы WinFS должны иметь тип, тип сохраняемого элемента определяет его свойства. Свойства могут быть элементом ScalarType, который может иметь свойство, или NestedType, который представляет собой набор из более чем одного ScalarTypes и / или NestedTypes. Все типы WinFS доступны как.NET CLR классы.

Любой объект, представленный в виде единицы данных, например контакт, изображение, видео, документ и т. Д., Может быть сохранен в хранилище WinFS как специализация элемента. тип. По умолчанию WinFS предоставляет типы элементов для файлов, контактов, документов, изображений, аудио, видео, календаря и сообщений. Элемент File может хранить любые общие данные, которые хранятся в файловых системах в виде файлов. Но если для файла не предоставлена ​​расширенная схема, определяя его как специализированный элемент, WinFS не сможет получить доступ к его данным. Такой файловый элемент может поддерживать только связь с другими элементами.

Определение нового типа

Разработчик может расширить любой из этих типов или элемент базового типа, предоставить тип для своих пользовательских данных. Данные, содержащиеся в элементе, включают в себя фактические данные. Например, контакт может иметь имя поля, которое является ScalarType, и одно поле Address, NestedType, которое также может быть из двух ScalarType. Для определения этого типа базовый класс Элемент расширяется. Поле NestedType можно определить как другой класс, использование два поля ScalarType. После определения типа должна быть определена схема, которая обозначает примитивный тип каждого поля, например, поле Name - это строка, поле Address - это настраиваемый класс Address, оба поля которого являются строками. Другие примитивные типы, поддерживаемые WinFS: Integer, Byte, Decimal, Float, Double, Boolean и DateTime, среди прочего. Схема также определит, какие поля являются обязательными, а какие - необязательными. Элемент контакта, таким образом, будет откликнуться на ввод информации о контакте, заполнении поля личности и его сохранения. При первичном сохранении необходимо заполнить только поля, отмеченные как обязательные. Другие поля могут быть заполнены позже или вообще не заполнены. Если необходимо добавить дополнительные поля свойств, например, последний тип конвертации, этот тип можно расширить для их размещения. Аналогично можно определить типы элементов для других данных.

Отношения

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

Типы WinFS представлены как классы.NET, которые могут быть представлены как объекты.NET. Данные хранятся в экземплярах этих типов установки их свойств. После этого они сохраняются в хранилище WinFS. Доступ к хранилищу WinFS осуществляется с помощью класса ItemContext (подробности см. В разделе Получение данных). ItemContext разрешает транзакционный доступ к хранилищу WinFS; то есть все операции с момента привязки объекта ItemContext к хранилищу либо все выполняются успешно, либо все откатываются. При внесении изменений в данные они не записываются на диск; скорее они записываются в журнал в память. Только при закрытии соединения изменения записываются в диск в пакетном режиме. Это помогает оптимизировать дисковый ввод-вывод. Следующий фрагмент кода, написанный на C #, создает контакт и хранили его в хранилище WinFS.

// Подключаемся к хранилищу WinFS по умолчанию, используя (ItemContext ic = ItemContext.Open ()) {// Создаем контакт и устанавливаем данные в соответствующие свойства ContactEAddress contact = new ContactEAddress () {Name = new PersonName () {/ / Имя является сложным типом Displayname = "Doe, John", FirstName = "John", LastName = "Doe"}, TelephoneNumber = new TelephoneNumber () {// Номер телефона является сложным типом Country = CountryCode.Antarctica, Areacode = 4567, Number = 9876543210}, Age = 111 // Возраст - это простой тип}; // Добавляем объект в личную папку пользователя. // Это связывает элемент с псевдотипом Папка для обратной // совместимости, поскольку это позволяет получить доступ к элементу в иерархии // папок для приложений, которые не являются родными для WinFS. Папка, содержащаяFolder = UserDataFolder.FindMyPersonalFolder (); containsFolder.OutFolderMemberRelationship.AddItem (ic, contact); // Находим документ и связываемся с ним. Поиск начинается с создания объекта // ItemSearcher. Каждый объект типа WinFS содержит метод GetSearcher () //, который генерирует объект ItemSearcher, который ищет документы этого типа. using (ItemSearcher searchcher = Document.GetSearcher (ic)) {Документ d = searchcher.Find (@ "Title = 'Some Specific Document'"); d.OutAuthoringRelationship.AddItem (ic, contact); } // должен быть найден только один документ, также можно использовать метод ItemContext.FindOne () //. // Находим изображение и связываемся с ним с помощью (ItemSearcher searchcher = Picture.GetSearcher (ic)) {Picture p = search.Find (@ "Occasion = 'Graduation' and Sequence = '3'"); p.OutSubjectRelationship.AddItem (ic, contact); } // Сохраняемся в магазине и закрываем ссылку на магазин ic.Update (); }

Взаимосвязи

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

Взаимосвязи WinFS

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

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

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

Правила

WinFS включает правила, которые выполняются при определенном условии. Правила WinFS работают с данными и отношениями данных. Например, может быть создано правило, которое используется, когда создается статья «Имя», и если значение этого поля какое-то конкретное имя, должно быть создано, связывающая элемент с каким-либо другим элементом. Правила WinFS также могут обращаться к любому внешнему приложению. Например, можно создать правило, которое запускает приложение Notify каждый раз, когда приходит письмо от контакта. Правила WinFS также можно использовать для добавления новых полей свойств к существующим элементам данных.

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

RAV

WinFS поддерживает создание расширенных представлений приложений (RAV) путем агрегирования различных данных в формате каждой таблицы. В отличие от представления базы данных, где каждый отдельный элемент может быть только скалярным сложным значением, RAV могут иметь элементы или даже элементы коллекции. Фактические данные могут относиться к нескольким типам данных или экземплярам и даже могут быть извлечены путем обхода отношений. RAV по своей сути разбиваются на страницы (разделяя весь набор данных на более мелкие страницы, содержащие отключенные подмножества данных) средой выполнения WinFS. Размер страницы определен во время создания представления, и WinFS API использует методы для итерации по страницам. РАВ поддерживает изменение вида в соответствии с предусмотренными группировками. Просмотры также могут быть опрошены.

Контроль доступа

Несмотря на то, что все данные являются общими, не все равно доступны. WinFS использует систему аутентификации Windows для обеспечения двух механизмов защиты данных. Во-первых, это безопасность на уровне общего ресурса, которая контролирует доступ к вашему общему ресурсу WinFS. Во-вторая существует безопасность на уровне элементов, поддерживающая дескрипторы безопасности, совместимые с NT. Процесс, обращающийся к элементу, должен иметь достаточно прав для доступа к нему. Также в Vista есть понятие «уровень целостности» для приложения. Данные с более высокой степенью целостности недоступны для процесса с более низкой целостностью.

Извлечение данных

Блок-схема для создания, поиска и обновления экземпляров данных WinFS

Основным режимом извлечения данных из хранилища WinFS является запрос в хранилище WinFS по некоторым критериям, который возвращает enumerable набор элементов, соответствующих критериям. Критерии запроса указываются с использованием языка запросов OPath. Возвращенные данные становятся доступными в виде экземпляров схем типов, соответствующих объектной модели .NET . Доступ к данным в них можно получить, открыв свойства отдельных объектов.

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

Тот факт, что к данным можно получить доступ, используя их описание, а не местоположение, можно использовать для обеспечения организационных возможностей конечного пользователя без ограничения иерархической организации, используемой в файловых системах. В файловой системе каждый файл или папка содержится только в одной папке. Но элементы WinFS могут участвовать в любом количестве отношений удержания, в том числе и с любыми другими элементами. Таким образом, конечные пользователи не ограничиваются только организацией файлов / папок. Скорее, контакт может стать контейнером для документов; картинка контейнер для контактов и так далее. Для совместимости с прежними версиями WinFS включает псевдотип, называемый Folder, который присутствует только для участия в поддержании отношений и имитации организации файлов / папок. Поскольку любой элемент WinFS может быть связан с более чем одним элементом папки, с точки зрения конечного пользователя, элемент может находиться в нескольких папках без дублирования фактических данных. Приложения также могут анализировать взаимосвязь графиков для представления различных фильтров. Например, приложение электронной почты может анализировать связанные контакты и отношения контактов с рестораном счета и динамически создавать фильтры, такие как «Электронные письма, отправленные людям, с которым я обедал».

Поиск

WinFS API предоставляет класс, называемый классом ItemContext, который привязан к хранилищу WinFS. Объект ItemContext можно использовать для охвата поиска всего магазина или его подмножества. Он также обеспечивает транзакционный доступ к магазину. Затем объект этого класса может порождать объект ItemSearcher, который принимает тип (объект, представляющий тип) извлекаемого элемента или связанную и последовательность OPathquery, представляющий поиск. Возвращается набор всех совпадений, которые можно привязать к виджету пользовательского интерфейса для массового отображения или индивидуального перечисления. Элементы свойств также можно изменить, а затем сохранить обратно в хранилище данных для обновлений данных. Объект ItemContext закрывается (что отмечает конец ассоциации объекта с хранилищем), когда выполняются запросы или изменения, объединенные в хранилище.

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

ContactsCollection contacts = picture.OutgoingRelationships.Cast (typeof (Contact)). Значение; // Это извлекает коллекцию всех исходных отношений из объекта изображения // и фильтрует доступные из них контакты и извлекает его значение. // Или связь может быть статически указана как ContactsCollection contacts = picture.OutgoingRelationships.OutContactRelationship.Contact;

Строка запроса OPath позволяет выразить параметры, которые будут запрошены для инструкций, используя свойства Item, встроенные элементы, а также Relationships. Он может указывать одно условие поиска,

Последняя правка сделана 2021-06-21 10:20:16
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте