WinFS (abreviatura de Windows Future Storage ) [1] era el nombre en clave de un proyecto de sistema de gestión y almacenamiento de datos cancelado [2] basado en bases de datos relacionales , desarrollado por Microsoft y demostrado por primera vez en 2003 como un subsistema de almacenamiento avanzado para el sistema operativo Microsoft Windows. sistema , 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. A continuación, los elementos de datos individuales podrían relacionarse mediante relaciones, que el sistema infiere en función de ciertos atributos o el usuario las declara explícitamente. Como los datos tienen un esquema bien definido, cualquier aplicación puede reutilizarlos; y utilizando las relaciones, los datos relacionados pueden organizarse y recuperarse de forma eficaz. 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 la búsqueda avanzada a través de los datos y la agregación de varios elementos de datos aprovechando las relaciones entre ellos.
Si bien WinFS y su esquema de tipo compartido 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 sola aplicación que pueda ver o editar todos los tipos de datos; más bien, lo que WinFS permite que las aplicaciones hagan es comprender la estructura de todos los datos y extraer la información que pueden usar 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] mostrando interfaces de maqueta que mostraban cómo las aplicaciones expondrían interfaces que aprovechan un sistema de tipos unificado. Los conceptos que se muestran en el video van desde aplicaciones que utilizan las relaciones de elementos para ofrecer opciones de filtrado dinámicamente 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] con algunas de sus tecnologías de componentes integradas en ADO.NET y Microsoft SQL Server . [5]
Motivación
Muchos sistemas de archivos que se encuentran en sistemas operativos comunes , incluido el sistema de archivos NTFS que se usa 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 proporcionan una única forma de organizar los archivos, a saber, a través de directorios y nombres de archivos. [6] [7]
Debido a que un sistema de archivos no tiene conocimiento acerca de los datos que almacena, [6] aplicaciones tienden a utilizar sus propios, a menudo de propiedad , los formatos de archivo . Esto dificulta el intercambio de datos entre múltiples aplicaciones. Se vuelve difícil crear una aplicación que procese información de varios 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 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 almacenan los datos. [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 formas que no son posibles usando una jerarquía de carpetas, como buscar "imágenes que tengan 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 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 administrar los 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 fotos y con quienes he tenido 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 tanto la semántica como las relaciones de datos definidas. [6] [7] WinFS tiene como objetivo proporcionar tal 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 a un nivel satisfactorio de rendimiento.
Descripción general
WinFS reconoce de forma nativa diferentes tipos de datos, como imagen , correo electrónico , documento , audio , video , calendario , contacto , en lugar de simplemente dejarlos como bytestreams sin analizar (como 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 al exponer propiedades, como Nombre , Calificación educativa , Experiencia . Cada propiedad puede ser de un tipo simple ( cadenas , números enteros , fechas ) o tipos complejos ( contactos ). [8] [10] Los diferentes tipos de datos exponen diferentes propiedades. Además de eso, WinFS también permite que diferentes instancias de datos se relacionen juntas; como un documento y un contacto pueden estar relacionados por una relación de Autor . [7] [10] Las relaciones también se exponen como propiedades; por ejemplo, si un documento está relacionado con un contacto por 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 puede usar la información. Por lo tanto, una aplicación tiene acceso a todos los datos del sistema aunque el desarrollador no tuvo 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 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 con las propiedades del objeto que 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 las diferentes tiendas cuando los datos cambian. [11] Por 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 fotos y con quienes he tenido correos electrónicos en el último mes" ), WinFS puede atravesar la relación de asunto de todas las fotos para encontrar los elementos de contacto . Del mismo modo, puede filtrar todos los correos electrónicos del último mes y acceder a los comunicados con relación para llegar a los contactos. Los contactos comunes se pueden calcular a partir de los dos conjuntos de resultados y se puede recuperar su número de teléfono accediendo a la propiedad adecuada de los elementos de 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), así como también datos no estructurados (como archivos). Almacena los componentes no estructurados como archivos mientras almacena los metadatos estructurados en la tienda estructurada. [10] Internamente, WinFS usa 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. Deben especificarse las 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 que aparezca como clases. [10] Los recorridos de relaciones se realizan como combinaciones 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 las uniones de manera significativa y el desplazamiento de relaciones para recuperar datos relacionados se realiza muy rápido. 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, al igual que los sistemas de búsqueda de escritorio .
Desarrollo
Cronograma de almacenamiento estructurado | ||||||||||||||||
1990 - - 1991 - - 1992 - - 1993 - - 1994 - - 1995 - - 1996 - - 1997 - - 1998 - - 1999 - - 2000 - - 2001 - - 2002 - - 2003 - - 2004 - - 2005 - - 2006 - - 2007 - - 2008 - - 2009 - - 2010 - - 2011 - - 2012 - - 2013 - - 2014 - - 2015 - - 2016 - - 2017 - - 2018 - - 2019 - | OFS en El Cairo [12] Storage +, usando SQL 7.0 [12] RFS , utilizando SQL 2000 [12] Tienda web de Exchange [13] Outlook LIS [13] WinFS [12] Motor semántico de Microsoft |
| ||||||||||||||
Cronología de los distintos proyectos de almacenamiento estructurado de Microsoft . Ninguno todavía ha resultado en un tiempo de ejecución con todas las funciones y una API a su alrededor. Los años son aproximados. |
El desarrollo de WinFS es una extensión de una función que se planeó inicialmente a principios de la década de 1990. Apodado Object File System , se suponía que debía incluirse como parte de 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 tarde, durante el desarrollo de COM , se planeó un sistema de almacenamiento, llamado Storage +, basado en el próximo SQL Server 8.0, que estaba programado para ofrecer características de agregación similares. [12] Esto tampoco se materializó nunca, y una tecnología similar, Relational File System (RFS), fue concebida para ser lanzada con SQL Server 2000. [12] Sin embargo, SQL Server 2000 terminó siendo una actualización menor a SQL Server 7.0 y RFS no se implementó.
Pero el concepto no fue descartado. [12] Simplemente se transformó en WinFS. WinFS se planeó inicialmente para su inclusión en Windows Vista , [14] y la compilación 4051 de Windows Vista, luego llamado por su nombre en clave "Longhorn", dado a los desarrolladores en la Conferencia de Desarrolladores Profesionales de Microsoft en 2003, incluido WinFS, pero tuvo un rendimiento significativo asuntos. [ enlace muerto ] [12] En agosto de 2004, Microsoft anunció que WinFS no se distribuiría con Windows Vista; en su lugar, estaría disponible como actualización descargable después del lanzamiento de Vista. [12]
El 29 de agosto de 2005, [12] Microsoft silenciosamente puso Beta 1 de WinFS a disposición de los suscriptores de MSDN. Funcionaba en Windows XP y requería .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 después en 2006, [17] y se suponía que incluiría la integración con Windows Desktop Search , de modo que los resultados de la búsqueda incluyan resultados tanto de archivos normales como de almacenes WinFS, además de permitir el acceso de WinFS. datos utilizando ADO.NET . [18]
El 23 de junio de 2006, el equipo de WinFS en Microsoft anunció que WinFS ya no se entregaría como un producto separado, [4] [19] y algunos componentes se incluirían bajo el paraguas 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] La composición de consultas , una función 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 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 FILESTREAM
tipo de datos y datos jerárquicos en SQL Server 2008 , luego con nombre en código Katmai , así como integración con API de Win32 y Windows Shell y soporte para cruce de jerarquías atravesando 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 con Microsoft y que la idea de WinFS se adelantó a su tiempo, que volverá a surgir. [24]
Almacenamiento de datos
Arquitectura
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 base de datos de SQL Server (.MDF) con el conjunto de atributos FILESTREAM. [26] Estos archivos se almacenan en la carpeta de acceso restringido llamada "System Volume Information" (ubicada en la raíz del volumen), en carpetas bajo la carpeta "WinFS" con los nombres de los 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 funciones de acceso y dirección de archivos. [8] El motor relacional aprovecha los servicios centrales de WinFS para presentar una tienda estructurada y otros servicios como el bloqueo , que utiliza el tiempo de ejecución de WinFS para implementar la funcionalidad. El tiempo de ejecución de WinFS expone servicios como Sincronización y Reglas que se pueden usar para sincronizar las tiendas de WinFS o realizar ciertas acciones en la ocurrencia de ciertos eventos. [8]
WinFS se ejecuta como un servicio que ejecuta tres procesos : [27]
- WinFS.exe , que aloja un almacén de datos relacional
- WinFSSearch.exe , que aloja el motor de indexación y consulta
- 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 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 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] Una tienda 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 determinadas relaciones por sí mismo; por ejemplo, si los valores de la propiedad de sujeto de una imagen y la propiedad de nombre de un contacto son los mismos, WinFS puede relacionar el contacto con la imagen. [28] Las relaciones también pueden ser especificadas por otras aplicaciones o por el usuario. [29]
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 de archivo. [6] Por ejemplo, se podría agregar un esquema para permitirle a WinFS entender cómo leer y así poder buscar y analizar, (digamos) 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 compartiendo el esquema. [29]
Se pueden crear varias tiendas WinFS en una sola máquina. [29] Esto permite mantener segregadas diferentes clases de datos; por ejemplo, los documentos oficiales y los documentos personales se pueden guardar en diferentes tiendas. WinFS, de forma predeterminada, proporciona solo una tienda, llamada "DefaultStore". [12] Las tiendas WinFS se exponen como objetos de shell, similar 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 una tienda WinFS se denomina Elemento WinFS . [6] [29] Un elemento de WinFS, junto con el elemento de datos centrales, también contiene información sobre cómo se relaciona el elemento de datos 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 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] Un esquema XML , que define la estructura de los elementos de datos que se almacenarán en WinFS, se debe proporcionar al tiempo de ejecución de WinFS de antemano. [6] En Beta 1 de WinFS, el ensamblado de esquema tenía que agregarse al GAC antes de que pudiera usarse.
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, de modo que la información almacenada en el elemento de datos pueda estar disponible para cualquier aplicación que lo solicite. Esto se hace mediante el uso de esquemas. Para cada tipo de elemento de datos que se va a 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]
Tipo de sistema
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 de .NET framework . Se puede crear un nuevo tipo ampliando y anidando cualquier tipo predefinido. [6]
WinFS proporciona cuatro tipos básicos predefinidos: elementos , relaciones , ScalarTypes y NestedTypes . [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 . [29]
Cualquier objeto representado como una unidad de datos, como contacto, imagen, video, documento, etc., se puede almacenar en una tienda WinFS como una especialización del tipo de elemento. [29] De forma predeterminada, WinFS proporciona tipos de elementos para archivos, contactos, documentos, imágenes, audio, video, 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 que se relacione con otros elementos. [6]
Un desarrollador puede ampliar cualquiera de estos tipos, o el elemento de tipo base, para proporcionar un tipo para sus datos personalizados. Los datos contenidos en un elemento se definen en términos de propiedades o campos que contienen los datos reales. Por ejemplo, un contacto de elemento puede tener un nombre de campo que sea un tipo escalar y una dirección de campo , un tipo anidado, que además se compone de dos tipos escalar. Para definir este tipo, se amplía la clase base Item y se añaden 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 de forma personalizada, cuyos campos son Cadenas. Otros tipos primitivos que soporta 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. [30] El elemento de contacto definido de esta manera se utilizará para almacenar información sobre el contacto, rellenando el campo de propiedades y almacenándolo. Solo los campos marcados como obligatorios deben completarse durante el guardado inicial. [29] El usuario puede completar otros campos más tarde o no completarlos en absoluto. Si es necesario agregar más campos de propiedades, como la fecha de la última conversación , este tipo se puede extender para acomodarlos. Los tipos de elementos para otros datos se pueden definir de manera similar.
WinFS crea tablas para todos los elementos definidos. [30] 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 se refiera 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 el nombre de la relación. El tiempo de ejecución de WinFS administra los esquemas de relaciones. [29] 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 tener en cuenta la estructura física en la que se almacenaron los datos. [6]
Los tipos de WinFS se exponen como clases .NET, que se pueden instanciar 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, o bien todas se realizan correctamente o 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. Solo cuando se cierra la conexión, los cambios se escriben 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 () { // Name is a ComplexType Displayname = "Doe, John" , FirstName = "John" , LastName = "Doe" }, TelephoneNumber = new TelephoneNumber () { // El número de teléfono es un ComplexType Country = CountryCode . Antártida , Areacode = 4567 , Number = 9876543210 }, Age = 111 // Age is a SimpleType }; // Agrega el objeto a la carpeta personal del usuario. // Esto relaciona el elemento con el pseudo-tipo 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 contiene Carpeta = UserDataFolder . FindMyPersonalFolder (); conteniendo Carpeta . OutFolderMemberRelationship . AddItem ( ic , contacto ); // Encontrar un documento y relacionarse 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. usando ( ItemSearcher buscador = Documento . GetSearcher ( ic )) { Documento d = buscador . Find ( @ "Título = 'Algún documento en particular'" ); d . OutAuthoringRelationship . AddItem ( ic , contacto ); } // Como solo se encuentra un documento, también se podría usar el método ItemContext.FindOne () //. // Encuentra una imagen y relaciona con ella usando ( ItemSearcher buscador = Imagen . GetSearcher ( ic )) { Imagen p = buscador . Buscar ( @ "Ocasión = 'Graduación' y Secuencia = '3'" ); p . OutSubjectRelationship . AddItem ( ic , contacto ); } // Persistir en la tienda y cerrar la referencia a la tienda ic . Actualizar (); }
Relaciones
Un dato puede estar relacionado con un elemento más, dando lugar a una relación de uno a uno, o con más de un elemento, lo que resulta en una relación de uno a varios. [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 hacen referencia a la fila en la tabla del otro elemento donde se almacena el objeto relacionado. [29]
En WinFS, una relación es una instancia de la relación de tipo base, que se extiende para significar una especialización de una relación. Una relación es un mapeo entre dos elementos, una fuente y un destino. La fuente tiene una relación saliente, mientras que el destino obtiene una relación entrante. [30] WinFS proporciona tres tipos de relaciones primitivas: Relación de participación , Relación de referencia y Relación de inserción . [6] Cualquier relación personalizada entre dos tipos de datos son instancias de estos tipos de relación.
- Holding Relationships especifica 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 Participación; la última se eliminará cuando se elimine la primera. Un objeto de destino puede formar parte de más de una relación de participación. En tal caso, se eliminará cuando se eliminen todos los elementos de origen.
- Las relaciones de referencia proporcionan un vínculo entre dos elementos, pero no tienen ninguna vida útil asociada, es decir, cada elemento seguirá almacenándose incluso sin el otro.
- Las relaciones incrustadas dan orden a los dos elementos que están vinculados por la relación, como la relación entre un elemento principal y un elemento secundario.
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. [30] 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. [29]
Reglas
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 siempre que se crea un elemento que contiene el campo "Nombre" y si el valor de ese campo es un 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 de notificación cada vez que se reciba un correo de un contacto en particular. [22] Las reglas de WinFS también se pueden usar 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 extenderse heredando de ella para formar una nueva regla que consista en la condición y acción de la regla padre y 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 estar en 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) por 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. Los RAV también admiten la modificación de la vista de acuerdo con diferentes parámetros de agrupación. También se pueden consultar las vistas.
Control de acceso
Aunque todos los datos se comparten, no todo es igualmente accesible. WinFS utiliza el sistema de autenticación de Windows para proporcionar dos mecanismos de protección de datos. [29] Primero, existe seguridad a nivel de recurso compartido que controla el acceso a su recurso compartido de WinFS. En segundo lugar, existe 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 los datos de mayor integridad mediante un proceso de menor integridad.
Recuperación de datos
El modo principal de recuperación de datos de un almacén WinFS es consultar el almacén WinFS de acuerdo con 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 los esquemas de tipo, conforme al modelo de objetos .NET . [31] Se puede acceder a los datos en ellos accediendo a las propiedades de los objetos individuales. [30]
Las relaciones también se exponen como propiedades. Cada elemento de WinFS tiene dos propiedades, denominadas 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 adecuada. [10] [30]
El hecho de que se pueda acceder a los datos utilizando su descripción, en lugar de la ubicación, se puede utilizar para proporcionar capacidades organizativas al usuario final sin limitarse a la organización jerárquica que 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 solo 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 la compatibilidad heredada, WinFS incluye un pseudo-tipo llamado Carpeta, que está presente solo para participar en las relaciones de retención 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 del restaurante y generar dinámicamente filtros como "Emails enviados a personas con las que almorcé" .
Búsquedas
La API de WinFS proporciona una clase denominada clase ItemContext , que está vinculada a una tienda WinFS. El objeto ItemContext se puede utilizar para establecer el alcance de 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 a recuperar o la relación y la cadena de consulta OPath que representa los criterios para la búsqueda. [30] [32] Se devuelve un conjunto de todas las coincidencias, que luego se puede vincular a un widget de interfaz de usuario para mostrar en masa o enumerar individualmente. [29] Los elementos de propiedades también se pueden modificar y luego volver a almacenar en el almacén de datos para actualizar los datos. El objeto ItemContext se cierra (que marca el final de la asociación del objeto con la tienda) cuando se realizan las consultas o se fusionan los cambios en la tienda.
También se puede acceder a los 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 con 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 una imagen, se puede acceder a ella atravesando la relación como:
Contactos colección contactos = imagen . Relaciones salientes . Moldeada ( typeof ( 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 ContactosCollección contactos = imagen . Relaciones salientes . OutContactRelationship . Contacto ;
Una cadena de consulta OPath permite expresar los parámetros que se consultarán para especificar mediante las propiedades del elemento , elementos incrustados y relaciones . [ cita requerida ] Puede especificar una sola 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 sus Inglés-como equivalente como EQUAL , NO IGUAL . Los operadores de tipo SQL como LIKE , GROUP BY y ORDER BY también son compatibles, al igual que las condiciones comodín. [ cita requerida ] Entonces, "title LIKE 'any *'" 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 debe buscar en toda la tienda. El alcance se puede limitar a un conjunto de elementos que pueden // estar en una relación de retención con los contactos. En ese caso, el conjunto se pasa como // el alcance de la búsqueda. Buscador de ItemSearcher = OutContactRelationship . GetTargetSearcher ( ic , typeof ( Contacto )); ContactCollection contactos = buscador . FindAll ( "OutContactRelationship.Contact.Name LIKE 'A *'" ); }
El fragmento de código anterior crea un objeto ItemSearcher que busca en la instancia de OutContactRelationship que relaciona imágenes y contactos, de hecho, busca 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 reducir aún más los resultados. [10] [30] además, un procesador de consulta en lenguaje natural, que analiza consulta en lenguaje natural y crea una cadena de consulta OPath bien formado para buscar a través de relaciones apropiadas, 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.
Las diferentes relaciones especifican un conjunto de datos diferente. 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 solo aquellos elementos de datos que corresponden a todas las relaciones. [30]
Notificaciones
WinFS incluye un mejor soporte para manejar datos que cambian con frecuencia. Con las notificaciones de WinFS , las aplicaciones eligen recibir notificaciones de 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. [30]
Agente de información
WinFS incluye una función de Agente de información para la administración, recuperación y almacenamiento de las reglas y preferencias de notificación del usuario final para cambios en los elementos del almacén de datos. Usando Information Agent, es posible definir automáticamente relaciones con nuevos elementos en función de eventos como citas, con un ejemplo de que las citas se pueden relacionar con fotos en función de las fechas en que se tomaron las fotos, lo que permite realizar consultas para cumpleaños o días festivos sin necesidad de hacerlo. conocer las fechas reales de dichos eventos (" encontrar 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 las que se tomaron las fotos (" cuando importo una foto tomada durante un evento de negocios, la muevo a la carpeta Eventos de negocios ") 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íe 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 fácilmente datos entre aplicaciones y entre múltiples almacenes de WinFS, que pueden residir en diferentes computadoras, al copiar hacia y desde ellas. [33] 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 compatibilidad para compartir con aplicaciones que no son de WinFS. WinFS expone un objeto de shell para acceder a las tiendas 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 con los usuarios los nuevos elementos devueltos por esta consulta). Los datos de WinFS también se pueden compartir manualmente utilizando recursos compartidos de red , compartiendo el objeto de shell heredado. [33] Los formatos de archivo que no son de WinFS se pueden almacenar en las tiendas 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. [33]
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 solo fotos " o " compartir fotos que tengan un contacto X asociado ". [33] Las tiendas pueden estar en diferentes computadoras. La sincronización se realiza de igual a igual ; no hay 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 se 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 diferir la sincronización para la resolución manual. WinFS también actualiza los esquemas, si es necesario. [33]
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 las aplicaciones se pueden usar directamente para guardar allí. Incluso carpetas como Mis documentos se pueden redirigir a las tiendas. [12] WinFS usa complementos de Importador para analizar los archivos a medida que se importan a la tienda y crear esquemas y objetos de WinFS adecuados, y cuando saque los objetos, vuelva a empaquetarlos en archivos. [33] Si los importadores de ciertos archivos no están instalados, se almacenan como tipos de archivos genéricos .
Microsoft Rave
Microsoft Rave es una aplicación que se envió 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 se actualizará en consecuencia. Al aplicar los cambios también detecta si existe algún conflicto, es decir, se han cambiado los mismos datos en ambas tiendas desde la última sincronización. Registrará los datos en conflicto para una resolución posterior o los resolverá de inmediato. Microsoft Rave utiliza tecnología peer-to-peer para comunicarse y transferir datos.
StoreSpy
Con WinFS Beta 1, Microsoft incluyó una aplicación no compatible llamada StoreSpy , [34] que permitía navegar por las tiendas de WinFS presentando una vista jerárquica de los elementos de 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 que se presentan las carpetas tradicionales. La aplicación genera pestañas para diferentes tipos de elementos. StoreSpy permitía ver elementos , relaciones , conjuntos múltiples , elementos anidados , extensiones [35] 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 la edición de elementos o sus propiedades, aunque estaba programado para su inclusión en una versión futura. [36] Pero el proyecto WinFS se redujo antes de que pudiera materializarse.
Tipo de navegador
WinFS también incluye otra aplicación, denominada WinFS Type Browser , que se puede utilizar para examinar los tipos de WinFS, así como visualizar la relación jerárquica entre los tipos de WinFS. [37] Un tipo de WinFS, tanto los tipos incorporados 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. [37]
Padre
WinFS Beta 1 también incluye una aplicación no compatible, denominada OPather . [38] 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 la función de finalización de parámetros similar a Intellisense . Luego 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 código era "Proyecto Orange" y supuestamente se construyó utilizando Windows Presentation Foundation . [39] Se suponía que debía proporcionar exploración de elementos almacenados en tiendas WinFS, y se suponía que las relaciones de datos eran una parte importante del modelo de navegación. Se suponía que debía permitir que las personas también permitieran la organización de las tiendas WinFS gráficamente, produciendo muchos de los conceptos que se muestran en el archivo WMV de video conceptual de IWish . Sin embargo, dado que el proyecto WinFS se apagó, se desconoce el estado de este proyecto.
Ver también
- Organizador de escritorio
- GNOME Storage : un sistema de gestión de almacenamiento para el escritorio GNOME
- NEPOMUK-KDE
- ReFS
- Sistema de gestión de bases de datos relacionales (RDBMS)
Referencias
- ^ "Windows filtrado sugiere cambios por venir" . ZDNet . CBS Interactive . 30 de septiembre de 2007. Archivado desde el original el 30 de septiembre de 2007.
- ^ Schofield, Jack (29 de junio de 2006). "Por qué tuvo que desaparecer WinFS" . The Guardian . Guardian News and Media . Consultado el 9 de diciembre de 2010 .
- ^ "Video del concepto de IWish" . Microsoft. Archivado desde el original el 2 de junio de 2006 . Consultado el 14 de julio de 2008 .
- ^ a b 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 .
- ^ 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 .
- ^ a b c d e f g h i j k l m n o p q r s t u v w x Shawn Wildermuth. "Perspectiva de un desarrollador sobre WinFS: parte 1" . MSDN . Consultado el 30 de junio de 2007 .
- ^ a b c d Vijay Bangaru. "Unificar, organizar, explorar e innovar. ¡Oh, 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 .
- ^ a b c d e f g h yo j k Sean Grimaldi. "Los archivos WinFS: Divide et Impera" . MSDN . Consultado el 30 de junio de 2007 .
- ^ a b Thomas Rizzo. "WinFS 101: Introducción al nuevo sistema de archivos de Windows" . MSDN . Consultado el 30 de junio de 2007 .
- ^ a b c d e f g h yo j k "WinFS en el .NET Show" . Consultado el 4 de julio de 2007 .[ enlace muerto permanente ]
- ^ Vijay Bangaru. "Unifica, organiza, explora e innova. ¡Oh, 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 .
- ^ a b c d e f g h i j k l m n o p q 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 .
- ^ a b "Mi cita con Destiny, eh ... Almacenamiento integrado" . Archivado desde el original el 31 de octubre de 2007 . Consultado el 30 de junio de 2007 .
- ^ Cath Everett. "¿Valdrá la pena el dolor de Longhorn?" . ZDNet . Consultado el 30 de junio de 2007 .
- ^ a b "WinFS para desarrolladores" . NTFS.com . Consultado el 4 de julio de 2007 .
- ^ Vijay Bangaru. "WinFS Beta 1 Refresh ahora disponible" . Blog del equipo WinFS. Archivado desde el original el 20 de mayo de 2007 . Consultado el 30 de junio de 2007 .
- ^ Shan Sinha. "¡Presumiendo el próximo lanzamiento 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 .
- ^ Sanjay Anand. "Mi cita con Destiny, eh ... Almacenamiento integrado" . Blog del equipo WinFS. Archivado desde el original el 31 de octubre de 2007 . Consultado el 30 de junio de 2007 .
- ^ Quentin Clark. "Actualizar 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 .
- ^ "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 .
- ^ "Guía del producto 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 .
- ^ a b c d e 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 .
- ^ Bentz, Ben (31 de octubre de 2006). "Composición de la consulta: construir una búsqueda sobre otra búsqueda" . Shell: Blog revelado . Microsoft . Archivado desde el original el 15 de diciembre de 2006 . Consultado el 2 de marzo de 2018 .
- ^ "El barón multimillonario Bill Gates todavía lamenta la muerte de Vista WinFS".
- ^ Nate Mook (29 de agosto de 2005). "MS explica WinFS, versiones Beta 1" . BetaNews . Consultado el 2 de julio de 2007 .
- ^ a b Shishir Mehrotra (septiembre de 2005). " Direcciones futuras de " WinFS ": una descripción general" . Presentaciones de la Professional Developers Conference 2005 . Microsoft. Archivado desde el original el 6 de enero de 2006 . Consultado el 22 de mayo de 2006 .(Actualmente fuera de línea, espejo ).
- ^ 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 .
- ^ Vijay Bangaru. "Buzón WinFS" . Blog del equipo WinFS. Archivado desde el original el 22 de mayo de 2007 . Consultado el 30 de junio de 2007 .
- ^ a b c d e f g h yo j k l 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 .
- ^ a b c d e f g h yo j Shawn Wildermuth (julio de 2004). "Perspectiva de un desarrollador sobre WinFS: parte 2" . MSDN . Microsoft . Consultado el 30 de junio de 2007 .
- ^ Vijay Bangaru. "Unificar, organizar, explorar e innovar. ¡Oh, 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 .
- ^ Thomas Rizzo, Sean Grimaldi (18 de octubre de 2004). "Introducción a" WinFS "OPath" . MSDN . Microsoft . Consultado el 30 de junio de 2007 .
- ^ a b c d e f Neil Padgett. "Obtener datos en WinFS con sincronización de WinFS" . Blog del equipo WinFS. Archivado desde el original el 17 de febrero de 2007 . Consultado el 30 de junio de 2007 .
- ^ Wei-Meng Lee (7 de septiembre de 2005). "WinFS -StoreSpy" . Consultado el 30 de junio de 2007 .
- ^ "Stefano Demiliani WeBlog: WinFS StoreSpy v0.8 para WinHEC 2004 Longhorn Build" . Consultado el 12 de marzo de 2007 .
- ^ "StoreSpy debería convertirse en StoreEditor" . Archivado desde el original el 29 de septiembre de 2007 . Consultado el 30 de junio de 2007 .
- ^ a b 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 .
- ^ Luiz 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 .
- ^ Shishir Mehrotra. "La mejor aplicación 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
- Blog de WinFS
- WinFS en Microsoft Developer Network ( caché de archivo de Internet )
- Videos del canal 9
- Grupo de noticias WinFS
- Vista previa de WinFS Beta 1
- Área WinFS en NetFXGuide.com ( caché de archivo de Internet )