stringtranslate.com

WinFS

WinFS (abreviatura de Windows Future Storage ) [1] era el nombre en clave de un proyecto cancelado [2] de sistema de gestión y almacenamiento de datos basado en bases de datos relacionales , desarrollado por Microsoft y demostrado por primera vez en 2003. Estaba pensado 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 y permite almacenar en ella cualquier tipo de información, siempre que exista un esquema bien definido para el tipo. Los elementos de datos individuales podrían entonces relacionarse entre sí mediante relaciones, que el sistema infiere basándose en ciertos atributos o que el usuario las declara explícitamente. Como los datos tienen un esquema bien definido, cualquier aplicación puede reutilizar los datos; y utilizando las relaciones, los datos relacionados se pueden organizar y recuperar de manera efectiva. Debido a que el sistema conoce la estructura y la intención de la información, se puede utilizar para realizar consultas complejas que permitan realizar búsquedas avanzadas a través de los datos y agregar varios elementos de datos explotando las relaciones entre ellos.

Si bien WinFS y su esquema de tipos compartidos hacen posible que una aplicación reconozca los diferentes tipos de datos, la aplicación aún debe codificarse para representar los diferentes tipos de datos. En consecuencia, no permitiría el desarrollo de una única aplicación que pueda ver o editar todos los tipos de datos; más bien, lo que WinFS permite que hagan las aplicaciones es comprender la estructura de todos los datos y extraer la información que pueden utilizar más. Cuando se presentó WinFS en la Conferencia de Desarrolladores Profesionales de 2003 , Microsoft también lanzó una presentación en video, llamada IWish, [3] que muestra interfaces simuladas que muestran cómo las aplicaciones expondrían interfaces que aprovechan un sistema de tipo unificado. Los conceptos mostrados en el video van desde aplicaciones que utilizan las relaciones de elementos para ofrecer dinámicamente opciones de filtrado hasta aplicaciones que agrupan múltiples tipos de datos relacionados y los representan en una presentación unificada.

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

Motivación

Muchos sistemas de archivos que se encuentran en los sistemas operativos comunes , incluido el sistema de archivos NTFS que se utiliza en las versiones modernas de Microsoft Windows, almacenan archivos y otros objetos solo como un flujo de bytes y tienen poca o ninguna información sobre los datos almacenados en los archivos. Estos sistemas de archivos también ofrecen una única forma de organizar los archivos, es decir, mediante directorios y nombres de archivos. [6] [7]

Debido a que un sistema de archivos no tiene conocimiento sobre 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 archivos, 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 documentos XML y datos relacionales, obtienen mejores resultados, ya que tienen una estructura estandarizada y requisitos de tiempo de ejecución. [9]

Además, un sistema de archivos tradicional puede recuperar y buscar datos basándose únicamente en el nombre del archivo, porque el único conocimiento que tiene sobre los datos es el nombre de los archivos que los almacenan. [8] Una mejor solución es etiquetar archivos con atributos que los describan. Los atributos son metadatos sobre los archivos, como el tipo de archivo (como documento , imagen , música , creador , etc.). [6] Esto permite buscar archivos por sus atributos, de maneras que no son posibles usando una jerarquía de carpetas, como buscar "imágenes que tengan la persona X" . Los atributos pueden ser reconocibles 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 atributos, de 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 todavía no ayuda a gestionar datos relacionados, ya que los elementos dispares no tienen ninguna relación definida. 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 fotografías y de quienes he recibido correo electrónico en el último mes" . Esta 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 elementos de datos según el modelo de datos, haciéndolo con un nivel satisfactorio de rendimiento.

Descripción general

