Articulo de referencia

WinFS

WinFS (abreviatura de Windows Future Storage ) [ 1 ] fue el nombre en clave de un proyecto cancelado [ 2 ] de sistema de almacenamiento y gestión de datos basado en bases de dat...

WinFS (abreviatura de Windows Future Storage ) [ 1 ] fue el nombre en clave de un proyecto cancelado [ 2 ] de sistema de almacenamiento y gestión de datos basado en bases de datos relacionales , desarrollado por Microsoft y presentado por primera vez en 2003. Estaba concebido como un subsistema de almacenamiento avanzado para el sistema operativo Microsoft Windows , diseñado para la persistencia y gestión de datos estructurados , semiestructurados y no estructurados .

WinFS incluye una base de datos relacional para el almacenamiento de información, permitiendo guardar cualquier tipo de información siempre que exista un esquema bien definido para dicho tipo. Los elementos de datos individuales pueden vincularse mediante relaciones que el sistema infiere a partir de ciertos atributos o que el usuario define explícitamente. Gracias a este esquema bien definido, cualquier aplicación puede reutilizar los datos; y mediante estas relaciones, los datos relacionados pueden organizarse y recuperarse eficazmente. Dado que el sistema conoce la estructura y la finalidad de la información, puede realizar consultas complejas que permiten búsquedas avanzadas y agregar datos relacionados aprovechando las relaciones entre ellos.

Si bien WinFS y su esquema de tipos compartidos permiten que una aplicación reconozca los diferentes tipos de datos, aún debe codificarse para representarlos. Por consiguiente, no permite el desarrollo de una única aplicación capaz de visualizar o editar todos los tipos de datos; más bien, WinFS permite que las aplicaciones comprendan la estructura de todos los datos y extraigan la información que pueden utilizar posteriormente. Cuando WinFS se presentó en la Conferencia de Desarrolladores Profesionales de 2003 , Microsoft también publicó una presentación en vídeo, denominada IWish, [ 3 ] que mostraba interfaces de prueba que ilustraban cómo las aplicaciones expondrían interfaces que aprovecharan un sistema de tipos unificado. Los conceptos mostrados en el vídeo abarcaban desde aplicaciones que utilizaban las relaciones entre elementos para ofrecer opciones de filtrado dinámicas hasta aplicaciones que agrupaban múltiples tipos de datos relacionados y los representaban en una presentación unificada.

WinFS se presentó como uno de los pilares de la ola de tecnologías "Longhorn" y se lanzaría como parte de la siguiente versión de Windows. Posteriormente se decidió que WinFS se lanzaría después del lanzamiento de Windows Vista , pero esos planes se archivaron en junio de 2006, [ 4 ] y algunas de sus tecnologías componentes se integraron en ADO.NET y Microsoft SQL Server . [ 5 ]

Motivación

Muchos sistemas de archivos presentes en los sistemas operativos comunes , incluido el sistema de archivos NTFS utilizado en las versiones modernas de Microsoft Windows, almacenan archivos y otros objetos únicamente como una secuencia de bytes , y contienen poca o ninguna información sobre los datos almacenados en ellos. Además, estos sistemas de archivos solo ofrecen una forma de organizar los archivos: mediante directorios y nombres de archivo. [ 6 ] [ 7 ]

Debido a que un sistema de archivos no tiene conocimiento de los datos que almacena, [ 6 ] las aplicaciones tienden a usar sus propios formatos de archivo , a menudo propietarios . Esto dificulta el intercambio de datos entre múltiples aplicaciones. Resulta difícil crear una aplicación que procese información de múltiples tipos de archivo, porque los programadores deben comprender la estructura y la semántica de todos los archivos. [ 8 ] El uso de formatos de archivo comunes es una solución alternativa a este problema, pero no una solución universal; no hay garantía de que todas las aplicaciones utilicen el formato. Los datos con esquema estandarizado, como los documentos XML y los datos relacionales, funcionan mejor, ya que tienen una estructura y requisitos de tiempo de ejecución estandarizados. [ 9 ]

Además, un sistema de archivos tradicional puede recuperar y buscar datos basándose únicamente en el nombre del archivo, ya que el único conocimiento que tiene sobre los datos es el nombre de los archivos que los almacenan. [ 8 ] Una mejor solución es etiquetar los archivos con atributos que los describan. Los atributos son metadatos sobre los archivos, como el tipo de archivo (por ejemplo , documento , imagen , música , creador , etc.). [ 6 ] Esto permite buscar archivos por sus atributos, de maneras que no son posibles con una jerarquía de carpetas, como encontrar "imágenes que tengan a la persona X" . Los atributos pueden ser reconocidos por el sistema de archivos de forma nativa o mediante alguna extensión. [ 6 ] Las aplicaciones de búsqueda de escritorio llevan este concepto un paso más allá. Extraen datos, incluidos los atributos, de los archivos y los indexan. Para extraer los datos, utilizan un filtro para cada formato de archivo. Esto permite realizar búsquedas basadas tanto en los atributos del archivo como en los datos que contiene. [ 6 ]

Sin embargo, esto aún no ayuda a gestionar datos relacionados, ya que los elementos dispares no tienen relaciones definidas. Por ejemplo, es imposible buscar "los números de teléfono de todas las personas que viven en Acapulco y cada una tiene más de 100 apariciones en mi colección de fotos y de quienes he recibido correo electrónico en el último mes" . Dicha búsqueda no podría realizarse a menos que se base en un modelo de datos que tenga definidas tanto la semántica como las relaciones de los datos. [ 6 ] [ 7 ] WinFS tiene como objetivo proporcionar dicho modelo de datos y la infraestructura de tiempo de ejecución que se puede utilizar para almacenar los datos, así como las relaciones entre los elementos de datos de acuerdo con el modelo de datos, haciéndolo con un nivel de rendimiento satisfactorio.

Descripción general

