Введение
Проект системы хранения данных 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 (short for Windows Future Storage) was the code name for a canceled data storage and management system project based on relational databases, developed by Microsoft and first demonstrated in 2003. It was intended as an advanced storage subsystem for the Microsoft Windows operating system, designed for persistence and management of structured, semi structured and unstructured data. WinFS includes a relational database for storage of information, and allows any type of information to be stored in it, provided there is a well defined schema for the type. Individual data items could then be related together by relationships, which are either inferred by the system based on certain attributes or explicitly stated by the user. As the data has a well defined schema, any application can reuse the data; and using the relationships, related data can be effectively organized as well as retrieved. Because the system knows the structure and intent of the information, it can be used to make complex queries that enable advanced searching through the data and aggregating various data items by exploiting the relationships between them. While WinFS and its shared type schema make it possible for an application to recognize the different data types, the application still has to be coded to render the different data types. Consequently, it would not allow development of a single application that can view or edit all data types; rather, what WinFS enables applications to do is understand the structure of all data and extract the information that they can use further. When WinFS was introduced at the 2003 Professional Developers Conference, Microsoft also released a video presentation, named IWish, showing mockup interfaces that showed how applications would expose interfaces that take advantage of a unified type system. The concepts shown in the video ranged from applications using the relationships of items to dynamically offer filtering options to applications grouping multiple related data types and rendering them in a unified presentation. WinFS was billed as one of the pillars of the "Longhorn" wave of technologies, and would ship as part of the next version of Windows. It was subsequently decided that WinFS would ship after the release of Windows Vista, but those plans were shelved in June 2006, with some of its component technologies being integrated into ADO. NET and 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 был закрыт до того, как это стало возможным.
WinFSSearch. exe, which hosts the indexing and querying engine
WinFPM. exe (WinFS File Promotion Manager), which interfaces with the underlying file system
It allows programmatic access to its features via a set of NET Framework APIs. These enable applications to define custom made data types, define relationships among data, store and retrieve information, and allow advanced searches. Relations can also be specified by other applications or the user. WinFS provides unified storage, but stops short of defining the format that is to be stored in the data stores. Instead it supports writing data in application specific formats. But applications must provide a schema that defines how the file format should be interpreted. The Contact Item defined in this way will be used to store information regarding the Contact, by populating the properties field and storing it. Only those fields marked as mandatory needs to be filled up during initial save. which are executed when a certain condition is met. WinFS rules work on data and data relationships. For example, a rule can be created that states that whenever an Item is created which contains field "Name" and if the value of that field is some particular name, a relationship should be created that relates the Item with some other Item. WinFS rules can also access any external application. For example, a rule can be built which launches a Notify application whenever a mail is received from a particular contact. The data in them can be accessed by accessing the properties of individual objects. A set of all matches is returned, which can then be bound to a UI widget for displaying en masse or enumerating individually. A WinFS item can also be copied to a non WinFS file system, but unless that data item is put back into the WinFS store, it will not support the advanced services provided by WinFS. The WinFS API also provides some support for sharing with non WinFS applications. WinFS exposes a shell object to access WinFS stores. This object maps WinFS items to a virtual folder hierarchy, and can be accessed by any application. which allowed one to browse WinFS stores by presenting a hierarchical view of WinFS Items. It automatically generated virtual folders based on access permissions, date and other metadata, and presented them in a hierarchical tree view, akin to what traditional folders are presented in. The application generated tabs for different Item types. StoreSpy allowed viewing Items, Relationships, MultiSet, Nested Elements, Extensions and other types in the store along with its full metadata. It also presented a search interface to perform manual searches, and save them as virtual folders. The application also presented a graphical view of WinFS Rules. However, it did not allow editing of Items or their properties, though it was slated for inclusion in a future release. But the WinFS project was cut back before it could materialize.
Тип браузера
WinFS также включает в себя приложение WinFS Type Browser, которое позволяет просматривать типы WinFS и визуализировать иерархические связи между ними. Тип WinFS, будь то встроенный или определяемый пользователем, можно визуализировать вместе со всеми его свойствами и методами. Также отображаются типы, от которых он наследуется, и другие типы, расширяющие его схему. Однако, несмотря на включение в состав WinFS, этот инструмент был выпущен без поддержки. Он предоставляет графический интерфейс для создания запросов Opath. Для этого необходимо выбрать целевой тип объекта и указать параметры запроса. В нем реализована функция автозавершения параметров, аналогичная Intellisense. Инструмент можно использовать для задач визуализации, таких как привязка результатов запроса к элементу управления DataGrid, создание представлений данных непосредственно в WinFS или просто извлечение строки запроса.
Проект "Оранжевый"
Microsoft запустила проект по созданию приложения для визуализации данных для WinFS. Он получил кодовое название "Проект Orange" и, как сообщалось, был разработан с использованием Windows Presentation Foundation. Предполагалось, что приложение позволит изучать элементы, хранящиеся в хранилищах WinFS, а взаимосвязи данных должны были стать ключевым элементом навигационной модели. Также планировалось, что оно позволит пользователям графически организовывать хранилища WinFS, воплощая многие концепции, продемонстрированные в видеофайле IWish Concept Video WMV. Однако, поскольку проект WinFS был закрыт, текущий статус этого проекта неизвестен.