WinFS reconoce de forma nativa diferentes tipos de datos, como imágenes , correos electrónicos , documentos , audio , videos , calendarios , contactos , en lugar de simplemente dejarlos como flujos de bytes sin analizar (como lo hacen la mayoría de los sistemas de archivos). Los datos almacenados y administrados por el sistema son instancias del tipo de datos reconocido por el tiempo de ejecución de WinFS. Los datos se estructuran mediante propiedades. Por ejemplo, una instancia de un tipo de currículum mostrará los datos exponiendo propiedades, como Nombre , Calificación educativa , Experiencia . Cada propiedad puede ser de tipo simple ( cadenas , enteros , fechas ) o de tipos complejos ( contactos ). [8] [10] Diferentes tipos de datos exponen diferentes propiedades. Además de eso, WinFS también permite relacionar diferentes instancias de datos; como un documento y un contacto pueden estar relacionados mediante una relación de Autor por . [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 de WinFS, puede usar el esquema para encontrar la estructura de datos y puede usar la información. Por lo tanto, 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 utilizar relaciones y datos relacionados para crear filtros dinámicos para presentar la información con la que trata la aplicación. La API de WinFS abstrae aún más la tarea de acceder a los datos. Todos los tipos de WinFS se exponen como objetos .NET y las propiedades del objeto se asignan 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 diferentes archivos, se eliminan las molestias de sincronizar los diferentes almacenes cuando los datos cambian. [11] Por lo tanto, WinFS puede reducir las redundancias. [6] [9]

El acceso a todos los datos del sistema permite búsquedas complejas de datos en todos los elementos de datos administrados por WinFS. En el ejemplo usado anteriormente ( "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 fotografías y con quienes he tenido correos electrónicos durante el último mes" ), WinFS puede atravesar la relación de asunto de Todas las fotos para encontrar los artículos de contacto . Del mismo modo, puede filtrar todos los correos electrónicos del último mes y acceder a la relación comunicada para llegar a los contactos. Luego se pueden determinar los contactos comunes a partir de los dos conjuntos de resultados y recuperar su número de teléfono accediendo a la propiedad adecuada de los elementos de contacto.

Además de 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), así como también datos no estructurados (como archivos). Almacena los componentes no estructurados como archivos mientras 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 tiempo 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 externas que serían necesarias para representar las relaciones. WinFS incluye asignaciones para esquemas XML y de objetos de forma predeterminada. Se deben especificar asignaciones para otros esquemas. Los esquemas de objetos se especifican en XML; WinFS genera código para mostrar los esquemas como clases .NET . ADO.NET se puede utilizar para especificar directamente el esquema relacional, aunque se debe proporcionar una asignación al esquema del objeto para mostrarlo 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; las búsquedas y consultas utilizan los índices para completar rápidamente las operaciones, de forma muy parecida 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 los años 1990. Apodado Object File System , se suponía que se incluiría como parte de El Cairo . Se suponía que OFS tenía potentes funciones de agregación de datos, [12] pero el proyecto de El Cairo fue archivado, y con él, OFS. Sin embargo, más adelante, durante el desarrollo de COM , se planificó 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 nunca se materializó, y se concibió una tecnología similar, el Sistema de archivos relacional (RFS), para su lanzamiento 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 fue descartado y sirvió como base para WinFS. [12] Inicialmente se planeó incluir WinFS en Windows Vista , [14] y la compilación 4051 de Windows Vista, luego 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 sufrió. de importantes problemas de rendimiento. [12] En agosto de 2004, Microsoft anunció que WinFS no se enviaría con Windows Vista; en cambio, estaría disponible como una actualización descargable después del lanzamiento de Vista. [12]

El 29 de agosto de 2005, [12] Microsoft silenciosamente puso la Beta 1 de WinFS a disposición de los suscriptores de MSDN. Funcionó en Windows XP y requirió .NET Framework para ejecutarse. La API de WinFS se incluyó en el espacio de nombres System.Storage . [15] La versión beta se actualizó el 1 de diciembre de 2005 para que sea compatible con la versión 2.0 de .NET Framework. [16] WinFS Beta 2 se planeó para algún tiempo más tarde en 2006, [17] y se suponía que incluiría integración con Windows Desktop Search , de modo que los resultados de búsqueda incluyan resultados tanto de archivos normales como de tiendas WinFS, además de permitir el acceso a WinFS. datos utilizando ADO.NET . [18]

El 23 de junio de 2006, el equipo de WinFS de Microsoft anunció que WinFS ya no se entregaría como un producto separado, [4] [19] y que algunos componentes pasarían a formar parte de otras tecnologías. Muchas de las características principales que Microsoft pretendía proporcionar 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] 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 a Windows Vista. [23]

Ejemplos de usos de la tecnología son los componentes de mapeo relacional de objetos en ADO.NET Entity Framework ; soporte para datos no estructurados, modo de operación sin administrador, soporte para objetos del sistema de archivos a través del FILESTREAMtipo de datos y datos jerárquicos en SQL Server 2008 , entonces con el nombre en código Katmai , así como integración con las API de Win32 y Windows Shell y soporte para atravesar jerarquías mediante 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ó a WinFS como su mayor decepción en Microsoft y que la idea de WinFS se adelantó a su tiempo, que resurgirá. [24]

Almacenamiento de datos

Arquitectura

Arquitectura de la pila WinFS

WinFS utiliza un motor relacional, que se deriva de SQL Server 2005, [25] para proporcionar el mecanismo de relaciones de datos. Los almacenes WinFS son simplemente archivos de bases de datos de SQL Server (.MDF) con el atributo FILESTREAM establecido. [26] Estos archivos se almacenan en la carpeta de acceso restringido denominada "Información del volumen del sistema" (ubicada en la raíz del volumen), [27] en carpetas bajo la carpeta "WinFS" con nombres de GUID de estos almacenes. [26]

En la parte inferior de la pila de WinFS se encuentra WinFS Core , que interactúa con el sistema de archivos y proporciona capacidades de direccionamiento y acceso a archivos. [8] El motor relacional aprovecha los servicios principales de WinFS para presentar un almacén estructurado y otros servicios como el bloqueo , que el tiempo de ejecución de WinFS utiliza para implementar la funcionalidad. El tiempo 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 (WinFS File Promotion Manager) , que interactúa con el sistema de archivos subyacente