WinFS reconoce de forma nativa diferentes tipos de datos, como imágenes , correo electrónico , documentos , audio , vídeo , calendarios y contactos , en lugar de dejarlos como flujos de bytes sin analizar (como hacen la mayoría de los sistemas de archivos). Los datos almacenados y gestionados por el sistema son instancias del tipo de datos reconocido por el entorno de ejecución de WinFS. Los datos se estructuran mediante propiedades. Por ejemplo, una instancia de un tipo de currículum expondrá los datos mediante propiedades como Nombre , Cualificación educativa y Experiencia . Cada propiedad puede ser de un tipo simple ( cadenas , enteros , fechas ) o de tipos complejos ( contactos ). [ 8 ] [ 10 ] Los diferentes tipos de datos exponen diferentes propiedades. Además, WinFS también permite relacionar diferentes instancias de datos; por ejemplo, un documento y un contacto pueden relacionarse mediante una relación Autor . [ 7 ] [ 10 ] Las relaciones también se exponen como propiedades; Por ejemplo, si un documento está relacionado con un contacto mediante una relación "Creado por ", entonces el documento tendrá una propiedad " Creado por ". Cuando se accede a él, se recorre la relación y se devuelven los datos relacionados. [ 10 ] Siguiendo las relaciones, se puede acceder a todos los datos relacionados. [ 7 ] WinFS promueve el intercambio de datos entre aplicaciones al hacer que los tipos de datos sean accesibles para todas las aplicaciones, junto con sus esquemas. [ 8 ] Cuando una aplicación quiere usar un tipo WinFS, puede usar el esquema para encontrar la estructura de datos y usar la información. Así, una aplicación tiene acceso a todos los datos del sistema aunque el desarrollador no haya tenido que escribir analizadores para reconocer los diferentes formatos de datos. También puede usar relaciones y datos relacionados para crear filtros dinámicos para presentar la información con la que trabaja la aplicación. La API de WinFS abstrae aún más la tarea de acceder a los datos. Todos los tipos WinFS se exponen como objetos .NET con las propiedades del objeto mapeándose directamente a las propiedades del tipo de datos. [ 6 ]Además, al permitir que diferentes aplicaciones que manejan los mismos datos compartan la misma instancia de datos de WinFS en lugar de almacenar los mismos datos en archivos diferentes, se eliminan las complicaciones de sincronizar los diferentes almacenes cuando cambian los datos. [ 11 ] Por lo tanto, WinFS puede reducir las redundancias. [ 6 ] [ 9 ]

El acceso a todos los datos del sistema permite realizar búsquedas complejas en todos los elementos de datos gestionados por WinFS. En el ejemplo anterior ( "los números de teléfono de todas las personas que viven en Acapulco y que aparecen más de 100 veces en mi colección de fotos, y con quienes he intercambiado correos electrónicos el mes pasado" ), WinFS puede analizar la relación de asunto de todas las fotos para encontrar los contactos . De forma similar, puede filtrar todos los correos electrónicos del mes pasado y acceder a la relación "comunicado con" para identificar los contactos. A partir de ambos conjuntos de resultados, se pueden identificar los contactos comunes y recuperar su número de teléfono accediendo a la propiedad correspondiente de cada contacto.

Además de los datos completamente esquematizados (como XML y datos relacionales ), WinFS admite datos semiestructurados (como imágenes, que tienen un flujo de bits no estructurado más metadatos estructurados) y también datos no estructurados (como archivos). Almacena los componentes no estructurados como archivos, mientras que almacena los metadatos estructurados en el almacén estructurado. [ 10 ] Internamente, WinFS utiliza una base de datos relacional para administrar los datos. No limita los datos a pertenecer a ningún modelo de datos en particular. El entorno de ejecución de WinFS asigna el esquema a una modalidad relacional, [ 6 ] definiendo las tablas en las que almacenará los tipos y las claves primarias y foráneas que se requerirían para representar las relaciones. WinFS incluye asignaciones para esquemas de objetos y XML de forma predeterminada. Las asignaciones para otros esquemas deben especificarse. Los esquemas de objetos se especifican en XML; WinFS genera código para exponer los esquemas como clases .NET . Se puede utilizar ADO.NET para especificar directamente el esquema relacional, aunque se debe proporcionar una asignación al esquema de objetos para exponerlo como clases. [ 10 ] Los recorridos de relaciones se realizan como uniones en estas tablas. WinFS también crea automáticamente índices en estas tablas para permitir un acceso rápido a la información. [ 10 ] La indexación acelera significativamente las uniones, y el recorrido de relaciones para recuperar datos relacionados se realiza muy rápidamente. Los índices también se utilizan durante la búsqueda de información; la búsqueda y la consulta utilizan los índices para completar rápidamente las operaciones, de forma similar a los sistemas de búsqueda de escritorio .

Desarrollo

El desarrollo de WinFS es una extensión de una característica que se planeó inicialmente a principios de la década de 1990. Conocido como Object File System , se suponía que se incluiría como parte de Cairo . Se suponía que OFS tendría potentes características de agregación de datos, [ 12 ] pero el proyecto Cairo se archivó, y con él OFS. Sin embargo, más tarde, durante el desarrollo de COM , se planeó un sistema de almacenamiento, llamado Storage+, basado en el entonces próximo SQL Server 8.0, que estaba previsto que ofreciera características de agregación similares. [ 12 ] Esto tampoco se materializó, y se concibió una tecnología similar, Relational File System (RFS), para ser lanzada con SQL Server 2000. [ 12 ] Sin embargo, SQL Server 2000 terminó siendo una actualización menor de SQL Server 7.0 y RFS no se implementó.

El concepto no se descartó y sirvió de base para WinFS. [ 12 ] Inicialmente, WinFS se planeó para su inclusión en Windows Vista , [ 14 ] y la compilación 4051 de Windows Vista, entonces llamada por su nombre en clave "Longhorn", entregada a los desarrolladores en la Conferencia de Desarrolladores Profesionales de Microsoft en 2003, incluía WinFS, pero sufría de importantes problemas de rendimiento. [ 12 ] En agosto de 2004, Microsoft anunció que WinFS no se incluiría en Windows Vista; en su lugar, estaría disponible como una actualización descargable después del lanzamiento de Vista. [ 12 ]

El 29 de agosto de 2005, [ 12 ] Microsoft puso a disposición de los suscriptores de MSDN la Beta 1 de WinFS. Funcionaba en Windows XP y requería .NET Framework para ejecutarse. La API de WinFS estaba incluida en el espacio de nombres System.Storage . [ 15 ] La beta se actualizó el 1 de diciembre de 2005 para ser compatible con la versión 2.0 de .NET Framework. [ 16 ] La Beta 2 de WinFS estaba prevista para algún momento posterior de 2006, [ 17 ] y se suponía que incluiría la integración con la Búsqueda de escritorio de Windows , de modo que los resultados de la búsqueda incluyeran resultados tanto de archivos regulares como de almacenes WinFS, además de permitir el acceso a los datos de WinFS mediante ADO.NET . [ 18 ]

El 23 de junio de 2006, el equipo de WinFS de Microsoft anunció que WinFS ya no se distribuiría como un producto independiente, [ 4 ] [ 19 ] y algunos componentes se integrarían en otras tecnologías. Muchas de las características principales que Microsoft pretendía ofrecer con WinFS incluían un panel para la edición de propiedades de metadatos, navegación de propiedades basada en rutas de navegación , filtrado o apilamiento de elementos sobre propiedades, búsqueda incremental y búsquedas guardadas ; [ 20 ] estas características se incorporaron en Windows Vista. [ 21 ] La composición de consultas , una característica de WinFS que permitía a los usuarios realizar búsquedas adicionales que reutilizaban los resultados de una consulta anterior, [ 22 ] se incorporó posteriormente en Windows Vista. [ 23 ]

