Введение

Проект системы хранения данных Windows WinFS (сокращение от Windows Future Storage) — кодовое название отмененного проекта системы хранения и управления данными, основанного на реляционных базах данных, разработанного Microsoft и впервые продемонстрированного в 2003 году. Он задумывался как продвинутая подсистема хранения для операционной системы Microsoft Windows, предназначенная для постоянного хранения и управления структурированными, полуструктурированными и неструктурированными данными. WinFS включает в себя реляционную базу данных для хранения информации и позволяет хранить в ней данные любого типа, при условии наличия четко определенной схемы для этого типа. Отдельные элементы данных могут быть связаны между собой отношениями, которые либо определяются системой на основе определенных атрибутов, либо задаются пользователем явно. Поскольку данные имеют четко определенную схему, любое приложение может повторно использовать эти данные, а благодаря отношениям связанные данные можно эффективно организовывать и извлекать. Зная структуру и смысл информации, система может использоваться для выполнения сложных запросов, обеспечивающих расширенный поиск данных и агрегацию различных элементов данных с использованием связей между ними. Хотя WinFS и его общая схема типов позволяют приложению распознавать различные типы данных, для их отображения приложению все равно требуется специальное кодирование. Следовательно, разработка единого приложения для просмотра или редактирования всех типов данных невозможна; WinFS позволяет приложениям понимать структуру всех данных и извлекать информацию для дальнейшего использования. При представлении WinFS на конференции профессиональных разработчиков в 2003 году Microsoft также опубликовала видеопрезентацию под названием IWish, демонстрирующую макеты интерфейсов, показывающие, как приложения будут использовать унифицированную систему типов. Концепции, показанные в видео, варьировались от приложений, использующих связи между элементами для динамического предложения вариантов фильтрации, до приложений, группирующих несколько связанных типов данных и отображающих их в едином представлении. WinFS позиционировался как один из ключевых элементов технологической волны "Longhorn" и должен был быть включен в следующую версию Windows. Позже было решено, что WinFS будет выпущен после Windows Vista, но эти планы были отменены в июне 2006 года, а некоторые из его компонентов были интегрированы в ADO.NET и Microsoft SQL Server.

Архитектура

WinFS использует реляционный движок, основанный на SQL Server 2005, для обеспечения механизма связей данных. Хранилища WinFS – это обычные файлы баз данных SQL Server (.MDF) с установленным атрибутом FILESTREAM. Эти файлы хранятся в папке с ограниченным доступом под названием "System Volume Information" (расположенной в корневом каталоге), в папках внутри папки "WinFS" с именами GUID этих хранилищ. WinFS.exe, который размещает реляционное хранилище данных, WinFSSearch.exe, который размещает систему индексирования и запросов, и WinFPM.exe (WinFS File Promotion Manager), который взаимодействует с базовой файловой системой. Он обеспечивает программный доступ к своим функциям через набор API .NET Framework. Эти API позволяют приложениям определять пользовательские типы данных, устанавливать связи между данными, хранить и извлекать информацию, а также выполнять расширенный поиск. Связи могут быть заданы и другими приложениями, и пользователем. WinFS предоставляет унифицированное хранилище, но не определяет формат данных, которые должны храниться в хранилищах. Вместо этого он поддерживает запись данных в форматах, специфичных для приложений. Однако приложения должны предоставить схему, определяющую, как следует интерпретировать формат файла. Определенный таким образом элемент "Контакт" будет использоваться для хранения информации о контакте путем заполнения поля свойств и его сохранения. Во время первоначального сохранения необходимо заполнить только те поля, которые помечены как обязательные. Правила WinFS выполняются при соблюдении определенных условий. Правила WinFS работают с данными и связями между ними. Например, можно создать правило, которое при создании элемента, содержащего поле "Имя", и если значение этого поля соответствует определенному имени, создаст связь между этим элементом и другим элементом. Правила WinFS также могут обращаться к внешним приложениям. Например, можно создать правило, которое запускает приложение уведомлений при получении письма от определенного контакта. Доступ к данным в них осуществляется через свойства отдельных объектов. Возвращается набор всех совпадений, который затем можно привязать к виджету пользовательского интерфейса для массового отображения или последовательного перечисления. Элемент WinFS также можно скопировать в файловую систему, не поддерживающую WinFS, но без возврата этого элемента данных в хранилище WinFS он не будет поддерживать расширенные службы, предоставляемые WinFS. API WinFS также обеспечивает некоторую поддержку для обмена данными с приложениями, не поддерживающими WinFS. WinFS предоставляет объект оболочки для доступа к хранилищам WinFS. Этот объект сопоставляет элементы WinFS с иерархией виртуальных папок и доступен любому приложению. Это позволяло просматривать хранилища WinFS, представляя иерархическое представление элементов WinFS. Он автоматически генерировал виртуальные папки на основе разрешений доступа, даты и других метаданных, представляя их в виде иерархического дерева, аналогичного традиционным папкам. Приложение создавало вкладки для различных типов элементов. StoreSpy позволял просматривать элементы, связи, множества, вложенные элементы, расширения и другие типы в хранилище вместе с их полными метаданными. Он также предоставлял интерфейс поиска для выполнения ручного поиска и сохранения результатов в виде виртуальных папок. В приложении также был представлен графический вид правил WinFS. Однако он не позволял редактировать элементы или их свойства, хотя планировалось добавить эту возможность в будущих версиях. Но проект WinFS был закрыт до того, как это стало возможным.

Тип браузера

WinFS также включает в себя приложение WinFS Type Browser, которое позволяет просматривать типы WinFS и визуализировать иерархические связи между ними. Тип WinFS, будь то встроенный или определяемый пользователем, можно визуализировать вместе со всеми его свойствами и методами. Также отображаются типы, от которых он наследуется, и другие типы, расширяющие его схему. Однако, несмотря на включение в состав WinFS, этот инструмент был выпущен без поддержки. Он предоставляет графический интерфейс для создания запросов Opath. Для этого необходимо выбрать целевой тип объекта и указать параметры запроса. В нем реализована функция автозавершения параметров, аналогичная Intellisense. Инструмент можно использовать для задач визуализации, таких как привязка результатов запроса к элементу управления DataGrid, создание представлений данных непосредственно в WinFS или просто извлечение строки запроса.

Проект "Оранжевый"

Microsoft запустила проект по созданию приложения для визуализации данных для WinFS. Он получил кодовое название "Проект Orange" и, как сообщалось, был разработан с использованием Windows Presentation Foundation. Предполагалось, что приложение позволит изучать элементы, хранящиеся в хранилищах WinFS, а взаимосвязи данных должны были стать ключевым элементом навигационной модели. Также планировалось, что оно позволит пользователям графически организовывать хранилища WinFS, воплощая многие концепции, продемонстрированные в видеофайле IWish Concept Video WMV. Однако, поскольку проект WinFS был закрыт, текущий статус этого проекта неизвестен.