Permite el acceso programático a sus funciones a través de un conjunto de API de .NET Framework . Estos permiten que las aplicaciones definan tipos de datos personalizados, definan relaciones entre datos, almacenen y recuperen información y permitan búsquedas avanzadas. [6] [8] Las aplicaciones pueden luego 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 tiempo de ejecución de WinFS puede aplicar ciertas relaciones por sí mismo; por ejemplo, si los valores de la propiedad del tema de una imagen y la propiedad del nombre de un contacto son los mismos, entonces 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 llega a definir 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. Pero 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 permitir que WinFS comprenda cómo leer y así poder buscar y analizar (digamos) un archivo PDF . Al utilizar 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 cada una 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 documentos personales se pueden conservar en diferentes almacenes. WinFS, de forma predeterminada, proporciona solo una tienda, denominada "DefaultStore". [12] Las tiendas WinFS se exponen como objetos de shell, similares a las carpetas virtuales , que generan dinámicamente una lista de todos los elementos presentes en la tienda 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 de WinFS se denomina elemento de WinFS . [6] [30] Un elemento de 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. En otras palabras, los enlaces especifican la relación de los datos con otros elementos de datos. Los enlaces se almacenan físicamente mediante un identificador de enlace, que especifica el nombre y la intención de la relación, como el tipo de o la composición . [6] El identificador del 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 de antemano al tiempo de ejecución de WinFS un esquema XML que defina la estructura de los elementos de datos que se almacenarán en WinFS. [6] En Beta 1 de WinFS, el ensamblaje del esquema debía agregarse al GAC antes de poder usarse.

Modelo de datos

WinFS modela 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, de modo que la información almacenada en el elemento de datos pueda estar disponible para cualquier aplicación que la solicite. Esto se hace 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 WinFS predefinidos incluyen esquemas para documentos, correo electrónico, citas, tareas, medios, audio, video y también incluyen esquemas del sistema que incluyen configuración, programas y otros datos relacionados con el sistema. [8] Los esquemas personalizados se pueden definir por 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 pueden estar 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 WinFS está estrechamente asociado con el concepto de clases y herencia del marco .NET . Se puede crear un nuevo tipo extendiendo y anidando cualquier tipo predefinido. [6]

WinFS proporciona cuatro tipos base predefinidos: elementos , relaciones , tipos escalares y tipos anidados . [6] Un Elemento es el objeto de datos fundamental que se puede almacenar, y una Relación 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 elemento pueden ser un ScalarType, que define la unidad más pequeña de información que puede tener una propiedad, o un NestedType, que es una colección de más de un ScalarTypes y/o NestedTypes. 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., se puede almacenar en una tienda WinFS como una especialización del tipo Elemento. [30] De forma predeterminada, WinFS proporciona tipos de elementos para archivos, contactos, documentos, imágenes, audio, vídeo, calendario y mensajes. El elemento de archivo puede almacenar cualquier dato genérico, que se almacena en sistemas de archivos como archivos. Pero a menos que se proporcione un esquema avanzado para el archivo, al definirlo como un elemento especializado, WinFS no podrá acceder a sus datos. Un elemento de archivo de este tipo solo puede admitir la relación con otros elementos. [6]

Definiendo un nuevo tipo

Un desarrollador puede ampliar cualquiera de estos tipos, o el tipo base Elemento, para proporcionar un tipo para sus datos personalizados. Los datos contenidos en un Artículo se definen en términos de propiedades o campos que contienen los datos reales. Por ejemplo, un contacto de artículo puede tener un campo Nombre que sea ScalarType y un campo Dirección , NestedType, que además se compone de dos ScalarTypes. Para definir este tipo, se amplía 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 que se define el tipo, se debe definir un esquema, que denota el tipo primitivo de cada campo, por ejemplo, el campo Nombre es una Cadena, el campo Dirección es una clase de Dirección definida personalizada, cuyos campos son Cadenas. Otros tipos primitivos que admite WinFS 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ándolo. Sólo los campos marcados como obligatorios deben completarse durante el guardado inicial. [30] Otros campos pueden ser completados más tarde por el usuario, o puede que no se completen en absoluto. Si es necesario agregar más campos de propiedades, como la fecha de la última conversación , este tipo se puede ampliar para acomodarlos. Los tipos de elementos para otros datos se pueden definir de manera similar.

Relaciones

WinFS crea tablas para todos los elementos definidos. [31] Todos los campos definidos para el Artículo forman las columnas de la tabla y todas las instancias del Artículo se almacenan como filas en la tabla para los Artículos respectivos. Siempre que algún campo de la tabla hace referencia a datos de 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 nombre de la relación. El tiempo de ejecución de WinFS administra los esquemas de relación. [30] Todos los elementos 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 objetos de cualquier tipo de elemento y puede utilizar los datos del objeto, sin ser consciente de la estructura física en la que se almacenaron los datos. [6]