Ejemplos de usos de la tecnología son los componentes de mapeo objeto-relacional en ADO.NET Entity Framework ; compatibilidad con datos no estructurados, modo de operación sin administrador, compatibilidad con objetos del sistema de archivosFILESTREAM a través del tipo de datos y datos jerárquicos en SQL Server 2008 , entonces con nombre en clave Katmai , así como la integración con las API de Win32 y Windows Shell y compatibilidad con el recorrido de jerarquías mediante el recorrido de relaciones en versiones posteriores de Microsoft SQL Server ; [ 5 ] y los componentes de sincronización en Microsoft Sync Framework . [ 5 ]

En 2013, Bill Gates citó WinFS como su mayor decepción en Microsoft y afirmó que la idea de WinFS se adelantó a su tiempo y que resurgirá. [ 24 ]

Almacenamiento de datos

Arquitectura

Arquitectura de la pila WinFS

WinFS utiliza un motor relacional, derivado de SQL Server 2005, [ 25 ] para proporcionar el mecanismo de relaciones de datos. Los almacenes de WinFS son simplemente archivos de base de datos de SQL Server (.MDF) con el atributo FILESTREAM establecido. [ 26 ] Estos archivos se almacenan en la carpeta de acceso restringido denominada "System Volume Information" (ubicada en la raíz del volumen), [ 27 ] en carpetas dentro de la carpeta "WinFS" con nombres de GUID de estos almacenes. [ 26 ]

En la base de la pila de WinFS se encuentra WinFS Core , que interactúa con el sistema de archivos y proporciona capacidades de acceso y direccionamiento de archivos. [ 8 ] El motor relacional aprovecha los servicios de WinFS Core para presentar un almacén estructurado y otros servicios como el bloqueo , que el entorno de ejecución de WinFS utiliza para implementar la funcionalidad. El entorno de ejecución de WinFS expone servicios como Sincronización y Reglas que se pueden usar para sincronizar almacenes de WinFS o realizar ciertas acciones cuando ocurren ciertos eventos. [ 8 ]

WinFS se ejecuta como un servicio que ejecuta tres procesos : [ 28 ]

  1. WinFS.exe , que aloja el almacén de datos relacional.
  2. WinFSSearch.exe , que aloja el motor de indexación y consulta.
  3. WinFPM.exe (Administrador de promoción de archivos WinFS) , que interactúa con el sistema de archivos subyacente.

Permite el acceso programático a sus funcionalidades mediante un conjunto de API de .NET Framework . Estas permiten a las aplicaciones definir tipos de datos personalizados, establecer relaciones entre los datos, almacenar y recuperar información, y realizar búsquedas avanzadas. [ 6 ] [ 8 ] Posteriormente, las aplicaciones pueden agregar los datos y presentarlos al usuario.

Almacén de datos

WinFS almacena datos en almacenes relacionales, que se exponen como ubicaciones virtuales llamadas almacenes . [ 12 ] Un almacén WinFS es un repositorio común donde cualquier aplicación puede almacenar datos junto con sus metadatos, relaciones y esquema. El entorno de ejecución de WinFS puede aplicar ciertas relaciones por sí mismo; por ejemplo, si los valores de la propiedad "sujeto" de una imagen y la propiedad "nombre" de un contacto son idénticos, WinFS puede relacionar el contacto con la imagen. [ 29 ] Las relaciones también pueden ser especificadas por otras aplicaciones o por el usuario. [ 30 ]

WinFS proporciona almacenamiento unificado, pero no define el formato que se almacenará en los almacenes de datos. En cambio, admite la escritura de datos en formatos específicos de la aplicación. Sin embargo, las aplicaciones deben proporcionar un esquema que defina cómo se debe interpretar el formato del archivo. [ 6 ] Por ejemplo, se podría agregar un esquema para que WinFS entienda cómo leer y, por lo tanto, pueda buscar y analizar, por ejemplo, un archivo PDF . Al usar el esquema, cualquier aplicación puede leer datos de cualquier otra aplicación, y esto también permite que diferentes aplicaciones escriban en el formato de las demás al compartir el esquema. [ 30 ]

Se pueden crear varios almacenes WinFS en una sola máquina. [ 30 ] Esto permite mantener segregadas diferentes clases de datos; por ejemplo, los documentos oficiales y los personales pueden guardarse en almacenes distintos. WinFS, por defecto, proporciona un único almacén, denominado "DefaultStore". [ 12 ] Los almacenes WinFS se exponen como objetos shell, similares a las carpetas virtuales , que generan dinámicamente una lista de todos los elementos presentes en el almacén y los presentan en una vista de carpeta. El objeto shell también permite buscar información en el almacén de datos. [ 12 ]

Una unidad de datos que debe almacenarse en un almacén WinFS se llama elemento WinFS . [ 6 ] [ 30 ] Un elemento WinFS, junto con el elemento de datos principal, también contiene información sobre cómo el elemento de datos se relaciona con otros datos. Esta relación se almacena en términos de enlaces lógicos. Los enlaces especifican con qué otros elementos de datos está relacionado el elemento actual. Dicho de otro modo, los enlaces especifican la relación de los datos con otros elementos de datos. Los enlaces se almacenan físicamente utilizando un identificador de enlace, que especifica el nombre y la intención de la relación, como el tipo de o consta de . [ 6 ] El identificador de enlace se almacena como un atributo del elemento de datos. Todos los objetos que tienen el mismo ID de enlace se consideran relacionados. [ 6 ] Se debe proporcionar un esquema XML , que define la estructura de los elementos de datos que se almacenarán en WinFS, al entorno de ejecución de WinFS con antelación. [ 6 ] En la versión Beta 1 de WinFS, el ensamblado del esquema tenía que agregarse a la GAC ​​antes de poder utilizarse.

Modelo de datos

WinFS modela los datos utilizando los elementos de datos, junto con sus relaciones , extensiones y reglas que rigen su uso. [ 8 ] WinFS necesita comprender el tipo y la estructura de los elementos de datos para que la información almacenada en ellos esté disponible para cualquier aplicación que la solicite. Esto se logra mediante el uso de esquemas. Para cada tipo de elemento de datos que se almacenará en WinFS, se debe proporcionar un esquema correspondiente para definir el tipo, la estructura y las asociaciones de los datos. Estos esquemas se definen mediante XML . [ 6 ]

Los esquemas predefinidos de WinFS incluyen esquemas para documentos, correo electrónico, citas, tareas, medios, audio, video y también esquemas del sistema que incluyen configuración, programas y otros datos relacionados con el sistema. [ 8 ] Se pueden definir esquemas personalizados para cada aplicación, en situaciones en las que una aplicación desea almacenar sus datos en WinFS, pero no compartir la estructura de esos datos con otras aplicaciones, o bien, se pueden hacer disponibles en todo el sistema. [ 8 ]

Sistema de tipos

Jerarquía de tipos de WinFS

La diferencia más importante entre un sistema de archivos y WinFS es que WinFS conoce el tipo de cada elemento de datos que almacena. Y el tipo especifica las propiedades del elemento de datos. El sistema de tipos de WinFS está estrechamente relacionado con el concepto de clases y herencia del framework .NET . Se puede crear un nuevo tipo extendiendo y anidando cualquier tipo predefinido. [ 6 ]

