WinFS
WinFS (сокращение от Windows Future Storage ) [1] было кодовым названием отмененного [2] Проект системы хранения и управления данными на основе реляционных баз данных , разработанный Microsoft и впервые продемонстрированный в 2003 году. Он задумывался как усовершенствованная подсистема хранения для Microsoft Windows операционной системы , предназначенная для сохранения и управления структурированными , полуструктурированными и неструктурированными данными .
WinFS включает в себя реляционную базу данных для хранения информации и позволяет хранить в ней информацию любого типа при условии, что существует четко определенная схема для этого типа . Отдельные элементы данных затем могут быть связаны друг с другом отношениями, которые либо выводятся системой на основе определенных атрибутов, либо явно указываются пользователем. Поскольку данные имеют четко определенную схему, любое приложение может повторно использовать данные; а используя связи, связанные данные можно эффективно организовывать и извлекать. Поскольку система знает структуру и назначение информации, ее можно использовать для создания сложных запросов, которые позволяют выполнять расширенный поиск по данным и агрегировать различные элементы данных, используя связи между ними.
Хотя WinFS и ее схема общего типа позволяют приложению распознавать различные типы данных, приложение все равно необходимо написать код для отображения различных типов данных. Следовательно, это не позволит разработать одно приложение, которое может просматривать или редактировать все типы данных; скорее, WinFS позволяет приложениям понимать структуру всех данных и извлекать информацию, которую они могут использовать в дальнейшем. Когда WinFS была представлена на конференции профессиональных разработчиков 2003 года , Microsoft также выпустила видеопрезентацию под названием IWish, [3] демонстрация макетов интерфейсов, показывающих, как приложения будут предоставлять интерфейсы, использующие преимущества единой системы типов. Концепции, показанные в видео, варьировались от приложений, использующих связи элементов для динамического предложения параметров фильтрации, до приложений, группирующих несколько связанных типов данных и отображающих их в едином представлении.
WinFS была объявлена одним из столпов волны технологий «Longhorn» и будет включена в состав следующей версии Windows. Впоследствии было решено, что WinFS будет выпущена после выпуска Windows Vista , но эти планы были отложены в июне 2006 года. [4] при этом некоторые из его компонентных технологий интегрированы в ADO.NET и Microsoft SQL Server . [5]
Мотивация
[ редактировать ]Многие файловые системы, встречающиеся в распространенных операционных системах , включая файловую систему NTFS , которая используется в современных версиях Microsoft Windows, хранят файлы и другие объекты только в виде потока байтов и содержат мало или вообще не содержат информации о данных, хранящихся в файлах. Такие файловые системы также предоставляют только один способ организации файлов, а именно через каталоги и имена файлов. [6] [7]
Поскольку файловая система ничего не знает о данных, которые она хранит, [6] приложения, как правило, используют свои собственные, часто форматы проприетарные файлов . Это затрудняет обмен данными между несколькими приложениями. Становится сложно создать приложение, обрабатывающее информацию из файлов нескольких типов, поскольку программистам приходится понимать структуру и семантику всех файлов. [8] Использование распространенных форматов файлов — обходной путь этой проблемы, но не универсальное решение; нет никакой гарантии, что все приложения будут использовать этот формат. Данные со стандартизированной схемой, такие как XML- документы и реляционные данные, работают лучше, поскольку они имеют стандартизированную структуру и требования к времени выполнения. [9]
Кроме того, традиционная файловая система может извлекать и искать данные только на основе имени файла, поскольку единственное, что она знает о данных, — это имена файлов, в которых они хранятся. [8] Лучшее решение — пометить файлы описывающими их атрибутами. Атрибуты — это метаданные о файлах, такие как тип файла (например , документ , изображение , музыка , создатель и т. д.). [6] Это позволяет осуществлять поиск файлов по их атрибутам способами, которые невозможны при использовании иерархии папок, например, поиск «изображений, на которых есть человек X» . Атрибуты могут распознаваться как по файловой системе, так и по некоторому расширению. [6] Настольные поисковые приложения развивают эту концепцию на шаг дальше. Они извлекают данные, включая атрибуты, из файлов и индексируют их. Для извлечения данных они используют фильтр для каждого формата файла. Это позволяет осуществлять поиск как по атрибутам файла, так и по содержащимся в нем данным. [6]
Однако это по-прежнему не помогает в управлении связанными данными, поскольку для разрозненных элементов не определены никакие связи. Например, невозможно выполнить поиск «номеров телефонов всех людей, которые живут в Акапулько и каждый из которых более 100 раз появлялся в моей коллекции фотографий и от которых я получил электронные письма в течение последнего месяца» . Такой поиск не может быть осуществлен, если он не основан на модели данных, в которой определены как семантика , так и отношения данных. [6] [7] WinFS стремится предоставить такую модель данных и инфраструктуру времени выполнения, которую можно использовать для хранения данных, а также связей между элементами данных в соответствии с моделью данных, делая это с удовлетворительным уровнем производительности.
Обзор
[ редактировать ]WinFS изначально распознает различные типы данных, такие как изображения , электронные письма , документы , аудио , видео , календарь , контакты , а не просто оставляет их в виде необработанных неанализированных байтовых потоков (как это делает большинство файловых систем). Данные, хранящиеся и управляемые системой, представляют собой экземпляры типа данных, распознаваемого средой выполнения WinFS. Данные структурируются с помощью свойств. Например, экземпляр типа резюме будет отображать данные, предоставляя такие свойства, как Имя , Образование , Опыт . Каждое свойство может быть простого типа ( строки , целые числа , даты ) или сложного типа ( контакты ). [8] [10] Различные типы данных предоставляют разные свойства. Кроме того, WinFS также позволяет связывать различные экземпляры данных; например, документ и контакт могут быть связаны отношением « Автор» . [7] [10] Отношения также раскрываются как свойства; например, если документ связан с контактом отношением «Создано» , тогда у документа будет свойство «Создано» . При обращении к нему связь просматривается и соответствующие данные возвращаются. [10] Следуя отношениям, можно получить доступ ко всем связанным данным. [7] WinFS способствует совместному использованию данных между приложениями, делая типы данных доступными для всех приложений вместе с их схемами. [8] Когда приложение хочет использовать тип WinFS, оно может использовать схему для поиска структуры данных и использовать эту информацию. Таким образом, приложение имеет доступ ко всем данным в системе, хотя разработчику не нужно было писать анализаторы для распознавания различных форматов данных. Он также может использовать связи и связанные данные для создания динамических фильтров для представления информации, с которой работает приложение. WinFS API дополнительно абстрагирует задачу доступа к данным. Все типы WinFS представляются как .NET объекты , свойства объекта напрямую сопоставляются со свойствами типа данных. [6] Кроме того, позволяя различным приложениям, работающим с одними и теми же данными, использовать один и тот же экземпляр данных WinFS, а не хранить одни и те же данные в разных файлах, устраняются проблемы с синхронизацией разных хранилищ при изменении данных. [11] Таким образом, WinFS может уменьшить избыточность. [6] [9]
Доступ ко всем данным в системе позволяет выполнять сложный поиск данных по всем элементам данных, управляемым WinFS. В приведенном выше примере ( «номера телефонов всех людей, которые живут в Акапулько и каждый из которых более 100 раз появлялся в моей коллекции фотографий и с которыми я переписывался по электронной почте в течение последнего месяца» ), WinFS может пересекать предметные отношения все фотографии, чтобы найти контактные элементы. Точно так же он может фильтровать все электронные письма за последний месяц и получать доступ к сообщениям, чтобы связаться с контактами. Затем общие контакты можно определить на основе двух наборов результатов и их номеров телефонов, полученных путем доступа к подходящему свойству элементов контактов.
Помимо полностью схематизированных данных (например, XML и реляционных данных), WinFS поддерживает полуструктурированные данные (например, изображения, которые имеют неструктурированный битовый поток плюс структурированные метаданные), а также неструктурированные данные (например, файлы). Он хранит неструктурированные компоненты в виде файлов, а структурированные метаданные сохраняются в структурированном хранилище. [10] Внутри WinFS используется реляционная база данных для управления данными . Он не ограничивает данные принадлежностью к какой-либо конкретной модели данных. Среда выполнения WinFS отображает схему в реляционную модальность, [6] путем определения таблиц, в которых будут храниться типы, а также первичные и внешние ключи , которые потребуются для представления отношений. WinFS по умолчанию включает сопоставления объектов и схем XML. Необходимо указать сопоставления для других схем. Схемы объектов указаны в XML; WinFS генерирует код для представления схем в виде .NET классов . ADO.NET можно использовать для прямого указания реляционной схемы, однако необходимо обеспечить сопоставление со схемой объекта, чтобы представить ее в виде классов. [10] Обход отношений выполняется как объединение этих таблиц. WinFS также автоматически создает индексы для этих таблиц, чтобы обеспечить быстрый доступ к информации. [10] Индексирование значительно ускоряет соединения, а обход связей для извлечения связанных данных выполняется очень быстро. Индексы также используются при поиске информации; поиск и запросы используют индексы для быстрого выполнения операций, подобно настольным поисковым системам.
Разработка
[ редактировать ] этой статьи Фактическая точность может быть поставлена под угрозу из-за устаревшей информации . ( февраль 2019 г. ) |
График структурированного хранения | ||||||||||||||||
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 — | WinFS [12] Семантический движок Microsoft |
| ||||||||||||||
Хронология различных проектов структурированного хранения данных Microsoft . Ни один из них еще не привел к созданию полнофункциональной среды выполнения и API для нее. Годы являются приблизительными. |
Разработка WinFS представляет собой расширение функции, первоначально запланированной в начале 1990-х годов. Названная объектной файловой системой , она должна была быть включена в состав Cairo . OFS должна была иметь мощные функции агрегирования данных, [12] но каирский проект был отложен, а вместе с ним и ОФС. Однако позже, во время разработки COM , была запланирована система хранения под названием Storage+, основанная на готовящемся к выпуску SQL Server 8.0, которая должна была предлагать аналогичные функции агрегирования. [12] Это также так и не было реализовано, и аналогичную технологию, реляционную файловую систему (RFS), планировалось запустить вместе с SQL Server 2000. [12] Однако SQL Server 2000 оказался незначительным обновлением SQL Server 7.0, и RFS не был реализован.
Эта концепция не была отменена и послужила основой для WinFS. [12] WinFS изначально планировалась для включения в Windows Vista , [14] и сборка 4051 Windows Vista, получившая тогда кодовое название «Longhorn», переданная разработчикам на конференции Microsoft Professional Developers Conference в 2003 году, включала WinFS, но имела серьезные проблемы с производительностью. [12] В августе 2004 года Microsoft объявила, что WinFS не будет поставляться с Windows Vista; вместо этого он будет доступен в виде загружаемого обновления после выпуска Vista. [12]
29 августа 2005 г. [12] Microsoft незаметно предоставила подписчикам MSDN бета-версию 1 WinFS. Он работал в Windows XP и требовал для запуска .NET Framework . API WinFS был включен в пространство имен System.Storage . [15] Бета-версия была обновлена 1 декабря 2005 г. для совместимости с версией .NET Framework 2.0. [16] Выпуск WinFS Beta 2 планировался позже, в 2006 году. [17] и должен был включать интеграцию с Windows Desktop Search , чтобы результаты поиска включали результаты как из обычных файлов, так и из хранилищ WinFS, а также разрешали доступ к данным WinFS с помощью ADO.NET . [18]
23 июня 2006 года команда WinFS в Microsoft объявила, что WinFS больше не будет поставляться как отдельный продукт. [4] [19] а некоторые компоненты будут включены в состав других технологий. Многие из основных функций, которые Microsoft намеревалась предоставить в WinFS, включали панель для редактирования свойств метаданных, навигацию по свойствам на основе навигационной цепочки , фильтрацию или наложение элементов по свойствам, инкрементальный поиск и сохраненный поиск ; [20] эти функции были включены в Windows Vista. [21] Состав запроса — функция WinFS, позволяющая пользователям выполнять дополнительные поиски, повторно использующие результаты предыдущего запроса. [22] позже был включен в Windows Vista. [23]
Примерами использования технологии являются компоненты объектно-реляционного отображения в ADO.NET Entity Framework ; поддержка неструктурированных данных, режим работы без администратора, поддержка объектов файловой системы через FILESTREAM
тип данных и иерархические данные в SQL Server 2008 под кодовым названием Katmai , а также интеграция с Win32 API и Windows Shell и поддержка обхода иерархий путем прохождения связей в более поздних выпусках Microsoft SQL Server ; [5] и компоненты синхронизации в Microsoft Sync Framework . [5]
В 2013 году Билл Гейтс назвал WinFS своим самым большим разочарованием в Microsoft и отметил, что идея WinFS опередила свое время, которое появится снова. [24]
Хранение данных
[ редактировать ]Архитектура
[ редактировать ]WinFS использует реляционный механизм, унаследованный от SQL Server 2005. [25] обеспечить механизм отношений данных. Хранилища WinFS — это просто файлы базы данных SQL Server (.MDF) с установленным атрибутом FILESTREAM. [26] Эти файлы хранятся в папке с ограниченным доступом под названием «Информация о системном томе» (расположенной в корне тома). [27] в папках под папкой "WinFS" с названиями GUID этих хранилищ. [26]
В нижней части стека WinFS находится WinFS Core , который взаимодействует с файловой системой и обеспечивает возможности доступа к файлам и адресации. [8] Реляционный механизм использует основные службы WinFS для представления структурированного хранилища и других служб, таких как блокировка , которые среда выполнения WinFS использует для реализации этой функциональности. Среда выполнения WinFS предоставляет такие службы , как синхронизация и правила , которые можно использовать для синхронизации хранилищ WinFS или выполнения определенных действий при возникновении определенных событий. [8]
WinFS работает как служба , запускающая три процесса : [28]
- WinFS.exe , в котором размещается реляционное хранилище данных.
- WinFSSearch.exe , в котором размещен механизм индексирования и запросов.
- WinFPM.exe (менеджер продвижения файлов WinFS) , который взаимодействует с базовой файловой системой.
Он обеспечивает программный доступ к своим функциям через набор .NET Framework API-интерфейсов . Они позволяют приложениям определять собственные типы данных, определять связи между данными, хранить и извлекать информацию, а также осуществлять расширенный поиск. [6] [8] Затем приложения могут агрегировать данные и представлять агрегированные данные пользователю.
Хранилище данных
[ редактировать ]WinFS хранит данные в реляционных хранилищах, которые представляют собой виртуальные местоположения, называемые хранилищами . [12] Хранилище WinFS — это общий репозиторий, в котором любое приложение может хранить данные вместе со своими метаданными, связями и схемой. Среда выполнения WinFS сама может применять определенные отношения; например, если значения свойства субъекта изображения и свойства имени контакта одинаковы, то WinFS может связать контакт с изображением. [29] Отношения также могут определяться другими приложениями или пользователем. [30]
WinFS обеспечивает унифицированное хранилище, но не позволяет определить формат, который будет храниться в хранилищах данных. Вместо этого он поддерживает запись данных в форматах, специфичных для приложения. Но приложения должны предоставлять схему , определяющую, как следует интерпретировать формат файла. [6] Например, можно добавить схему, позволяющую WinFS понять, как читать и, таким образом, иметь возможность искать и анализировать (скажем) PDF- файл. Используя схему, любое приложение может читать данные из любого другого приложения, и это также позволяет различным приложениям записывать в формате друг друга, используя общую схему. [30]
На одном компьютере можно создать несколько хранилищ WinFS. [30] Это позволяет хранить разные классы данных отдельно; например, официальные документы и личные документы могут храниться в разных хранилищах. WinFS по умолчанию предоставляет только одно хранилище с именем «DefaultStore». [12] Хранилища WinFS представляются как объекты оболочки, подобные виртуальным папкам , которые динамически генерируют список всех элементов, присутствующих в хранилище, и представляют их в виде папок. Объект оболочки также позволяет искать информацию в хранилище данных. [12]
Единица данных, которая должна храниться в хранилище WinFS, называется элементом WinFS . [6] [30] Элемент WinFS, наряду с основным элементом данных, также содержит информацию о том, как элемент данных связан с другими данными. Эта связь хранится в виде логических ссылок. Ссылки указывают, с какими другими элементами данных связан текущий элемент. Другими словами, ссылки определяют связь данных с другими элементами данных. Ссылки физически хранятся с использованием идентификатора ссылки, который определяет имя и цель связи, например тип или состоит из . [6] Идентификатор ссылки сохраняется как атрибут элемента данных. Все объекты, имеющие одинаковый идентификатор связи, считаются связанными. [6] Схема XML , определяющая структуру элементов данных, которые будут храниться в WinFS, должна быть заранее предоставлена среде выполнения WinFS. [6] В бета-версии 1 WinFS сборку схемы необходимо было добавить в GAC, прежде чем ее можно было использовать.
Модель данных
[ редактировать ]WinFS моделирует данные, используя элементы данных, а также их отношения , расширения и правила, регулирующие их использование. [8] WinFS необходимо понимать тип и структуру элементов данных, чтобы информация, хранящаяся в элементе данных, могла быть доступна любому приложению, которое ее запрашивает. Это делается с помощью схем. Для каждого типа элемента данных, который должен храниться в WinFS, необходимо предоставить соответствующую схему для определения типа, структуры и связей данных. Эти схемы определяются с использованием XML . [6]
Предопределенные схемы WinFS включают схемы для документов, электронной почты, встреч, задач, мультимедиа, аудио, видео, а также системные схемы, включающие конфигурацию, программы и другие данные, связанные с системой. [8] Пользовательские схемы могут быть определены для каждого приложения в ситуациях, когда приложение хочет хранить свои данные в WinFS, но не разделять структуру этих данных с другими приложениями, или они могут быть доступны во всей системе. [8]
Типовая система
[ редактировать ]Самое важное различие между файловой системой и WinFS заключается в том, что WinFS знает тип каждого элемента данных, который она хранит. А тип определяет свойства элемента данных. .NET Framework Система типов WinFS тесно связана с концепцией классов и наследования . Новый тип можно создать путем расширения и вложения любых предопределенных типов. [6]
WinFS предоставляет четыре предопределенных базовых типа — Items , Relationships , ScalarTypes и NestedTypes . [6] Элемент — это фундаментальный объект данных, который может быть сохранен, а связь — это отношение или связь между двумя элементами данных. Поскольку все элементы WinFS должны иметь тип, тип хранимого элемента определяет его свойства. Свойства Item могут быть ScalarType, который определяет наименьшую единицу информации, которую может иметь свойство, или NestedType, который представляет собой коллекцию из нескольких ScalarTypes и/или NestedTypes. Все типы WinFS доступны как классы .NET CLR . [30]
Любой объект, представленный как блок данных, например контакт, изображение, видео, документ и т. д., может храниться в хранилище WinFS как специализация типа «Элемент». [30] По умолчанию WinFS предоставляет типы элементов для файлов, контактов, документов, изображений, аудио, видео, календаря и сообщений. Элемент файла может хранить любые общие данные, которые хранятся в файловых системах в виде файлов. Но если для файла не предоставлена расширенная схема, определяющая его как специализированный элемент, WinFS не сможет получить доступ к его данным. Такой файловый элемент может поддерживать только связь с другими объектами. [6]
Разработчик может расширить любой из этих типов или базовый тип Item, чтобы предоставить тип для своих пользовательских данных. Данные, содержащиеся в элементе, определяются с точки зрения свойств или полей, которые содержат фактические данные. Например, контакт элемента может иметь поле Name , которое является ScalarType, и одно поле Address , NestedType, которое дополнительно состоит из двух ScalarTypes. Для определения этого типа базовый класс Item расширяется и в класс добавляются необходимые поля. [6] Поле NestedType можно определить как другой класс, содержащий два поля ScalarType. После определения типа необходимо определить схему, которая обозначает примитивный тип каждого поля, например, поле «Имя» представляет собой строку, поле «Адрес» представляет собой определяемый пользователем класс адреса, оба поля которого являются строками. Другими примитивными типами, которые поддерживает WinFS, являются Integer , Byte , Decimal , Float , Double , Boolean и DateTime и другие. [6] Схема также будет определять, какие поля являются обязательными, а какие необязательными. [31] Определенный таким образом элемент контакта будет использоваться для хранения информации о контакте путем заполнения поля свойств и его сохранения. При первоначальном сохранении необходимо заполнить только те поля, которые отмечены как обязательные. [30] Другие поля могут быть заполнены пользователем позже или не заполнены вообще. дополнительные поля свойств, такие как дата последнего разговора Если необходимо добавить , этот тип можно расширить, чтобы вместить их. Типы элементов для других данных могут быть определены аналогичным образом.
WinFS создает таблицы для всех определенных элементов. [31] Все поля, определенные для элемента, образуют столбцы таблицы, а все экземпляры элемента сохраняются в виде строк в таблице для соответствующих элементов. Всякий раз, когда какое-либо поле в таблице ссылается на данные в другой таблице, это считается связью. Схема связи определяет, какие таблицы задействованы, а также тип и имя связи. Среда выполнения WinFS управляет схемами отношений. [30] Все элементы представляются как объекты .NET CLR с единым интерфейсом, обеспечивающим доступ к данным, хранящимся в полях. Таким образом, любое приложение может получить объект любого типа Item и использовать данные в объекте, не зная о физической структуре, в которой хранились данные. [6]
Типы WinFS представлены как классы .NET, экземпляры которых можно создавать как объекты .NET. Данные хранятся в экземплярах этих типов путем установки их свойств. После этого они сохраняются в хранилище WinFS. Доступ к хранилищу WinFS осуществляется с помощью класса ItemContext ( Получение данных подробности см. в разделе « »). ItemContext обеспечивает транзакционный доступ к хранилищу WinFS; т.е. все операции с момента привязки объекта ItemContext к хранилищу до его закрытия либо завершаются успешно, либо все откатываются. При внесении изменений в данные они не записываются на диск; скорее они записываются в журнал в памяти. Только при закрытии соединения изменения записываются на диск пакетно. Это помогает оптимизировать дисковый ввод-вывод. [10] Следующий фрагмент кода, написанный на C# , создает контакт и сохраняет его в хранилище WinFS.
//Connect to the default WinFS store
using(ItemContext ic = ItemContext.Open())
{
//Create the contact and set the data in appropriate properties
ContactEAddress contact = new ContactEAddress() {
Name = new PersonName() { // Name is a ComplexType
Displayname = "Doe, John",
FirstName = "John",
LastName = "Doe"
},
TelephoneNumber = new TelephoneNumber() { // Telephone number is a ComplexType
Country = CountryCode.Antarctica,
Areacode = 4567,
Number = 9876543210
},
Age = 111 // Age is a SimpleType
};
//Add the object to the user's personal folder.
//This relates the item with the Folder pseudo-type, for backward
//compatibility, as this lets the item to be accessed in a folder
//hierarchy for apps which are not WinFS native.
Folder containingFolder = UserDataFolder.FindMyPersonalFolder();
containingFolder.OutFolderMemberRelationship.AddItem(ic, contact);
//Find a document and relate with the document. Searching begins by creating an
//ItemSearcher object. Each WinFS type object contains a GetSearcher() method
//that generates an ItemSearcher object which searches documents of that type.
using (ItemSearcher searcher = Document.GetSearcher(ic))
{
Document d = searcher.Find(@"Title = 'Some Particular Document'");
d.OutAuthoringRelationship.AddItem(ic, contact);
}
//Since only one document is to be found, the ItemContext.FindOne() method
//could be used as well.
//Find a picture and relate with it
using (ItemSearcher searcher = Picture.GetSearcher(ic))
{
Picture p = searcher.Find(@"Occasion = 'Graduation' and Sequence = '3'");
p.OutSubjectRelationship.AddItem(ic, contact);
}
//Persist to the store and close the reference to the store
ic.Update();
}
Отношения
[ редактировать ]Данные могут быть связаны с еще одним элементом, создавая связь «один-к-одному», или с более чем одним элементом, что приводит к связи «один-ко-многим». [6] Связанные элементы, в свою очередь, могут быть связаны и с другими элементами данных, в результате чего образуется сеть отношений, называемая связью «многие ко многим». Создание связи между двумя объектами создает еще одно поле в данных соответствующих объектов, которое ссылается на строку в таблице другого объекта, где хранится связанный объект. [30]
В WinFS Отношение является экземпляром базового типа Отношения, который расширен для обозначения специализации отношения. Отношения — это сопоставление между двумя элементами: источником и целью. Источник имеет исходящую связь, тогда как цель получает входящую связь. [31] WinFS предоставляет три типа примитивных отношений — Holding Relations , Reference Relations и Embedding Relationship . [6] Любые пользовательские отношения между двумя типами данных являются экземплярами этих типов отношений.
- Отношения хранения определяют право собственности и срок действия (который определяет, как долго действуют отношения) целевого элемента. Например, связь между папкой и файлом, а также между сотрудником и записью о его зарплате является связью хранения — последняя должна быть удалена при удалении первой. Целевой элемент может быть частью более чем одного холдингового отношения. В таком случае его следует удалить при удалении всех исходных элементов.
- Ссылочные отношения обеспечивают связь между двумя элементами, но не связаны с каким-либо сроком действия, т. е. каждый элемент будет продолжать храниться даже без другого.
- Внедренные отношения задают порядок двум элементам, которые связаны отношением, например отношением между родительским элементом и дочерним элементом.
Отношения между двумя элементами могут быть установлены либо программно приложением, создающим данные, либо пользователь может использовать браузер элементов WinFS, чтобы вручную связать элементы. [31] Браузер элементов WinFS также может графически отображать элементы и то, как они связаны, чтобы пользователь мог знать, как организованы их данные. [30]
Правила
[ редактировать ]WinFS включает в себя Правила , [22] которые выполняются при выполнении определенного условия. Правила WinFS работают с данными и связями данных. Например, можно создать правило, которое гласит, что всякий раз, когда создается элемент, содержащий поле «Имя» , и если значением этого поля является какое-то конкретное имя, должна быть создана связь, которая связывает этот элемент с каким-либо другим элементом. Правила WinFS также могут получить доступ к любому внешнему приложению. Например, можно создать правило, которое запускает приложение Notify при получении письма от определенного контакта. [22] Правила WinFS также можно использовать для добавления новых полей свойств к существующим элементам данных. [22]
Правила WinFS также предоставляются как объекты .NET CLR. Таким образом, любое правило можно использовать для любых целей. Правило можно даже расширить, унаследовав от него, чтобы сформировать новое правило, состоящее из условия и действия родительского правила, а также чего-то еще. [22]
РАВ
[ редактировать ]WinFS поддерживает создание расширенных представлений приложений (RAV) путем агрегирования различных данных в формате виртуальной таблицы. В отличие от представления базы данных , где каждый отдельный элемент может быть только скалярным значением, RAV могут иметь сложные элементы или даже коллекции элементов. Фактические данные могут относиться к нескольким типам данных или экземплярам и даже могут быть получены путем перемещения по связям. [10] RAV по своей сути разбивается на страницы (разделяя весь набор данных на более мелкие страницы, содержащие несвязанные подмножества данных) средой выполнения WinFS. Размер страницы определяется во время создания представления, а API WinFS предоставляет методы для перебора страниц. RAV также поддерживает модификацию представления в соответствии с различными параметрами группировки. Представления также могут быть запрошены.
Контроль доступа
[ редактировать ]Несмотря на то, что все данные являются общими, все они не одинаково доступны. WinFS использует систему аутентификации Windows для обеспечения двух механизмов защиты данных. [30] Во-первых, существует безопасность на уровне общего ресурса, которая контролирует доступ к вашему общему ресурсу WinFS. Во-вторых, существует безопасность на уровне элементов, которая поддерживает дескрипторы безопасности, совместимые с NT. Процесс, обращающийся к элементу, должен иметь достаточно привилегий для доступа к нему. Также в Vista существует понятие «уровня целостности» приложения. К данным с более высокой целостностью не может получить доступ процесс с более низкой целостностью.
Получение данных
[ редактировать ]Основной режим получения данных из хранилища WinFS — это запрос к хранилищу WinFS по некоторым критериям. [8] который возвращает перечислимый набор элементов, соответствующих критериям. Критерии запроса задаются с использованием OPath языка запросов . Возвращенные данные доступны как экземпляры схем типов, соответствующие .NET объектной модели . [32] Доступ к данным в них можно получить, обратившись к свойствам отдельных объектов. [31]
Отношения также раскрываются как свойства. Каждый элемент WinFS имеет два свойства с именами IncomingRelationships и OutgoingRelationships , которые обеспечивают доступ к набору экземпляров отношений, в которых участвует элемент. К другому элементу, который участвует в одном экземпляре отношений, можно получить доступ через соответствующий экземпляр отношений. [10] [31]
Тот факт, что к данным можно получить доступ, используя их описание, а не местоположение, можно использовать для предоставления организационных возможностей конечному пользователю, не ограничиваясь иерархической организацией, используемой в файловых системах. В файловой системе каждый файл или папка содержится только в одной папке. Но элементы WinFS могут участвовать в любом количестве отношений хранения, в том числе с любыми другими элементами. Таким образом, конечные пользователи не ограничены только организацией файлов и папок. Скорее, контакт может стать контейнером для документов; картинка контейнер для контактов и так далее. Для совместимости с устаревшими версиями WinFS включает псевдотип под названием « Папка», который присутствует только для участия во удержании связей и эмуляции организации файлов/папок. Поскольку любой элемент WinFS может быть связан с более чем одним элементом папки, с точки зрения конечного пользователя элемент может находиться в нескольких папках без дублирования фактических данных. [10] взаимосвязей Приложения также могут анализировать графики для представления различных фильтров. Например, приложение электронной почты может анализировать связанные контакты и связь контактов со счетами в ресторане и динамически генерировать фильтры, такие как «Электронные письма, отправленные людям, с которыми я обедал» .
Поиски
[ редактировать ]API WinFS предоставляет класс ItemContext , который привязан к хранилищу WinFS. Объект ItemContext можно использовать для ограничения поиска по всему магазину или его подмножеству. Он также обеспечивает транзакционный доступ к хранилищу. [15] Объект этого класса может затем породить объект ItemSearcher , который затем принимает тип (объект, представляющий тип) извлекаемого элемента или связь, а также OPath строку запроса , представляющую критерии поиска. [31] [33] Возвращается набор всех совпадений, которые затем можно привязать к виджету пользовательского интерфейса для массового отображения или перечисления по отдельности. [30] Элементы свойств также можно изменить, а затем сохранить обратно в хранилище данных для обновления данных. Объект ItemContext закрывается (что отмечает конец связи объекта с хранилищем) при выполнении запросов или внесении изменений в хранилище.
Доступ к связанным элементам также можно получить через элементы. Свойства IncomingRelationships OutgoingRelationships и предоставляют доступ ко всему набору экземпляров отношений , введенных в имя отношения. Эти объекты отношений предоставляют другой элемент через свойство. Так, например, если изображение связано с изображением, доступ к нему можно получить, пройдя через связь следующим образом:
ContactsCollection contacts = picture.OutgoingRelationships.Cast(typeof(Contact)).Value;
// This retrieves the collection of all outgoing relationships from a picture object
// and filters down the contacts reachable from them and retrieves its value.
// Or the relationship can be statically specified as
ContactsCollection contacts = picture.OutgoingRelationships.OutContactRelationship.Contact;
Строка запроса OPath позволяет выразить параметры, которые будут запрошены для указания, с помощью свойств элемента , встроенных элементов , а также отношений . [ нужна ссылка ] Он может указывать одно условие поиска, например "title = Something'" , или составное условие, например "title = 'Title 1' || title = 'Title 2' &&author = 'Someone'" . Эти логические и реляционные операции можно указать с помощью C#, например && , || , = , != операторы, а также их английские эквиваленты, такие как EQUAL , NOT EQUAL . SQL- подобные операторы, такие как LIKE , GROUP BY и ORDER BY, также поддерживаются, как и подстановочные знаки. [ нужна ссылка ] Таким образом, «title LIKE 'any*'» является допустимой строкой запроса. Эти операторы можно использовать для выполнения сложных поисков, таких как
using (ItemContext ic = ItemContext.Open())
{
// Searching begins by creating a ItemSearcher object. The searcher is created from a
// relationship instance because the contacts being searched for are in relation. The
// first parameter defines the scope of the search. An ItemContext as the scope means
// the entire store is to be searched. Scope can be limited to a set of Items which may
// be in a holding relationship with the contacts. In that case, the set is passed as
// the scope of the search.
ItemSearcher searcher = OutContactRelationship.GetTargetSearcher(ic, typeof(Contact));
ContactCollection contacts = searcher.FindAll("OutContactRelationship.Contact.Name LIKE 'A*'");
}
Приведенный выше фрагмент кода создает объект ItemSearcher, который выполняет поиск в экземпляре OutContactRelationship , который связывает изображения и контакты, фактически выполняя поиск по всем изображениям, связанным с контактом. Затем он запускает запрос Name LIKE 'A*'" для всех контактов, доступных через OutContactRelationship , возвращая список "контактов, имена которых начинаются с A и чьи фотографии у меня есть" . Аналогично, для дальнейшего сужения можно принять во внимание больше связей. результаты. [10] [31] Кроме того, процессор запросов на естественном языке, который анализирует запрос на естественном языке и создает правильно сформированную строку запроса OPath для поиска через правильные отношения, может позволить пользователям выполнять поиск, например «найти название вина, которое я пил с человеком X в последний раз». месяц" при условии, что приложения финансового управления используют WinFS для хранения счетов.
Разные отношения определяют разный набор данных. Поэтому, когда выполняется поиск, охватывающий несколько отношений, разные наборы данных извлекаются индивидуально и объединение вычисляется разных наборов. Результирующий набор содержит только те элементы данных, которые соответствуют всем отношениям. [31]
Уведомления
[ редактировать ]WinFS включает улучшенную поддержку обработки часто меняющихся данных. WinFS Используя уведомления , приложения выбирают получение уведомлений об изменениях в выбранных элементах данных . WinFS вызовет ItemChangedEvent с использованием модели событий .NET при изменении элемента, на который подписана, и событие будет опубликовано в приложениях. [31]
Информационный агент
[ редактировать ]WinFS включает функцию информационного агента для управления, извлечения и хранения правил уведомления конечного пользователя и предпочтений для изменений элементов в хранилище данных. Используя информационный агент, можно автоматически определять связи с новыми элементами на основе таких событий, как встречи, например, встречи могут быть связаны с фотографиями на основе дат, когда фотографии были сделаны, что позволяет запрашивать дни рождения или праздники без необходимости знать реальные даты таких событий (« найти все фотографии, сделанные в этот день рождения »). Другие примеры включают автоматическое перемещение новых элементов в определенные папки на основе правила, определенного временем встречи и датами съемки фотографий (« когда я импортирую фотографию, сделанную во время делового мероприятия, переместите ее в папку «Деловые мероприятия ») или более сложными примерами. возможности. Информационный агент также может пересылать уведомления на другие устройства (« если я получаю электронное письмо с высоким приоритетом от моего начальника, отправьте уведомление на мой телефон ») и аналогичен функциям «Правила и оповещения» Microsoft Outlook.
Обмен данными
[ редактировать ]WinFS позволяет легко обмениваться данными между приложениями и между несколькими хранилищами WinFS, которые могут находиться на разных компьютерах, путем копирования на них и с них. [34] Элемент WinFS также можно скопировать в файловую систему, отличную от WinFS, но если этот элемент данных не будет возвращен в хранилище WinFS, он не будет поддерживать расширенные службы, предоставляемые WinFS.
API WinFS также обеспечивает некоторую поддержку совместного использования с приложениями, отличными от WinFS. WinFS предоставляет объект оболочки для доступа к хранилищам WinFS. Этот объект сопоставляет элементы WinFS с иерархией виртуальных папок, и к нему может получить доступ любое приложение. [12] Виртуальные папки могут автоматически делиться с пользователями новым содержимым, на которое ссылается запрос (виртуальная папка для « всех фотографий из отпуска » может автоматически делиться с пользователями новыми элементами, возвращенными по этому запросу). Данные WinFS также могут быть доступны вручную с использованием сетевых ресурсов , путем совместного использования устаревшего объекта оболочки. [34] Форматы файлов, отличные от WinFS, можно хранить в хранилищах WinFS, используя элемент файла, предоставляемый WinFS. Можно написать импортеры для преобразования определенных форматов файлов в типы элементов WinFS. [34]
Кроме того, WinFS предоставляет услуги для автоматической синхронизации элементов в двух или более хранилищах WinFS при соблюдении некоторых предопределенных условий, таких как « делиться только фотографиями » или « делиться фотографиями, которые имеют связанный контакт X ». [34] Магазины могут находиться на разных компьютерах. Синхронизация осуществляется одноранговым способом ; нет центральной власти. Синхронизация может быть ручной, автоматической или запланированной. Во время синхронизации WinFS находит новые и измененные элементы и соответствующим образом обновляет их. Если два или более изменений конфликтуют, WinFS может либо прибегнуть к автоматическому разрешению на основе предопределенных правил, либо отложить синхронизацию для разрешения вручную. WinFS также обновляет схемы, если это необходимо. [34]
Поддержка приложений
[ редактировать ]Пространство имен оболочки
[ редактировать ]WinFS Beta 1 включает расширение пространства имен оболочки , которое отображает хранилища WinFS как объекты верхнего уровня в представлении «Мой компьютер» . [12] Файлы можно копировать в магазины и из них, а также напрямую использовать приложения для сохранения там. Даже такие папки, как «Мои документы», можно перенаправить в магазины. [12] WinFS использует подключаемые модули Importer для анализа файлов по мере их импорта в хранилище и создания правильных схем и объектов WinFS, а при извлечении объектов повторно упаковывает их в файлы. [34] Если средства импорта для определенных файлов не установлены, они сохраняются как общие файлов типы .
Майкрософт Рейв
[ редактировать ]Microsoft Rave — это приложение, поставляемое с WinFS Beta 1. Оно позволяет синхронизировать два или более хранилищ WinFS и поддерживает синхронизацию в полносвязном режиме, а также топологию центрального концентратора . Во время синхронизации Microsoft Rave определит изменения, внесенные в каждый магазин с момента последней синхронизации, и обновит их соответствующим образом. При применении изменений он также определяет, существует ли какой-либо конфликт, т. е. были ли одни и те же данные изменены в обоих хранилищах с момента последней синхронизации. Он либо зарегистрирует конфликтующие данные для последующего разрешения, либо разрешит их немедленно. Microsoft Rave использует одноранговую технологию для связи и передачи данных.
МагазинШпион
[ редактировать ]В WinFS Beta 1 Microsoft включила неподдерживаемое приложение StoreSpy . [35] что позволяло просматривать хранилища WinFS, предоставляя иерархическое представление элементов WinFS. Оно автоматически создавало виртуальные папки на основе прав доступа, даты и других метаданных и представляло их в виде иерархического древовидного представления, аналогично тому, как представлены традиционные папки. Приложение создавало вкладки для разных типов элементов. StoreSpy позволил просматривать элементы , связи , мультинаборы , вложенные элементы , расширения. [36] и другие типы в магазине вместе с полными метаданными. Он также представил интерфейс поиска для выполнения ручного поиска и сохранения его в виде виртуальных папок. В приложении также представлено графическое представление правил WinFS. Однако он не позволял редактировать элементы или их свойства, хотя его планировалось включить в будущую версию. [37] Но проект WinFS был свернут еще до того, как он смог материализоваться.
Тип Браузер
[ редактировать ]WinFS также включает в себя другое приложение под названием WinFS Type Browser , которое можно использовать для просмотра типов WinFS, а также для визуализации иерархических отношений между типами WinFS. [38] Тип WinFS, как встроенный, так и настраиваемый, можно визуализировать вместе со всеми свойствами и методами, которые он поддерживает. Он также показывает типы, от которых он является производным, а также другие типы, расширяющие схему типов. Однако, хотя он был включен в состав WinFS, он был выпущен как неподдерживаемый инструмент. [38]
OPather
[ редактировать ]WinFS Beta 1 также включает неподдерживаемое приложение под названием OPather . [39] Он представляет собой графический интерфейс для написания запросов Opath . Его можно использовать, выбрав тип целевого объекта и указав параметры запроса. Он также включает Intellisense функцию завершения параметров, подобную . Затем его можно использовать для выполнения задач визуализации, таких как привязка результатов запроса к элементу управления DataGrid , создание представлений данных в самой WinFS или просто извлечение строки запроса.
Проект «Апельсин»
[ редактировать ]Microsoft запустила проект по созданию приложения визуализации данных для WinFS. Он имел кодовое название «Project Orange» и предположительно был создан с использованием Windows Presentation Foundation . [40] Предполагалось, что он обеспечит исследование элементов , хранящихся в хранилищах WinFS, а отношения данных должны были стать важной частью модели навигации. Предполагалось, что это позволит людям организовать хранилища WinFS также графически, воплощая в жизнь многие концепции, показанные в WMV-файле IWish Concept Video . Однако, поскольку проект WinFS закрылся, статус этого проекта неизвестен.
См. также
[ редактировать ]- Настольный органайзер
- GNOME Storage — система управления хранилищем для рабочего стола GNOME.
- НЕ ПОМОГАТЬ
- РеФС
- Реляционная система управления базами данных (СУБД)
Ссылки
[ редактировать ]- ^ «Утечка Windows намекает на грядущие изменения» . ЗДНет . CBS Интерактив . 30 сентября 2007 г. Архивировано из оригинала 30 сентября 2007 г.
- ^ Шофилд, Джек (29 июня 2006 г.). «Почему WinFS должна была исчезнуть» . Хранитель . Новости Guardian и СМИ . Проверено 9 декабря 2010 г.
- ^ «Концептуальное видео IWish» . Майкрософт. Архивировано из оригинала 2 июня 2006 г. Проверено 14 июля 2008 г.
- ^ Jump up to: а б Квентин Кларк (23 июня 2006 г.). «Обновление WinFS» . Что в магазине . Блоги MSDN . Проверено 23 июня 2006 г.
- ^ Jump up to: а б с Квентин Кларк. «Где сейчас WinFS?» . Архивировано из оригинала 17 мая 2008 г. Проверено 17 мая 2008 г.
- ^ Jump up to: а б с д и ж г час я дж к л м н тот п д р с т в v В х Шон Уилдермут (30 июня 2006 г.). «Взгляд разработчика на WinFS: Часть 1» . MSDN . Проверено 30 июня 2007 г.
- ^ Jump up to: а б с д Виджай Бангару. «Объединяйте, организуйте, исследуйте и внедряйте инновации. О боже! (Часть 2)» . Блог команды WinFS. Архивировано из оригинала 9 июня 2007 г. Проверено 30 июня 2007 г.
- ^ Jump up to: а б с д и ж г час я дж к Шон Гримальди (13 сентября 2006 г.). «Файлы WinFS: разделяй и властвуй» . MSDN . Проверено 30 июня 2007 г.
- ^ Jump up to: а б Томас Риццо (13 сентября 2006 г.). «WinFS 101: Знакомство с новой файловой системой Windows» . MSDN . Проверено 30 июня 2007 г.
- ^ Jump up to: а б с д и ж г час я дж к «WinFS на выставке .NET» . Майкрософт . Архивировано из оригинала 5 января 2009 г. Проверено 4 июля 2007 г.
- ^ Виджай Бангару. «Объединяйте, организуйте, исследуйте и внедряйте инновации. О боже! (Часть 1)» . Блог команды WinFS. Архивировано из оригинала 8 июля 2007 г. Проверено 30 июня 2007 г.
- ^ Jump up to: а б с д и ж г час я дж к л м н тот п д Пол Терротт. «Предварительная версия Windows Storage Foundation (WinFS)» . Архивировано из оригинала 2 июля 2007 г. Проверено 30 июня 2007 г.
- ^ Jump up to: а б «Мое свидание с Destiny, эээ… Интегрированное хранилище» . Архивировано из оригинала 31 октября 2007 г. Проверено 30 июня 2007 г.
- ^ Кэт Эверетт. «Стоит ли Лонгхорн затраченных усилий?» . ЗДНет. Архивировано из оригинала 12 марта 2010 г. Проверено 30 июня 2007 г.
- ^ Jump up to: а б «WinFS для разработчиков» . NTFS.com . Проверено 4 июля 2007 г.
- ^ Виджай Бангару. «Обновление WinFS Beta 1 уже доступно» . Блог команды WinFS. Архивировано из оригинала 20 мая 2007 г. Проверено 30 июня 2007 г.
- ^ Шан Синха. «Представляем следующий выпуск WinFS на выставке Tech Ed 2006 в Бостоне! Присоединяйтесь к нам!» . Блог команды WinFS. Архивировано из оригинала 8 марта 2007 г. Проверено 30 июня 2007 г.
- ^ Санджай Ананд. «Мое свидание с Destiny, эээ… Интегрированное хранилище» . Блог команды WinFS. Архивировано из оригинала 31 октября 2007 г. Проверено 30 июня 2007 г.
- ^ Квентин Кларк. «Обновление к Обновлению» . Блог команды WinFS. Архивировано из оригинала 3 июля 2007 г. Проверено 30 июня 2007 г.
- ^ «WinFS: файловая система Windows (технические статьи Microsoft Access 2002)» . MSDN . Майкрософт . Октябрь 2003 г. Архивировано из оригинала 21 декабря 2003 г. Проверено 1 февраля 2018 г.
- ^ «Руководство по Windows Vista» . Майкрософт . 2006. стр. 44–51. Архивировано из оригинала (DOCX) 1 июля 2011 года . Проверено 1 марта 2018 г.
- ^ Jump up to: а б с д и Кати Димитрова. «О правилах WinFS» . MSDN . Майкрософт . Архивировано из оригинала 26 декабря 2008 г. Проверено 2 марта 2018 г.
- ^ Бенц, Бен (31 октября 2006 г.). «Состав запроса: построение поиска на основе другого поиска» . Shell: раскрытый блог . Майкрософт . Архивировано из оригинала 15 декабря 2006 года . Проверено 2 марта 2018 г.
- ^ «Барон-миллиардер Билл Гейтс все еще оплакивает мертворожденную WinFS Vista».
- ^ Нейт Мук (29 августа 2005 г.). «MS объясняет WinFS, выпускает бета-версию 1» . БетаНьюс . Проверено 2 июля 2007 г.
- ^ Jump up to: а б Шишир Мехротра (сентябрь 2005 г.). Будущие направления WinFS: обзор . Конференция профессиональных разработчиков 2005 . Майкрософт. Архивировано из оригинала (PPT) 12 декабря 2005 года . Проверено 22 мая 2023 г. - через MicrosoftPDC Commnet. .
- ^ Чалупов, Алексей (14 марта 2006 г.). «Архитектура WinFS» . У Ольги, Дамбит (ред.). WinFS (PPT) (презентация). п. 4. Архивировано (PPT) из оригинала 9 декабря 2021 г. Проверено 22 мая 2023 г.
- ^ Эрвин ван дер Меер. «Первый взгляд на WinFS Beta 1» . Архивировано из оригинала 9 июня 2007 г. Проверено 3 июля 2007 г.
- ^ Виджай Бангару. «Почтовый ящик WinFS» . Блог команды WinFS. Архивировано из оригинала 22 мая 2007 г. Проверено 30 июня 2007 г.
- ^ Jump up to: а б с д и ж г час я дж к л Ричард Граймс. «Революционная система хранения файлов позволяет пользователям искать файлы и управлять ими на основе их содержимого» . Журнал MSDN. Архивировано из оригинала 27 июня 2007 г. Проверено 30 июня 2007 г.
- ^ Jump up to: а б с д и ж г час я дж Шон Уилдермут (июль 2004 г.). «Взгляд разработчика на WinFS: Часть 2» . MSDN . Майкрософт . Проверено 30 июня 2007 г.
- ^ Виджай Бангару. «Объединяйте, организуйте, исследуйте и внедряйте инновации. О боже! (Часть 4)» . Блог команды WinFS. Архивировано из оригинала 18 июня 2007 г. Проверено 30 июня 2007 г.
- ^ Томас Риццо, Шон Гримальди (18 октября 2004 г.). «Введение в «WinFS» OPath» . MSDN . Майкрософт . Проверено 30 июня 2007 г.
- ^ Jump up to: а б с д и ж Нил Пэджетт. «Получение данных в WinFS с помощью синхронизации WinFS» . Блог команды WinFS. Архивировано из оригинала 17 февраля 2007 г. Проверено 30 июня 2007 г.
- ^ Вэй-Мэн Ли (7 сентября 2005 г.). «WinFS-StoreSpy» . Проверено 30 июня 2007 г.
- ^ «Вебблог Стефано Демилиани: WinFS StoreSpy v0.8 для сборки WinHEC 2004 Longhorn» . Проверено 12 марта 2007 г.
- ^ «StoreSpy должен стать StoreEditor» . Архивировано из оригинала 29 сентября 2007 г. Проверено 30 июня 2007 г.
- ^ Jump up to: а б Санджай Нагамангалам. «Визуализация типов WinFS» . Блог команды WinFS. Архивировано из оригинала 16 августа 2007 г. Проверено 3 июля 2007 г.
- ^ Луис Миранда. «Использование OPather для написания запросов» . Блог команды WinFS. Архивировано из оригинала 19 ноября 2007 г. Проверено 30 июня 2007 г.
- ^ Шишир Мехротра. «Убойное приложение для организации пользователей» . Блог команды WinFS. Архивировано из оригинала 9 марта 2007 г. Проверено 30 июня 2007 г.
Внешние ссылки
[ редактировать ]- Блог WinFS
- WinFS в сети разработчиков Microsoft ( кеш Интернет-архива )
- Видео канала 9
- Группа новостей WinFS
- Предварительный просмотр бета-версии WinFS 1
- Область WinFS на NetFXGuide.com ( Интернет-архива ) кеш