Los tipos de WinFS se exponen como clases .NET, de las que se pueden crear instancias como objetos .NET. Los datos se almacenan en estas instancias de tipo estableciendo sus propiedades. Una vez hecho esto, se conservan en la tienda WinFS. Se accede a una tienda WinFS mediante una clase ItemContext (consulte la sección Recuperación de datos para obtener más detalles). ItemContext permite el acceso transaccional a la tienda WinFS; es decir, todas las operaciones desde que se vincula un objeto ItemContext a una tienda 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; más bien se escriben en un registro en memoria. Sólo cuando se cierra la conexión se escriben los cambios en el disco en un 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 una tienda WinFS.

 // Conéctese a la tienda WinFS predeterminada usando ( ItemContext ic = ItemContext . Open ()) { // Cree el contacto y establezca los datos en las propiedades apropiadas ContactEAddress contact = new ContactEAddress () { Name = new PersonName () { // Nombre es un ComplexType Displayname = "Doe, John" , FirstName = "John" , LastName = "Doe" }, TelephoneNumber = new TelephoneNumber () { // El número de teléfono es un ComplexType Country = CountryCode . Antártida , código de área = 4567 , número = 9876543210 }, edad = 111 // La edad es un tipo simple };                                                  //Agrega el objeto a la carpeta personal del usuario. //Esto relaciona el elemento con el pseudotipo Carpeta, para //compatibilidad con versiones anteriores, ya que permite acceder al elemento en una //jerarquía de carpetas para aplicaciones que no son nativas de WinFS. Carpeta que contieneCarpeta = UserDataFolder . BuscarMiCarpetaPersonal (); que contieneCarpeta . OutFolderMemberRelationship . AddItem ( ic , contacto );          //Buscar un documento y relacionarlo. 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. usando ( ItemSearcher buscador = Documento . GetSearcher ( ic )) { Documento d = buscador . Buscar ( @"Título = 'Algún documento en particular'" ); d . OutAuthoringRelationship . AddItem ( ic , contacto ); } //Dado que sólo se puede encontrar un documento, el método ItemContext.FindOne() //también podría usarse.                  //Encontrar una imagen y relacionarla usando ( ItemSearcher buscador = Imagen . GetSearcher ( ic )) { Imagen p = buscador . Buscar ( @"Ocasión = 'Graduación' y Secuencia = '3'" ); pag . OutSubjectRelationship . AddItem ( ic , contacto ); }              //Persiste en la tienda y cierra la referencia a la tienda ic . Actualizar (); }  

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, dando lugar a 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 como resultado una red de relaciones, que se denomina relación de muchos a muchos. La creación de una relación entre dos elementos 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 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 un mapeo entre dos elementos, un origen y un destino. La fuente tiene una relación saliente, mientras que el destino tiene una relación entrante. [31] WinFS proporciona tres tipos de relaciones primitivas: relación de retención , relación de referencia y relación de incrustación . [6] Cualquier relación personalizada entre dos tipos de datos son instancias de estos tipos de relaciones.

Las relaciones entre dos elementos se pueden establecer mediante programación mediante la aplicación que crea los datos, o el usuario puede usar el explorador de elementos de WinFS para relacionar manualmente los elementos. [31] Un navegador de elementos WinFS también puede mostrar gráficamente los elementos y cómo están relacionados, para permitir al usuario 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 funcionan con datos y relaciones de datos. Por ejemplo, se puede crear una regla que establezca que cada vez que se crea un elemento que contiene el campo "Nombre" y si el valor de ese campo es algún nombre en particular, se debe crear una relación que relacione el elemento con algún 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 Notificar cada vez que se reciba un correo de un contacto en particular. [22] Las reglas de WinFS también se pueden utilizar para agregar nuevos campos de propiedades a elementos de datos existentes. [22]

Las reglas de WinFS también se exponen como objetos .NET CLR. Como tal, cualquier regla puede usarse para cualquier propósito. Una regla puede incluso ampliarse heredándola para formar una nueva regla que consista en la condición y acción de la regla principal más algo más. [22]

RAV