WinFS proporciona cuatro tipos base predefinidos : Items , Relationships , ScalarTypes y NestedTypes . [ 6 ] Un Item es el objeto de datos fundamental que se puede almacenar, y una Relationship es la relación o vínculo entre dos elementos de datos. Dado que todos los elementos de WinFS deben tener un tipo, el tipo de elemento almacenado define sus propiedades. Las propiedades de un Item pueden ser un ScalarType, que define la unidad de información más pequeña que puede tener una propiedad, o un NestedType, que es una colección de más de un ScalarType y/o NestedType. Todos los tipos de WinFS están disponibles como clases .NET CLR . [ 30 ]

Cualquier objeto representado como una unidad de datos, como un contacto, una imagen, un vídeo, un documento, etc., puede almacenarse en un almacén WinFS como una especialización del tipo Item. [ 30 ] Por defecto, WinFS proporciona tipos Item para Archivos, Contactos, Documentos, Imágenes, Audio, Vídeo, Calendario y Mensajes. El Item Archivo puede almacenar cualquier dato genérico, que se almacena en los sistemas de archivos como archivos. Pero a menos que se proporcione un esquema avanzado para el archivo, al definirlo como un Item especializado, WinFS no podrá acceder a sus datos. Dicho Item Archivo solo puede admitir estar relacionado con otros Items. [ 6 ]

Definir un nuevo tipo

Un desarrollador puede extender cualquiera de estos tipos, o el tipo base Item, para proporcionar un tipo para sus datos personalizados. Los datos contenidos en un Item se definen en términos de propiedades, o campos que contienen los datos reales. Por ejemplo, un Item Contact puede tener un campo Name que es un ScalarType, y un campo Address , un NestedType, que a su vez se compone de dos ScalarTypes. Para definir este tipo, se extiende la clase base Item y se agregan los campos necesarios a la clase. [ 6 ] Un campo NestedType se puede definir como otra clase que contiene los dos campos ScalarType. Una vez definido el tipo, se debe definir un esquema, que denota el tipo primitivo de cada campo, por ejemplo, el campo Name es un String, el campo Address es una clase Address definida a medida, ambos campos de los cuales son Strings. Otros tipos primitivos que WinFS admite son Integer , Byte , Decimal , Float , Double , Boolean y DateTime, entre otros. [ 6 ] El esquema también definirá qué campos son obligatorios y cuáles son opcionales. [ 31 ] El elemento de contacto definido de esta manera se utilizará para almacenar información sobre el contacto, completando el campo de propiedades y almacenándola. Solo los campos marcados como obligatorios deben completarse durante el guardado inicial. [ 30 ] Otros campos pueden ser completados posteriormente por el usuario, o no completarse en absoluto. Si se necesitan agregar más campos de propiedades, como la fecha de la última conversación , este tipo puede ampliarse para incluirlos. Los tipos de elementos para otros datos pueden definirse de manera similar.

Relaciones

WinFS crea tablas para todos los Items definidos. [ 31 ] Todos los campos definidos para el Item forman las columnas de la tabla y todas las instancias del Item se almacenan como filas en la tabla para los Items respectivos. Siempre que algún campo de la tabla haga referencia a datos en otra tabla, se considera una relación. El esquema de la relación especifica qué tablas están involucradas y cuál es el tipo y el nombre de la relación. El entorno de ejecución de WinFS administra los esquemas de relación. [ 30 ] Todos los Items se exponen como objetos .NET CLR , con una interfaz uniforme que proporciona acceso a los datos almacenados en los campos. Por lo tanto, cualquier aplicación puede recuperar un objeto de cualquier tipo de Item y puede usar los datos del objeto, sin conocer la estructura física en la que se almacenaron los datos. [ 6 ]

Los tipos WinFS se exponen como clases .NET, que pueden instanciarse como objetos .NET. Los datos se almacenan en estas instancias de tipo configurando sus propiedades. Una vez hecho esto, se persisten en el almacén WinFS. Se accede a un almacén WinFS mediante una clase ItemContext (consulte la sección Recuperación de datos para obtener más detalles). ItemContext permite el acceso transaccional al almacén WinFS; es decir, todas las operaciones desde que se vincula un objeto ItemContext a un almacén hasta que se cierra, todas tienen éxito o todas se revierten. A medida que se realizan cambios en los datos, no se escriben en el disco, sino en un registro en memoria. Solo cuando se cierra la conexión se escriben los cambios en el disco en lote. Esto ayuda a optimizar la E/S del disco. [ 10 ] El siguiente fragmento de código, escrito en C# , crea un contacto y lo almacena en un almacén WinFS.

// Conéctese al almacén WinFS predeterminado usando ( ItemContext ic = ItemContext . Open ()) { // Cree el contacto y establezca los datos en las propiedades apropiadas ContactEAddress contact = new ContactEAddress { Name = new PersonName { // Name es un ComplexType Displayname = "Doe, John" , FirstName = "John" , LastName = "Doe" }, TelephoneNumber = new TelephoneNumber { // Telephone number es un ComplexType Country = CountryCode . Antarctica , Areacode = 4567 , Number = 9876543210 }, Age = 111 // Age es un SimpleType };// Agrega el objeto a la carpeta personal del usuario. // Esto relaciona el elemento con el pseudotipo de carpeta, para retrocompatibilidad , // ya que esto permite acceder al elemento en una jerarquía de carpetas para aplicaciones que no son nativas de WinFS. Folder containingFolder = UserDataFolder . FindMyPersonalFolder (); containingFolder . OutFolderMemberRelationship . AddItem ( ic , contact );// Encuentra un documento y relaciónalo con el documento. La búsqueda comienza creando un // objeto ItemSearcher. Cada objeto de tipo WinFS contiene un método GetSearcher() // que genera un objeto ItemSearcher que busca documentos de ese tipo. using ( ItemSearcher searcher = Document . GetSearcher ( ic )) { Document d = searcher . Find ( @"Title = 'Some Particular Document'" ); d . OutAuthoringRelationship . AddItem ( ic , contact ); } // Dado que solo se debe encontrar un documento, también se podría usar el método ItemContext.FindOne() .// Encuentra una imagen y relaciónala usando ( ItemSearcher searcher = Picture . GetSearcher ( ic )) { Picture p = searcher . Find ( @"Occasion = 'Graduation' and Sequence = '3'" ); p . OutSubjectRelationship . AddItem ( ic , contact ); }// Persistir en el store y cerrar la referencia al store ic . Update (); }

Relaciones

Un dato puede estar relacionado con un elemento más, dando lugar a una relación uno a uno, o con más de un elemento, resultando en una relación uno a muchos. [ 6 ] Los elementos relacionados, a su vez, también pueden estar relacionados con otros elementos de datos, lo que da lugar a una red de relaciones, que se denomina relación muchos a muchos. Al crear una relación entre dos elementos, se crea otro campo en los datos de los elementos en cuestión que hace referencia a la fila en la tabla del otro elemento donde se almacena el objeto relacionado. [ 30 ]