WinFS admite la creación de vistas de aplicaciones enriquecidas (RAV) agregando diferentes datos en un formato de tabla virtual. A diferencia de la vista de base de datos , donde cada elemento individual solo puede ser un valor escalar, los RAV pueden tener elementos complejos o incluso colecciones de elementos. Los datos reales pueden pertenecer a múltiples tipos de datos o instancias e incluso pueden recuperarse atravesando relaciones. [10] Los RAV están intrínsecamente paginados (dividiendo el conjunto completo de datos en páginas más pequeñas que contienen subconjuntos desconectados de los datos) mediante el tiempo 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. RAV también admite la modificación de la vista según diferentes parámetros de agrupación. También se pueden consultar las vistas.

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 una seguridad a nivel de recurso compartido que controla el acceso a su recurso compartido 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 suficientes privilegios para acceder a él. También en Vista existe el concepto de "nivel de integridad" para una aplicación. No se puede acceder a datos de mayor integridad mediante 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 el almacén WinFS según algunos criterios, [8] que devuelve un conjunto enumerable de elementos que coinciden con los criterios. Los criterios para la consulta se especifican utilizando el lenguaje de consulta OPath . Los datos devueltos están disponibles como instancias de esquemas de tipo, conforme al modelo de objetos .NET . [32] Se puede acceder a los datos que contienen accediendo a las propiedades de los objetos individuales. [31]

Las relaciones también se exponen como propiedades. Cada elemento de WinFS tiene dos propiedades, denominadas IncomingRelationships y OutgoingRelationships , que brindan 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 adecuada. [10] [31]

El hecho de que se pueda acceder a los datos mediante su descripción, en lugar de su ubicación, se puede utilizar para proporcionar capacidades organizativas al usuario final sin limitarse a la organización jerárquica como se utiliza en los sistemas de archivos. En un sistema de archivos, cada archivo o carpeta está contenido en una sola carpeta. Pero los elementos de WinFS pueden participar en cualquier número de relaciones de tenencia, y también con cualquier otro elemento. Como tal, los usuarios finales no se limitan únicamente a la organización de archivos/carpetas. Más bien, un contacto puede convertirse en un contenedor de documentos; una imagen, un contenedor para contactos, etc. Para compatibilidad heredada, WinFS incluye un pseudotipo llamado Carpeta, que está presente solo para participar en relaciones de mantenimiento y emular la organización de archivos/carpetas. Dado que cualquier elemento de WinFS puede estar relacionado con más de un elemento de 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 varios 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 los 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 clase ItemContext , que está vinculada a un almacén de WinFS. El objeto ItemContext se puede utilizar para abarcar la búsqueda en toda la tienda o en un subconjunto de ella. También proporciona acceso transaccional a la tienda. [15] Un objeto de esta clase puede generar 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 interfaz de usuario para mostrarlo en masa o enumerarlo individualmente. [30] Los elementos de propiedades también se pueden modificar y luego almacenar nuevamente 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 la tienda) cuando se realizan las consultas o los cambios se fusionan en la tienda.

También se puede acceder a elementos relacionados a través de los elementos. Las propiedades IncomingRelationships y OutgoingRelationships dan acceso a todo el conjunto de instancias de relación, escritas según el nombre de la relación. Estos objetos de relación exponen el otro elemento a través de una propiedad. Entonces, por ejemplo, si una imagen está relacionada con otra imagen, se puede acceder a ella atravesando la relación como:

ContactsCollection contactos = imagen . Relaciones salientes . Cast ( tipo de ( Contacto )). Valor ; // Esto recupera la colección de todas las relaciones salientes de un objeto de imagen // y filtra los contactos accesibles desde ellos y recupera su valor.   // O la relación se puede especificar estáticamente como ContactsCollection contactos = imagen . Relaciones salientes . Relación de contacto externo . Contacto ;   

Una cadena de consulta OPath permite expresar los parámetros que se consultarán para que se especifiquen mediante las propiedades del elemento , los elementos incrustados y las relaciones . [ cita necesaria ] Puede especificar una única condición de búsqueda, 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 usando C# como && , || operadores , = , != así como su equivalente en inglés como EQUAL , NOT EQUAL . También se admiten operadores similares a SQL como LIKE , GROUP BY y ORDER BY , al igual que las condiciones comodín. [ cita necesaria ] Entonces, "título COMO 'cualquier*'" es una cadena de consulta válida. Estos operadores se pueden utilizar para ejecutar búsquedas complejas como