Relaciones de WinFS

En WinFS, una Relación es una instancia del tipo base Relación, que se extiende para indicar una especialización de una relación. Una Relación es una asignación entre dos elementos, un Origen y un Destino. El origen tiene una Relación Saliente, mientras que el destino obtiene una Relación Entrante. [ 31 ] WinFS proporciona tres tipos de relaciones primitivas: Relación de Almacenamiento , Relación de Referencia y Relación de Incrustaciones . [ 6 ] Cualquier relación personalizada entre dos tipos de datos son instancias de estos tipos de relaciones.

  • Las relaciones de retención especifican la propiedad y la duración (que define cuánto tiempo es válida la relación) del elemento de destino. Por ejemplo, la relación entre una carpeta y un archivo, y entre un empleado y su registro de salario, es una relación de retención; esta última se eliminará cuando se elimine la primera. Un elemento de destino puede formar parte de más de una relación de retención. En tal caso, se eliminará cuando se eliminen todos los elementos de origen.
  • Las relaciones de referencia establecen un vínculo entre dos elementos, pero no tienen una duración asociada; es decir, cada elemento seguirá almacenándose incluso sin el otro.
  • Las relaciones de incrustación dan orden a los dos elementos que están vinculados por la relación, como la relación entre un elemento padre y un elemento hijo.

Las relaciones entre dos elementos pueden establecerse mediante programación por la aplicación que crea los datos, o bien el usuario puede utilizar el Explorador de elementos de WinFS para relacionar manualmente los elementos. [ 31 ] Un explorador de elementos de WinFS también puede mostrar gráficamente los elementos y cómo se relacionan, para que el usuario pueda saber cómo están organizados sus datos. [ 30 ]

Normas

WinFS incluye reglas [ 22 ] que se ejecutan cuando se cumple una determinada condición. Las reglas de WinFS operan sobre datos y relaciones de datos. Por ejemplo, se puede crear una regla que indique que, siempre que se cree un elemento que contenga el campo "Nombre" y si el valor de ese campo es un nombre específico, se debe crear una relación que vincule el elemento con otro elemento. Las reglas de WinFS también pueden acceder a cualquier aplicación externa. Por ejemplo, se puede crear una regla que inicie una aplicación de notificación cuando se reciba un correo electrónico de un contacto específico [ 22 ] . Las reglas de WinFS también se pueden usar para agregar nuevos campos de propiedades a los elementos de datos existentes [ 22 ] .

Las reglas de WinFS también se exponen como objetos CLR de .NET. Por lo tanto, cualquier regla puede usarse para cualquier propósito. Incluso se puede extender una regla heredándola para formar una nueva regla que conste de la condición y la acción de la regla principal más algo más. [ 22 ]

RAV

WinFS admite la creación de vistas de aplicaciones enriquecidas (RAV) mediante la agregación de diferentes datos en un formato de tabla virtual. A diferencia de las vistas de base de datos , donde cada elemento individual solo puede ser un valor escalar, las RAV pueden tener elementos complejos o incluso colecciones de elementos. Los datos reales pueden abarcar múltiples tipos de datos o instancias e incluso pueden recuperarse recorriendo relaciones. [ 10 ] Las RAV están intrínsecamente paginadas (dividiendo todo el conjunto de datos en páginas más pequeñas que contienen subconjuntos desconectados de los datos) por el entorno de ejecución de WinFS. El tamaño de la página se define durante la creación de la vista y la API de WinFS expone métodos para iterar sobre las páginas. Las RAV también admiten la modificación de la vista según diferentes parámetros de agrupación. Las vistas también pueden consultarse.

Control de acceso

Aunque todos los datos se comparten, no todos son igualmente accesibles. WinFS utiliza el sistema de autenticación de Windows para proporcionar dos mecanismos de protección de datos. [ 30 ] En primer lugar, existe la seguridad a nivel de recurso compartido que controla el acceso a su recurso compartido de WinFS. En segundo lugar, existe la seguridad a nivel de elemento que admite descriptores de seguridad compatibles con NT. El proceso que accede al elemento debe tener los privilegios suficientes para acceder a él. Además, en Vista existe el concepto de "nivel de integridad" para una aplicación. Los datos de mayor integridad no pueden ser accedidos por un proceso de menor integridad.

Recuperación de datos

Diagrama de flujo para crear, buscar y actualizar instancias de datos de WinFS.

El modo principal de recuperación de datos de un almacén WinFS es consultar dicho almacén según ciertos criterios, [ 8 ] lo que devuelve un conjunto enumerable de elementos que coinciden con dichos criterios. Los criterios de la consulta se especifican mediante el lenguaje de consulta OPath . Los datos devueltos se ponen a disposición como instancias de esquemas de tipo, conformes al modelo de objetos .NET . [ 32 ] Se puede acceder a los datos mediante las propiedades de los objetos individuales. [ 31 ]

Las relaciones también se exponen como propiedades. Cada elemento de WinFS tiene dos propiedades, llamadas IncomingRelationships y OutgoingRelationships , que proporcionan acceso al conjunto de instancias de relación en las que participa el elemento. Se puede acceder al otro elemento que participa en una instancia de relación a través de la instancia de relación correspondiente. [ 10 ] [ 31 ]

El hecho de que se pueda acceder a los datos mediante su descripción, en lugar de su ubicación, permite ofrecer capacidades organizativas al usuario final sin limitarse a la organización jerárquica propia de los sistemas de archivos. En un sistema de archivos, cada archivo o carpeta se encuentra en una sola carpeta. Sin embargo, los elementos de WinFS pueden participar en cualquier número de relaciones de almacenamiento, incluso con otros elementos. Por lo tanto, los usuarios finales no se limitan a la organización de archivos y carpetas. Un contacto puede convertirse en un contenedor de documentos; una imagen, en un contenedor de contactos, y así sucesivamente. Para garantizar la compatibilidad con versiones anteriores, WinFS incluye un pseudotipo llamado Carpeta, cuya única función es participar en las relaciones de almacenamiento y emular la organización de archivos y carpetas. Dado que cualquier elemento de WinFS puede estar relacionado con más de una carpeta, desde la perspectiva del usuario final, un elemento puede residir en varias carpetas sin duplicar los datos reales. [ 10 ] Las aplicaciones también pueden analizar los gráficos de relaciones para presentar diversos filtros. Por ejemplo, una aplicación de correo electrónico puede analizar los contactos relacionados y las relaciones de los contactos con las facturas de restaurantes y generar dinámicamente filtros como "Correos electrónicos enviados a personas con las que almorcé" .

Búsquedas