usando ( 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 en relación. El // primer parámetro define el alcance de la búsqueda. Un ItemContext como alcance significa // se debe buscar en toda la tienda. El alcance puede limitarse a un conjunto de elementos que pueden // estar en una relación de tenencia con los contactos. En ese caso, el conjunto se pasa como // el alcance de la búsqueda. Buscador ItemSearcher = OutContactRelationship . GetTargetSearcher ( ic , tipo de ( Contacto )); Contactos de ContactCollection = buscador . 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 de hecho 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 fotos tengo" . De manera similar, se podrían tener en cuenta más relaciones para limitar aún más [10] [31] Además, un procesador de consultas en lenguaje natural, que analiza las consultas en lenguaje natural y crea una cadena de consulta OPath bien formada para buscar mediante 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 utilicen WinFS para almacenar facturas.

Diferentes relaciones especifican un conjunto diferente de datos. Entonces, cuando se realiza una búsqueda que abarca múltiples relaciones, los diferentes conjuntos de datos se recuperan individualmente y se calcula una unión de los diferentes conjuntos. El conjunto resultante contiene sólo aquellos elementos de datos que corresponden a todas las relaciones. [31]

Notificaciones

WinFS incluye un mejor soporte para manejar datos que cambian con frecuencia. Al utilizar las notificaciones de WinFS , las aplicaciones eligen recibir notificaciones sobre los cambios en los elementos de datos seleccionados . WinFS generará un ItemChangedEvent , utilizando el modelo de evento .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 administración, recuperación y almacenamiento de reglas de notificación del usuario final y preferencias para cambios en elementos en el almacén de datos. Usando Information Agent, es posible definir automáticamente relaciones con nuevos elementos basados ​​en eventos como citas, con un ejemplo es que las citas se pueden relacionar con fotos basadas en las fechas en que se tomaron las fotos, permitiendo consultas de cumpleaños o días festivos sin necesidad de conocer las fechas reales de dichos eventos (" buscar todas las fotos tomadas en este cumpleaños "). Otros ejemplos incluyen mover automáticamente nuevos elementos a carpetas específicas según una regla determinada por las horas de las citas y las fechas en que se tomaron las fotos (" cuando importo una foto tomada durante un evento comercial, la muevo a la carpeta Eventos comerciales ") o más complejos. posibilidades. 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, envío una notificación a mi teléfono ") y es similar a la funcionalidad de Reglas y Alertas de Microsoft Outlook.

Compartir datos

WinFS permite compartir datos fácilmente entre aplicaciones y entre múltiples almacenes WinFS, que pueden residir en diferentes computadoras, copiándolos hacia y desde ellos. [34] Un elemento de 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 de WinFS, no admitirá los servicios avanzados proporcionados por WinFS.

La API de WinFS también proporciona cierta compatibilidad para compartir con aplicaciones que no son WinFS. WinFS expone un objeto de shell para acceder a los almacenes de WinFS. Este objeto asigna elementos de WinFS a una jerarquía de carpetas virtuales y cualquier aplicación puede acceder a él. [12] Las carpetas virtuales pueden compartir automáticamente con los usuarios el nuevo contenido al que hace referencia la consulta (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 de shell heredado. [34] Los formatos de archivos que no son WinFS se pueden almacenar en las tiendas 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 tiendas WinFS, sujeto a alguna condición predefinida, como " compartir sólo fotos " o " compartir fotos que tengan un contacto X asociado ". [34] Las tiendas pueden estar en diferentes computadoras. La sincronización se realiza de igual a igual ; 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 una 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 de WinFS como objetos de nivel superior en la vista Mi PC . [12] Los archivos se pueden copiar dentro y fuera de las tiendas, así como también se pueden usar aplicaciones directamente para guardarlos allí. Incluso carpetas como Mis documentos se pueden redirigir a las tiendas. [12] WinFS utiliza complementos Importador para analizar los archivos a medida que se importaban al almacén y crear esquemas y objetos WinFS adecuados y, al sacar los objetos, volver a empaquetarlos en archivos. [34] Si los importadores de ciertos archivos no están instalados, se almacenan como tipos de archivos genéricos .

Microsoft Delirio

Microsoft Rave es una aplicación que se incluye con WinFS Beta 1. Permite la sincronización de dos o más almacenes WinFS y admite la sincronización en modo de malla completa , así como la topología del concentrador central . Durante la sincronización, Microsoft Rave determinará los cambios realizados en cada tienda desde la última sincronización y los actualizará en consecuencia. Al aplicar los cambios también detecta si hay algún conflicto, es decir, se han cambiado los mismos datos en ambas tiendas desde la última sincronización. Registrará los datos conflictivos para su posterior resolución o los resolverá inmediatamente. Microsoft Rave utiliza tecnología de igual a igual para comunicarse y transferir datos.

TiendaSpy

WinFS incluía StoreSpy , un navegador de elementos de WinFS que podría usarse para explorar 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 las tiendas WinFS presentando una vista jerárquica de los elementos de WinFS. Generaba automáticamente carpetas virtuales basadas en permisos de acceso, fechas y otros metadatos, y las presentaba en una vista de árbol jerárquico, similar a como se presentan las carpetas tradicionales. La aplicación generaba pestañas para diferentes tipos de elementos. StoreSpy permitía ver elementos , relaciones , conjuntos múltiples , elementos anidados , extensiones [36] y otros tipos en la tienda junto con sus metadatos completos. También presentó una interfaz de búsqueda para realizar búsquedas manuales y guardarlas como carpetas virtuales. La aplicación también presentó una vista gráfica de las reglas de 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 fue recortado antes de que pudiera materializarse.

Escriba navegador

WinFS también incluye otra aplicación, llamada WinFS Type Browser , que se puede utilizar para explorar los tipos de WinFS, así como para visualizar la relación jerárquica entre los tipos de WinFS. [38] Un tipo de WinFS, tanto los tipos integrados como los esquemas personalizados, se pueden 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 amplían el esquema de tipos. Sin embargo, aunque se incluyó con WinFS, se lanzó como una herramienta no compatible. [38]

OPadre

WinFS Beta 1 también incluye una aplicación no compatible, denominada OPather . [39] Presenta una interfaz gráfica para escribir consultas Opath. Se puede utilizar seleccionando el tipo de objeto de destino y especificando los parámetros de la consulta. También incluye una función de finalización de parámetros similar a Intellisense . Luego se puede utilizar 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. Tenía el nombre en código "Proyecto Naranja" y supuestamente se creó utilizando Windows Presentation Foundation . [40] Se suponía que proporcionaría exploración de elementos almacenados en los almacenes WinFS, y se suponía que las relaciones de datos serían una parte destacada del modelo de navegación. Se suponía que también permitiría a las personas organizar gráficamente las tiendas WinFS, generando muchos de los conceptos mostrados en el archivo WMV de video conceptual de IWish. Sin embargo, dado que el proyecto WinFS dejó de funcionar, se desconoce el estado de este proyecto.

Ver también

Referencias

  1. ^ "Windows filtrado insinúa cambios por venir". ZDNet . CBS interactivo . 30 de septiembre de 2007. Archivado desde el original el 30 de septiembre de 2007.
  2. ^ Schofield, Jack (29 de junio de 2006). "Por qué WinFS tuvo que desaparecer". El guardián . Noticias y medios de Guardian . Consultado el 9 de diciembre de 2010 .
  3. ^ "Vídeo del concepto IWish". Microsoft. Archivado desde el original el 2 de junio de 2006 . Consultado el 14 de julio de 2008 .
  4. ^ ab Quentin Clark (23 de junio de 2006). "Actualización de WinFS". Qué hay en la tienda . Blogs de MSDN . Consultado el 23 de junio de 2006 .
  5. ^ a B C Quentin Clark. "¿Dónde está WinFS ahora?". Archivado desde el original el 17 de mayo de 2008 . Consultado el 17 de mayo de 2008 .
  6. ^ abcdefghijklmnopqrstu vwx Shawn Wildermuth (30 de junio de 2006). "La perspectiva de un desarrollador sobre WinFS: parte 1". MSDN . Consultado el 30 de junio de 2007 .
  7. ^ abcd Vijay Bangaru. "Unificar, organizar, explorar e innovar. ¡Dios mío! (Parte 2)". Blog del equipo WinFS. Archivado desde el original el 9 de junio de 2007 . Consultado el 30 de junio de 2007 .
  8. ^ abcdefghijk Sean Grimaldi (13 de septiembre de 2006). "Los archivos WinFS: Divide et Impera". MSDN . Consultado el 30 de junio de 2007 .
  9. ^ ab Thomas Rizzo (13 de septiembre de 2006). "WinFS 101: Presentación del nuevo sistema de archivos de Windows". MSDN . Consultado el 30 de junio de 2007 .
  10. ^ abcdefghijk "WinFS en The .NET Show". Microsoft . Archivado desde el original el 5 de enero de 2009 . Consultado el 4 de julio de 2007 .[ enlace muerto permanente ]
  11. ^ Vijay Bangaru. "Unificar, organizar, explorar e innovar. ¡Dios mío! (Parte 1)". Blog del equipo WinFS. Archivado desde el original el 8 de julio de 2007 . Consultado el 30 de junio de 2007 .
  12. ^ abcdefghijklmnopq Paul Thurrott. "Vista previa de Windows Storage Foundation (WinFS)". Archivado desde el original el 2 de julio de 2007 . Consultado el 30 de junio de 2007 .
  13. ^ ab "Mi cita con Destiny, err... Almacenamiento integrado". Archivado desde el original el 31 de octubre de 2007 . Consultado el 30 de junio de 2007 .
  14. ^ Cath Everett. "¿Valdrá la pena el dolor de Longhorn?". ZDNet. Archivado desde el original el 12 de marzo de 2010 . Consultado el 30 de junio de 2007 .
  15. ^ ab "WinFS para desarrolladores". NTFS.com . Consultado el 4 de julio de 2007 .
  16. ^ Vijay Bangaru. "La actualización de WinFS Beta 1 ya está disponible". Blog del equipo WinFS. Archivado desde el original el 20 de mayo de 2007 . Consultado el 30 de junio de 2007 .
  17. ^ Shan Sinha. "¡Presentamos la próxima versión de WinFS en Tech Ed 2006, en Boston! ¡Únase a nosotros!". Blog del equipo WinFS. Archivado desde el original el 8 de marzo de 2007 . Consultado el 30 de junio de 2007 .
  18. ^ Sanjay Anand. "Mi cita con Destiny, err... Almacenamiento integrado". Blog del equipo WinFS. Archivado desde el original el 31 de octubre de 2007 . Consultado el 30 de junio de 2007 .
  19. ^ Quentin Clark. "Actualización a la Actualización". Blog del equipo WinFS. Archivado desde el 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 desde el original el 21 de diciembre de 2003 . Consultado el 1 de febrero de 2018 .
  21. ^ "Guía de productos de Windows Vista". Microsoft . 2006, págs. 44–51. Archivado desde el original (DOCX) el 1 de julio de 2011 . Consultado el 1 de marzo de 2018 .
  22. ^ abcde Kati Dimitrova. "Acerca de las reglas de WinFS". MSDN . Microsoft . Archivado desde el original el 26 de diciembre de 2008 . Consultado el 2 de marzo de 2018 .
  23. ^ Bentz, Ben (31 de octubre de 2006). "Composición de la consulta: creación de una búsqueda a partir de otra búsqueda". Shell: Blog revelado . Microsoft . Archivado desde el original el 15 de diciembre de 2006 . Consultado el 2 de marzo de 2018 .
  24. ^ "El barón multimillonario Bill Gates todavía lamenta el fallecimiento de WinFS de Vista".
  25. ^ Nate Mook (29 de agosto de 2005). "MS explica WinFS y lanza Beta 1". BetaNoticias . Consultado el 2 de julio de 2007 .
  26. ^ ab Shishir Mehrotra (septiembre de 2005). Direcciones futuras de "WinFS": descripción general. Conferencia de desarrolladores profesionales 2005. Microsoft. Archivado desde el original (PPT) el 12 de diciembre de 2005 . Consultado el 22 de mayo de 2023 a través de MicrosoftPDC Commnet. {{cite conference}}: Enlace externo en |via=( ayuda ) .
  27. ^ Chaloupov, Alexei (14 de marzo de 2006). "Arquitectura WinFS". En Olga, Dambit (ed.). WinFS (PPT) (presentación). pag. 4. Archivado (PPT) desde el original el 9 de diciembre de 2021 . Consultado el 22 de mayo de 2023 .
  28. ^ Erwyn van der Meer. "Primer vistazo a WinFS Beta 1". Archivado desde el original el 9 de junio de 2007 . Consultado el 3 de julio de 2007 .
  29. ^ Vijay Bangaru. "Buzón de WinFS". Blog del equipo WinFS. Archivado desde el original el 22 de mayo de 2007 . Consultado el 30 de junio de 2007 .
  30. ^ abcdefghijkl Richard Grimes. "El revolucionario sistema de almacenamiento de archivos permite a los usuarios buscar y administrar archivos según el contenido". Revista MSDN. Archivado desde el original el 27 de junio de 2007 . Consultado el 30 de junio de 2007 .
  31. ^ abcdefghij Shawn Wildermuth (julio de 2004). "La perspectiva de un desarrollador sobre WinFS: parte 2". MSDN . Microsoft . Consultado el 30 de junio de 2007 .
  32. ^ Vijay Bangaru. "Unificar, organizar, explorar e innovar. ¡Dios mío! (Parte 4)". Blog del equipo WinFS. Archivado desde el original el 18 de junio de 2007 . Consultado el 30 de junio de 2007 .
  33. ^ Thomas Rizzo, Sean Grimaldi (18 de octubre de 2004). "Introducción a" WinFS "OPath". MSDN . Microsoft . Consultado el 30 de junio de 2007 .
  34. ^ abcdef Neil Padgett. "Obtener datos en WinFS con sincronización WinFS". Blog del equipo WinFS. Archivado desde el original el 17 de febrero de 2007 . Consultado el 30 de junio de 2007 .
  35. ^ Wei-Meng Lee (7 de septiembre de 2005). "WinFS-StoreSpy" . Consultado el 30 de junio de 2007 .
  36. ^ "WeBlog de Stefano Demiliani: WinFS StoreSpy v0.8 para WinHEC 2004 Longhorn Build" . Consultado el 12 de marzo de 2007 .
  37. ^ "StoreSpy debería convertirse en StoreEditor". Archivado desde el original el 29 de septiembre de 2007 . Consultado el 30 de junio de 2007 .
  38. ^ ab Sanjay Nagamangalam. "Visualización de tipos de WinFS". Blog del equipo WinFS. Archivado desde el original el 16 de agosto de 2007 . Consultado el 3 de julio de 2007 .
  39. ^ Luis Miranda. "Uso de OPather para ayudar a escribir consultas". Blog del equipo WinFS. Archivado desde el original el 19 de noviembre de 2007 . Consultado el 30 de junio de 2007 .
  40. ^ Shishir Mehrotra. "La aplicación excelente para organizar a los usuarios". Blog del equipo WinFS. Archivado desde el original el 9 de marzo de 2007 . Consultado el 30 de junio de 2007 .

enlaces externos