La API de WinFS proporciona una clase llamada ItemContext , que está vinculada a un almacén WinFS. El objeto ItemContext se puede usar para limitar la búsqueda a todo el almacén o a un subconjunto del mismo. También proporciona acceso transaccional al almacén. [ 15 ] Un objeto de esta clase puede entonces crear un objeto ItemSearcher que luego toma el tipo (un objeto que representa el tipo) del elemento que se va a recuperar o la relación y la cadena de consulta OPath que representa los criterios para la búsqueda. [ 31 ] [ 33 ] Se devuelve un conjunto de todas las coincidencias, que luego se puede vincular a un widget de la interfaz de usuario para mostrar en masa o enumerar individualmente. [ 30 ] Los elementos de propiedades también se pueden modificar y luego almacenar de nuevo en el almacén de datos para actualizar los datos. El objeto ItemContext se cierra (lo que marca el final de la asociación del objeto con el almacén) cuando se realizan las consultas o se fusionan los cambios en el almacén.

También se puede acceder a los elementos relacionados a través de los elementos. Las propiedades IncomingRelationships y OutgoingRelationships dan acceso a todas las instancias de la relación, cuyo tipo coincide con el nombre de la relación. Estos objetos de relación exponen el otro elemento a través de una propiedad. Por ejemplo, si una imagen está relacionada con otra imagen, se puede acceder a ella recorriendo la relación de la siguiente manera:

ContactsCollection contacts = picture . OutgoingRelationships . Cast ( typeof ( Contact )). Value ; // Esto recupera la colección de todas las relaciones salientes de un objeto picture // y filtra los contactos alcanzables desde ellos y recupera su valor.// O la relación se puede especificar estáticamente como ContactsCollection contacts = picture . OutgoingRelationships . OutContactRelationship . Contact ;

Una cadena de consulta OPath permite expresar los parámetros que se consultarán para especificarlos mediante propiedades de elementos , elementos incrustados y relaciones . Puede especificar una condición de búsqueda única, como "título = Algo'" , o una condición compuesta como "título = 'Título 1' || título = 'Título 2' && autor = 'Alguien'" . Estas operaciones booleanas y relacionales se pueden especificar utilizando operadores como && , || , = , != de C#, así como sus equivalentes en inglés como EQUAL , NOT EQUAL . También se admiten operadores como SQL como LIKE , GROUP BY y ORDER BY , así como condiciones comodín. Por lo tanto, "título LIKE 'cualquier*'" es una cadena de consulta válida. Estos operadores se pueden utilizar para ejecutar búsquedas complejas como

using ( ItemContext ic = ItemContext . Open ()) { // La búsqueda comienza creando un objeto ItemSearcher. El buscador se crea a partir de una // instancia de relación porque los contactos que se buscan están relacionados. El // primer parámetro define el alcance de la búsqueda. Un ItemContext como alcance significa // que se buscará en todo el almacén. El alcance puede limitarse a un conjunto de elementos que pueden // estar en una relación de almacenamiento con los contactos. En ese caso, el conjunto se pasa como // el alcance de la búsqueda. ItemSearcher searcher = OutContactRelationship . GetTargetSearcher ( ic , typeof ( Contact )); ContactCollection contacts = searcher . FindAll ( "OutContactRelationship.Contact.Name LIKE 'A*'" ); }

El fragmento de código anterior crea un objeto ItemSearcher que busca en la instancia OutContactRelationship que relaciona imágenes y contactos, buscando efectivamente todas las imágenes relacionadas con un contacto. Luego ejecuta la consulta Name LIKE 'A*'" en todos los contactos accesibles a través de OutContactRelationship , devolviendo la lista de "contactos cuyos nombres comienzan con A y cuyas imágenes tengo" . De manera similar, se podrían tener en cuenta más relaciones para acotar aún más los resultados. [ 10 ] [ 31 ] Además, un procesador de consultas en lenguaje natural, que analiza la consulta en lenguaje natural y crea una cadena de consulta OPath bien formada para buscar a través de relaciones adecuadas, puede permitir a los usuarios realizar búsquedas como "encontrar el nombre del vino que tomé con la persona X el mes pasado" , siempre que las aplicaciones de gestión financiera estén utilizando WinFS para almacenar facturas.

Las distintas relaciones especifican un conjunto de datos diferente. Por lo tanto, cuando se realiza una búsqueda que abarca múltiples relaciones, los distintos conjuntos de datos se recuperan individualmente y se calcula su unión . El conjunto resultante contiene únicamente los elementos de datos que corresponden a todas las relaciones. [ 31 ]

Notificaciones

WinFS incluye una mejor compatibilidad para gestionar datos que cambian con frecuencia. Mediante las notificaciones de WinFS , las aplicaciones pueden optar por recibir notificaciones sobre los cambios en los elementos de datos seleccionados . WinFS generará un ItemChangedEvent , utilizando el modelo de eventos de .NET, cuando cambie un elemento suscrito, y el evento se publicará en las aplicaciones. [ 31 ]

Agente de información

WinFS incluye una función de Agente de Información para la gestión, recuperación y almacenamiento de reglas y preferencias de notificación del usuario final para los cambios en los elementos del almacén de datos. Mediante el Agente de Información, es posible definir automáticamente relaciones con nuevos elementos en función de eventos como citas. Por ejemplo, las citas pueden relacionarse con fotos según la fecha en que se tomaron, lo que permite realizar consultas sobre cumpleaños o días festivos sin necesidad de conocer las fechas exactas de dichos eventos (" buscar todas las fotos tomadas en este cumpleaños "). Otros ejemplos incluyen el traslado automático de nuevos elementos a carpetas específicas según una regla determinada por la hora de la cita y la fecha en que se tomaron las fotos (" cuando importe una foto tomada durante un evento empresarial, moverla a la carpeta Eventos Empresariales "), o posibilidades más complejas. El Agente de Información también puede reenviar notificaciones a otros dispositivos (" si recibo un correo electrónico de alta prioridad de mi jefe, enviar una notificación a mi teléfono ") y es similar a la funcionalidad de Reglas y Alertas de Microsoft Outlook.

Intercambio de datos

WinFS permite compartir datos fácilmente entre aplicaciones y entre varios almacenes WinFS, que pueden residir en diferentes equipos, mediante la copia de datos desde y hacia ellos. [ 34 ] Un elemento WinFS también se puede copiar a un sistema de archivos que no sea WinFS, pero a menos que ese elemento de datos se vuelva a colocar en el almacén WinFS, no será compatible con los servicios avanzados que ofrece WinFS.

La API de WinFS también proporciona cierto soporte para compartir con aplicaciones que no son de WinFS. WinFS expone un objeto shell para acceder a los almacenes de WinFS. Este objeto asigna elementos de WinFS a una jerarquía de carpetas virtuales y puede ser accedido por cualquier aplicación. [ 12 ] Las carpetas virtuales pueden compartir automáticamente el nuevo contenido al que hace referencia la consulta con los usuarios (una carpeta virtual para " todas las fotos de vacaciones " puede compartir automáticamente los nuevos elementos devueltos por esta consulta con los usuarios). Los datos de WinFS también se pueden compartir manualmente mediante recursos compartidos de red , compartiendo el objeto shell heredado. [ 34 ] Los formatos de archivo que no son de WinFS se pueden almacenar en almacenes de WinFS, utilizando el elemento de archivo proporcionado por WinFS. Se pueden escribir importadores para convertir formatos de archivo específicos a tipos de elementos de WinFS. [ 34 ]

Además, WinFS proporciona servicios para sincronizar automáticamente elementos en dos o más almacenes WinFS, sujetos a alguna condición predefinida, como " compartir solo fotos " o " compartir fotos que tengan un contacto X asociado ". [ 34 ] Los almacenes pueden estar en diferentes computadoras. La sincronización se realiza de forma punto a punto ; no existe una autoridad central. Una sincronización puede ser manual, automática o programada. Durante la sincronización, WinFS encuentra los elementos nuevos y modificados, y los actualiza en consecuencia. Si dos o más cambios entran en conflicto, WinFS puede recurrir a la resolución automática basada en reglas predefinidas o posponer la sincronización para su resolución manual. WinFS también actualiza los esquemas, si es necesario. [ 34 ]

Soporte de aplicaciones

Espacio de nombres de shell

WinFS Beta 1 incluye una extensión de espacio de nombres de shell , que muestra los almacenes WinFS como objetos de nivel superior en la vista Mi PC . [ 12 ] Los archivos se pueden copiar dentro y fuera de los almacenes, así como las aplicaciones se pueden usar directamente para guardar allí. Incluso las carpetas como Mis documentos se pueden redirigir a los almacenes. [ 12 ] WinFS usa complementos de Importador para analizar los archivos mientras se importaban al almacén y crear esquemas y objetos WinFS adecuados, y cuando se extraen los objetos, los vuelve a empaquetar en archivos. [ 34 ] Si no se instalan importadores para ciertos archivos, se almacenan como tipos de archivo genéricos .

Microsoft Rave

Microsoft Rave es una aplicación incluida en WinFS Beta 1. Permite la sincronización de dos o más almacenes WinFS y admite la sincronización tanto en modo de malla completa como en la topología de hub central . Durante la sincronización, Microsoft Rave detecta los cambios realizados en cada almacén desde la última sincronización y los actualiza en consecuencia. Al aplicar los cambios, también detecta si existe algún conflicto, es decir, si se han modificado los mismos datos en ambos almacenes desde la última sincronización. En ese caso, registra los datos en conflicto para su posterior resolución o los resuelve de inmediato. Microsoft Rave utiliza tecnología peer-to-peer para comunicarse y transferir datos.

StoreSpy

WinFS incluía StoreSpy , un explorador de elementos de WinFS que podía utilizarse para examinar instancias de datos estructurados con sus propiedades y relaciones.

Con WinFS Beta 1, Microsoft incluyó una aplicación no compatible llamada StoreSpy , [ 35 ] que permitía explorar almacenes WinFS presentando una vista jerárquica de los elementos WinFS. Generaba automáticamente carpetas virtuales basadas en permisos de acceso, fecha y otros metadatos, y las presentaba en una vista de árbol jerárquica, similar a la de las carpetas tradicionales. La aplicación generaba pestañas para diferentes tipos de elementos. StoreSpy permitía ver elementos , relaciones , multiconjuntos , elementos anidados , extensiones [ 36 ] y otros tipos en el almacén junto con sus metadatos completos. También presentaba una interfaz de búsqueda para realizar búsquedas manuales y guardarlas como carpetas virtuales. La aplicación también presentaba una vista gráfica de las reglas WinFS. Sin embargo, no permitía editar elementos ni sus propiedades, aunque estaba previsto incluirlo en una versión futura. [ 37 ] Pero el proyecto WinFS se redujo antes de que pudiera materializarse.

Tipo de navegador

WinFS también incluye otra aplicación, llamada WinFS Type Browser , que se puede usar para explorar los tipos de WinFS, así como para visualizar la relación jerárquica entre ellos. [ 38 ] Un tipo de WinFS, tanto los integrados como los esquemas personalizados, se puede visualizar junto con todas las propiedades y métodos que admite. También muestra los tipos de los que deriva, así como otros tipos que extienden el esquema de tipos. Sin embargo, aunque se incluyó con WinFS, se lanzó como una herramienta sin soporte. [ 38 ]

OPather

WinFS Beta 1 también incluye una aplicación no compatible llamada OPather . [ 39 ] Esta aplicación ofrece una interfaz gráfica para escribir consultas Opath . Se puede usar seleccionando el tipo de objeto de destino y especificando los parámetros de la consulta. También incluye una función de autocompletado de parámetros similar a Intellisense . Posteriormente, se puede usar para realizar tareas de visualización, como vincular los resultados de una consulta a un control DataGrid , crear vistas de los datos en el propio WinFS o simplemente extraer la cadena de consulta.

Proyecto "Naranja"

Microsoft lanzó un proyecto para crear una aplicación de visualización de datos para WinFS. Su nombre en clave era "Proyecto Naranja" y supuestamente se desarrolló utilizando Windows Presentation Foundation . [ 40 ] Se suponía que proporcionaría la exploración de elementos almacenados en almacenes WinFS, y las relaciones de datos serían una parte importante del modelo de navegación. También se suponía que permitiría a los usuarios organizar gráficamente los almacenes WinFS  , materializando muchos de los conceptos mostrados en el archivo WMV del vídeo conceptual de IWish . Sin embargo, dado que el proyecto WinFS quedó en suspenso, se desconoce su estado actual.

Véase también

Referencias

  1. "Información filtrada de Windows insinúa cambios futuros" . ZDNet . CBS Interactive . 30 de septiembre de 2007. Archivado del original el 30 de septiembre de 2007.
  2. Schofield, Jack (29 de junio de 2006). "Por qué WinFS tuvo que desaparecer" . The Guardian . Guardian News and Media . Recuperado el 9 de diciembre de 2010 .
  3. "Vídeo conceptual de IWish" . Microsoft. Archivado del original el 2 de junio de 2006. Consultado el 14 de julio de 2008 .
  4. 1 2 Quentin Clark (23 de junio de 2006). "Actualización de WinFS" . Lo que hay en el almacén . Blogs de MSDN . Recuperado el 23 de junio de 2006 .
  5. 1 2 3 Quentin Clark. "¿Dónde está WinFS ahora?" . Archivado del original el 17 de mayo de 2008. Recuperado el 17 de mayo de 2008 .
  6. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 Shawn Wildermuth (30 de junio de 2006). "Una perspectiva de desarrollador sobre WinFS: Parte 1" . MSDN . Recuperado el 30 de junio de 2007 .
  7. 1 2 3 4 Vijay Bangaru. "Unificar, organizar, explorar e innovar. ¡Oh, Dios mío! (Parte 2)" . Blog del equipo de WinFS. Archivado del original el 9 de junio de 2007. Recuperado el 30 de junio de 2007 .
  8. 1 2 3 4 5 6 7 8 9 10 11 Sean Grimaldi (13 de septiembre de 2006). "Los archivos WinFS: Divide y vencerás" . MSDN . Recuperado el 30 de junio de 2007 .
  9. 1 2 Thomas Rizzo (13 de septiembre de 2006). "WinFS 101: Introducción al nuevo sistema de archivos de Windows" . MSDN . Consultado el 30 de junio de 2007 .
  10. 1 2 3 4 5 6 7 8 9 10 11 "WinFS en The .NET Show" . Microsoft . Archivado del original el 5 de enero de 2009. Recuperado el 4 de julio de 2007 .
  11. Vijay Bangaru. "Unificar, organizar, explorar e innovar. ¡Oh, Dios mío! (Parte 1)" . Blog del equipo de WinFS. Archivado del original el 8 de julio de 2007. Consultado el 30 de junio de 2007 .
  12. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 Paul Thurrott. "Vista previa de Windows Storage Foundation (WinFS)" . Archivado del original el 2 de julio de 2007. Recuperado el 30 de junio de 2007 .
  13. 1 2 "Mi cita con el Destino, eh... Almacenamiento Integrado" . Archivado del original el 31-10-2007 . Recuperado el 30-06-2007 .
  14. Cath Everett. "¿Valdrá la pena el dolor por Longhorn?" . ZDNet. Archivado del original el 12 de marzo de 2010. Consultado el 30 de junio de 2007 .
  15. 1 2 "WinFS para desarrolladores" . NTFS.com. Archivado del original el 3 de julio de 2007. Consultado el 4 de julio de 2007 .
  16. Vijay Bangaru. "Actualización de WinFS Beta 1 ya disponible" . Blog del equipo de WinFS. Archivado del original el 20 de mayo de 2007. Consultado el 30 de junio de 2007 .
  17. Shan Sinha. "¡Presentando la próxima versión de WinFS en Tech Ed 2006, en Boston! ¡Únete a nosotros!" . Blog del equipo de WinFS. Archivado del original el 8 de marzo de 2007. Consultado el 30 de junio de 2007 .
  18. Sanjay Anand. "Mi encuentro con el destino, eh... almacenamiento integrado" . Blog del equipo de WinFS. Archivado del original el 31 de octubre de 2007. Consultado el 30 de junio de 2007 .
  19. Quentin Clark. "Actualización de la actualización" . Blog del equipo de WinFS. Archivado del original el 3 de julio de 2007. Consultado el 30 de junio de 2007 .
  20. "WinFS: El sistema de archivos de Windows (Artículos técnicos de Microsoft Access 2002)" . MSDN . Microsoft . Octubre de 2003. Archivado del original el 21 de diciembre de 2003. Consultado el 1 de febrero de 2018 .
  21. "Guía del producto Windows Vista" . Microsoft . 2006. págs. 44–51 . Archivado del original (DOCX) el 1 de julio de 2011. Consultado el 1 de marzo de 2018 . 
  22. 1 2 3 4 5 Kati Dimitrova. "Acerca de las reglas de WinFS" . MSDN . Microsoft . Archivado del original el 26 de diciembre de 2008. Recuperado el 2 de marzo de 2018 .
  23. Bentz, Ben (31 de octubre de 2006). "Composición de consultas: Construyendo una búsqueda sobre otra búsqueda" . Blog Shell: Revealed . Microsoft . Archivado del original el 15 de diciembre de 2006. Recuperado el 2 de marzo de 2018 .
  24. "El magnate multimillonario Bill Gates aún lamenta el fracaso de WinFS de Vista."
  25. Nate Mook (29 de agosto de 2005). "Microsoft explica WinFS y lanza la versión beta 1" . BetaNews . Consultado el 2 de julio de 2007 .
  26. 1 2 Shishir Mehrotra (septiembre de 2005). Direcciones futuras de "WinFS": una visión general . Conferencia de desarrolladores profesionales de 2005. Microsoft. Archivado del original (PPT) el 12 de diciembre de 2005. Recuperado el 22 de mayo de 2023 a través de MicrosoftPDC Commnet..
  27. Chaloupov, Alexei (14 de marzo de 2006). "Arquitectura de WinFS" . En Olga, Dambit (ed.). WinFS (PPT) (presentación). pág. 4. Archivado (PPT) del original el 9 de diciembre de 2021. Recuperado el 22 de mayo de 2023 . 
  28. Erwyn van der Meer. "Primer vistazo a WinFS Beta 1" . Archivado del original el 9 de junio de 2007. Consultado el 3 de julio de 2007 .
  29. Vijay Bangaru. "Buzón de WinFS" . Blog del equipo de WinFS. Archivado del original el 22 de mayo de 2007. Consultado el 30 de junio de 2007 .
  30. 1 2 3 4 5 6 7 8 9 10 11 12 Richard Grimes. "Sistema revolucionario de almacenamiento de archivos permite a los usuarios buscar y administrar archivos según su contenido" . Revista MSDN. Archivado del original el 27 de junio de 2007. Consultado el 30 de junio de 2007 .
  31. 1 2 3 4 5 6 7 8 9 10 Shawn Wildermuth (julio de 2004). "Una perspectiva del desarrollador sobre WinFS: Parte 2" . MSDN . Microsoft . Recuperado el 30 de junio de 2007 .
  32. Vijay Bangaru. "Unificar, organizar, explorar e innovar. ¡Oh, Dios mío! (Parte 4)" . Blog del equipo de WinFS. Archivado del original el 18 de junio de 2007. Consultado el 30 de junio de 2007 .
  33. Thomas Rizzo, Sean Grimaldi (18 de octubre de 2004). "Una introducción a "WinFS" OPath" . MSDN . Microsoft . Consultado el 30 de junio de 2007 .
  34. 1 2 3 4 5 6 Neil Padgett. "Introducción de datos en WinFS con la sincronización de WinFS" . Blog del equipo de WinFS. Archivado del original el 17 de febrero de 2007. Consultado el 30 de junio de 2007 .
  35. Wei-Meng Lee (2005-09-07). "WinFS -StoreSpy" . Recuperado el 30-06-2007 .
  36. "Stefano Demiliani WeBlog: WinFS StoreSpy v0.8 para la compilación Longhorn de WinHEC 2004" . Consultado el 12 de marzo de 2007 .
  37. "StoreSpy debería convertirse en StoreEditor" . Archivado del original el 29/09/2007 . Consultado el 30/06/2007 .
  38. 1 2 Sanjay Nagamangalam. "Visualizando los tipos de WinFS" . Blog del equipo de WinFS. Archivado del original el 16 de agosto de 2007. Recuperado el 3 de julio de 2007 .
  39. Luiz Miranda. "Uso de OPather para ayudar a escribir consultas" . Blog del equipo de WinFS. Archivado del original el 19 de noviembre de 2007. Consultado el 30 de junio de 2007 .
  40. Shishir Mehrotra. "La aplicación estrella para que los usuarios se organicen" . Blog del equipo de WinFS. Archivado del original el 9 de marzo de 2007. Consultado el 30 de junio de 2007 .