WinFS (short for Windows Future Storage) was the
code name
A code name, codename, call sign, or cryptonym is a code word or name used, sometimes clandestinely, to refer to another name, word, project, or person. Code names are often used for military purposes, or in espionage. They may also be used in ...
for a canceled data storage and
management
Management (or managing) is the administration of organizations, whether businesses, nonprofit organizations, or a Government agency, government bodies through business administration, Nonprofit studies, nonprofit management, or the political s ...
system project based on
relational database
A relational database (RDB) is a database based on the relational model of data, as proposed by E. F. Codd in 1970.
A Relational Database Management System (RDBMS) is a type of database management system that stores data in a structured for ...
s, developed by
Microsoft
Microsoft Corporation is an American multinational corporation and technology company, technology conglomerate headquartered in Redmond, Washington. Founded in 1975, the company became influential in the History of personal computers#The ear ...
and first demonstrated in 2003. It was intended as an advanced storage subsystem for the
Microsoft Windows
Windows is a Product lining, product line of Proprietary software, proprietary graphical user interface, graphical operating systems developed and marketed by Microsoft. It is grouped into families and subfamilies that cater to particular sec ...
operating system
An operating system (OS) is system software that manages computer hardware and software resources, and provides common daemon (computing), services for computer programs.
Time-sharing operating systems scheduler (computing), schedule tasks for ...
, designed for
persistence and management of
structured
Structuring, also known as smurfing in banking jargon, is the practice of executing financial transactions such as making bank deposits in a specific pattern, calculated to avoid triggering financial institutions to file reports required by law ...
,
semi-structured and
unstructured data
Unstructured data (or unstructured information) is information that either does not have a pre-defined data model or is not organized in a pre-defined manner. Unstructured information is typically plain text, text-heavy, but may contain data such ...
.
WinFS includes a
relational database
A relational database (RDB) is a database based on the relational model of data, as proposed by E. F. Codd in 1970.
A Relational Database Management System (RDBMS) is a type of database management system that stores data in a structured for ...
for storage of information, and allows any type of information to be stored in it, provided there is a well defined
schema
Schema may refer to:
Science and technology
* SCHEMA (bioinformatics), an algorithm used in protein engineering
* Schema (genetic algorithms), a set of programs or bit strings that have some genotypic similarity
* Schema.org, a web markup vocab ...
for the type. Individual data items could then be related together by relationships, which are either inferred by the system based on certain attributes or explicitly stated by the user. As the data has a well defined schema, any application can reuse the data; and using the relationships, related data can be effectively organized as well as retrieved. Because the system knows the structure and intent of the information, it can be used to make complex queries that enable advanced searching through the data and aggregating various data items by exploiting the relationships between them.
While WinFS and its shared type schema make it possible for an application to recognize the different data types, the application still has to be coded to render the different data types. Consequently, it would not allow development of a single application that can view or edit all data types; rather, WinFS enables applications to understand the structure of all data and extract the information that they can use further. When WinFS was introduced at the 2003
Professional Developers Conference
Microsoft's Professional Developers Conference (PDC) was a series of conferences for software developers; the conference was held infrequently to coincide with beta releases of the Microsoft Windows, Windows operating system, and showcased topic ...
, Microsoft also released a video presentation, named IWish,
showing mockup interfaces that showed how applications would expose interfaces that take advantage of a unified type system. The concepts shown in the video ranged from applications using the relationships of items to dynamically offer filtering options to applications grouping multiple related data types and rendering them in a unified presentation.
WinFS was billed as one of the pillars of the
"Longhorn" wave of technologies, and would ship as part of the next version of Windows. It was subsequently decided that WinFS would ship after the release of
Windows Vista
Windows Vista is a major release of the Windows NT operating system developed by Microsoft. It was the direct successor to Windows XP, released five years earlier, which was then the longest time span between successive releases of Microsoft W ...
, but those plans were shelved in June 2006,
with some of its component technologies being integrated into
ADO.NET and
Microsoft SQL Server
Microsoft SQL Server is a proprietary relational database management system developed by Microsoft using Structured Query Language (SQL, often pronounced "sequel"). As a database server, it is a software product with the primary function of ...
.
Motivation
Many
filesystems found on common
operating systems
An operating system (OS) is system software that manages computer hardware and software resources, and provides common daemon (computing), services for computer programs.
Time-sharing operating systems scheduler (computing), schedule tasks for ...
, including the
NTFS
NT File System (NTFS) (commonly called ''New Technology File System'') is a proprietary journaling file system developed by Microsoft in the 1990s.
It was developed to overcome scalability, security and other limitations with File Allocation Tabl ...
filesystem which is used in modern versions of Microsoft Windows, store files and other objects only as a
stream of bytes, and have little or no information about the data stored in the files. Such file systems also provide only a single way of organizing the files, namely via directories and file names.
Because a file system has no knowledge about the data it stores,
applications tend to use their own, often
proprietary,
file format
A file format is a Computer standard, standard way that information is encoded for storage in a computer file. It specifies how bits are used to encode information in a digital storage medium. File formats may be either proprietary format, pr ...
s. This hampers sharing of data between multiple applications. It becomes difficult to create an application which processes information from multiple file types, because the programmers have to understand the
structure
A structure is an arrangement and organization of interrelated elements in a material object or system, or the object or system so organized. Material structures include man-made objects such as buildings and machines and natural objects such as ...
and
semantics
Semantics is the study of linguistic Meaning (philosophy), meaning. It examines what meaning is, how words get their meaning, and how the meaning of a complex expression depends on its parts. Part of this process involves the distinction betwee ...
of all the files.
Using common file formats is a workaround to this problem but not a universal solution; there is no guarantee that all applications will use the format. Data with standardized schema, such as
XML
Extensible Markup Language (XML) is a markup language and file format for storing, transmitting, and reconstructing data. It defines a set of rules for encoding electronic document, documents in a format that is both human-readable and Machine-r ...
documents and
relational data fare better, as they have a standardized structure and run-time requirements.
Also, a traditional file system can retrieve and search data based only on the filename, because the only knowledge it has about the data is the name of the files that store the data.
A better solution is to tag files with attributes that describe them. Attributes are
metadata
Metadata (or metainformation) is "data that provides information about other data", but not the content of the data itself, such as the text of a message or the image itself. There are many distinct types of metadata, including:
* Descriptive ...
about the files such as the type of file (such as ''document'', ''picture'', ''music'', ''creator'', etc.).
This allows files to be searched for by their attributes, in ways not possible using a folder hierarchy, such as finding ''"pictures which have person X"''. The attributes can be recognizable by either the file system natively, or via some extension.
Desktop search applications take this concept a step further. They extract data, including attributes, from files and index it. To extract the data, they use a filter for each file format. This allows for searching based on both the file's attributes and the data in it.
However, this still does not help in managing related data, as disparate items do not have any relationships defined. For example, it is impossible to search for ''"the phone numbers of all persons who live in Acapulco and each have more than 100 appearances in my photo collection and from whom I have had e-mail within the last month"''. Such a search could not be done unless it is based on a data model which has both the
semantics
Semantics is the study of linguistic Meaning (philosophy), meaning. It examines what meaning is, how words get their meaning, and how the meaning of a complex expression depends on its parts. Part of this process involves the distinction betwee ...
as well as relationships of data defined.
WinFS aims to provide such a data model and the runtime infrastructure that can be used to store the data, as well as the relationships between data items according to the data model, doing so at a satisfactory level of performance.
Overview
WinFS natively recognizes different types of data, such as ''picture'', ''e-mail'', ''document'', ''audio'', ''video'', ''calendar'', ''contact'', rather than just leaving them as raw unanalyzed bytestreams (as most file systems do). Data stored and managed by the system are instances of the data type recognized by the WinFS runtime. The data are structured by means of properties. For example, an instance of a ''résumé'' type will surface the data by exposing properties, such as ''Name'', ''Educational Qualification'', ''Experience''. Each property may be a simple type (''strings'', ''integers'', ''dates'') or complex types (''contacts'').
Different data types expose different properties. Besides that, WinFS also allows different data instances to be related together; such as a document and a contact can be related by an ''Authored By'' relationship.
Relationships are also exposed as properties; for example if a document is related to a contact by a ''Created By'' relationship, then the document will have a ''Created By'' property. When it is accessed, the relationship is traversed and the related data returned.
By following the relations, all related data can be reached.
WinFS promotes sharing of data between applications by making the data types accessible to all applications, along with their schemas.
When an application wants to use a WinFS type, it can use the schema to find the data structure and can use the information. So, an application has access to all data on the system even though the developer did not have to write
parser
Parsing, syntax analysis, or syntactic analysis is a process of analyzing a string of symbols, either in natural language, computer languages or data structures, conforming to the rules of a formal grammar by breaking it into parts. The term '' ...
s to recognize the different data formats. It can also use relationships and related data to create dynamic filters to present the information the application deals with. The WinFS API further abstracts the task of accessing data. All WinFS types are exposed as
.NET
The .NET platform (pronounced as "''dot net"'') is a free and open-source, managed code, managed computer software framework for Microsoft Windows, Windows, Linux, and macOS operating systems. The project is mainly developed by Microsoft emplo ...
objects with the properties of the object directly mapping to the properties of the data type.
Also, by letting different applications that deal with the same data share the same WinFS data instance rather than storing the same data in different files, the hassles of synchronizing the different stores when the data change are removed. Thus WinFS can reduce redundancies.
Access to all the data in the system allows complex searches for data across all the data items managed by WinFS. In the example used above (''"the phone numbers of all persons who live in Acapulco and each have more than 100 appearances in my photo collection and with whom I have had e-mail within last month"''), WinFS can traverse the ''subject'' relationship of all the photos to find the ''contact'' items. Similarly, it can filter all emails in last month and access the ''communicated with'' relation to reach the contacts. The common contacts can then be figured out from the two sets of results and their phone number retrieved by accessing the suitable property of the contact items.
In addition to fully schematized data (like
XML
Extensible Markup Language (XML) is a markup language and file format for storing, transmitting, and reconstructing data. It defines a set of rules for encoding electronic document, documents in a format that is both human-readable and Machine-r ...
and
relational data), WinFS supports semi-structured data (such as images, which have an unstructured bitstream plus structured metadata) as well as unstructured data (such as files) as well. It stores the unstructured components as files while storing the structured metadata in the structured store.
Internally, WinFS uses a
relational database
A relational database (RDB) is a database based on the relational model of data, as proposed by E. F. Codd in 1970.
A Relational Database Management System (RDBMS) is a type of database management system that stores data in a structured for ...
to manage data. It does not limit the data to belonging to any particular data model. The WinFS runtime
maps
A map is a symbolic depiction of interrelationships, commonly spatial, between things within a space. A map may be annotated with text and graphics. Like any graphic, a map may be fixed to paper or other durable media, or may be displayed on ...
the schema to a relational modality,
by defining the tables it will store the types in and the
primary key
In the relational model of databases, a primary key is a designated attribute (column) that can reliably identify and distinguish between each individual record in a table. The database creator can choose an existing unique attribute or combinati ...
s and
foreign key
A foreign key is a set of attributes in a table that refers to the primary key of another table, linking these two tables. In the context of relational databases, a foreign key is subject to an inclusion dependency constraint that the tuples ...
s that would be required to represent the relationships. WinFS includes mappings for object and XML schemas by default. Mappings for other schemas must be specified. Object schemas are specified in XML; WinFS generates code to surface the schemas as
.NET
The .NET platform (pronounced as "''dot net"'') is a free and open-source, managed code, managed computer software framework for Microsoft Windows, Windows, Linux, and macOS operating systems. The project is mainly developed by Microsoft emplo ...
classes.
ADO.NET can be used to directly specify the relational schema, though a mapping to the object schema must be provided to surface it as classes.
Relationship traversals are performed as
joins Join may refer to:
* Join (law), to include additional counts or additional defendants on an indictment
*In mathematics:
** Join (mathematics), a least upper bound of sets orders in lattice theory
** Join (topology), an operation combining two top ...
on these tables. WinFS also automatically creates
indexes
Index (: indexes or indices) may refer to:
Arts, entertainment, and media Fictional entities
* Index (A Certain Magical Index), Index (''A Certain Magical Index''), a character in the light novel series ''A Certain Magical Index''
* The Index, a ...
on these tables, to enable fast access to the information.
Indexing speeds up joins significantly, and traversing relationships to retrieve related data is performed very fast. Indexes are also used during information search; searching and
querying use the indexes to quickly complete the operations, much like
desktop search systems.
Development
The development of WinFS is an extension to a feature that was initially planned in the early 1990s. Dubbed ''Object File System'', it was supposed to be included as part of
Cairo
Cairo ( ; , ) is the Capital city, capital and largest city of Egypt and the Cairo Governorate, being home to more than 10 million people. It is also part of the List of urban agglomerations in Africa, largest urban agglomeration in Africa, L ...
. OFS was supposed to have powerful data aggregation features,
but the Cairo project was shelved, and with it OFS. However, later during the development of
COM, a storage system, called Storage+, based on then-upcoming SQL Server 8.0, was planned, which was slated to offer similar aggregation features.
This, too, never materialized, and a similar technology, ''Relational File System'' (RFS), was conceived to be launched with SQL Server 2000.
However, SQL Server 2000 ended up being a minor upgrade to SQL Server 7.0 and RFS was not implemented.
The concept was not scrapped, and served as the base for WinFS.
WinFS was initially planned for inclusion in
Windows Vista
Windows Vista is a major release of the Windows NT operating system developed by Microsoft. It was the direct successor to Windows XP, released five years earlier, which was then the longest time span between successive releases of Microsoft W ...
, and build 4051 of Windows Vista, then called by its codename "Longhorn", given to developers at the Microsoft
Professional Developers Conference
Microsoft's Professional Developers Conference (PDC) was a series of conferences for software developers; the conference was held infrequently to coincide with beta releases of the Microsoft Windows, Windows operating system, and showcased topic ...
in 2003, included WinFS, but it suffered from significant performance issues.
In August 2004, Microsoft announced that WinFS would not ship with Windows Vista; it would instead be available as a downloadable update after Vista's release.
On August 29, 2005,
Microsoft quietly made Beta 1 of WinFS available to MSDN subscribers. It worked on
Windows XP
Windows XP is a major release of Microsoft's Windows NT operating system. It was released to manufacturing on August 24, 2001, and later to retail on October 25, 2001. It is a direct successor to Windows 2000 for high-end and business users a ...
, and required the
.NET Framework to run. The WinFS API was included in the ''System.Storage'' namespace.
The beta was refreshed on December 1, 2005 to be compatible with version 2.0 of the .NET Framework. WinFS Beta 2 was planned for some time later in 2006, and was supposed to include integration with
Windows Desktop Search, so that search results include results from both regular files and WinFS stores, as well as allow access of WinFS data using
ADO.NET.
On June 23, 2006, the WinFS team at Microsoft announced that WinFS would no longer be delivered as a separate product,
and some components would be brought under the umbrella of other technologies. Many of the principle features Microsoft intended to provide with WinFS included a pane for metadata property editing,
breadcrumb
Breadcrumbs are a culinary ingredient consisting of flour or crumbled bread of varying dryness, sometimes with seasonings added. They are used for a variety of purposes, including breading or crumbing foods before frying (such as breaded cutlet ...
-based property navigation, filtering or stacking items over properties,
incremental search, and
saved searches;
these features were incorporated in Windows Vista.
''Query composition'', a feature of WinFS that allowed users to perform additional searches that reuse the results of a previous query,
was later incorporated in Windows Vista.
Examples of uses of the technology are the
object-relational mapping components into
ADO.NET Entity Framework; support for unstructured data, adminless mode of operation, support for
file system objects via the
FILESTREAM
data type, and hierarchical data in
SQL Server 2008, then codenamed ''Katmai'', as well as integration with
Win32
The Windows API, informally WinAPI, is the foundational application programming interface (API) that allows a computer program to access the features of the Microsoft Windows operating system in which the program is running. Programs can acces ...
API
An application programming interface (API) is a connection between computers or between computer programs. It is a type of software interface, offering a service to other pieces of software. A document or standard that describes how to build ...
s and
Windows Shell
The Windows shell is the graphical user interface for the Microsoft Windows operating system. Its readily identifiable elements consist of the desktop, the taskbar, the Start menu, the task switcher and the AutoPlay feature. On some versions of ...
and support for traversal of hierarchies by traversing relationships into later releases of
Microsoft SQL Server
Microsoft SQL Server is a proprietary relational database management system developed by Microsoft using Structured Query Language (SQL, often pronounced "sequel"). As a database server, it is a software product with the primary function of ...
;
and the synchronization components into
Microsoft Sync Framework
Microsoft Sync Framework is a data synchronization platform from Microsoft that can be used to synchronize data across multiple data stores. Sync Framework includes a transport-agnostic architecture, into which data store-specific synchronization ...
.
In 2013 Bill Gates cited WinFS as his greatest disappointment at Microsoft and that the idea of WinFS was ahead of its time, which will re-emerge.
Data storage
Architecture
WinFS uses a relational engine, which derives from SQL Server 2005, to provide the data-relations mechanism. WinFS stores are simply SQL Server database (.MDF) files with the FILESTREAM attribute set.
[.] These files are stored in the access-restricted folder named "System Volume Information" (placed in the volume root), in folders under the folder "WinFS" with names of
GUID
A Universally Unique Identifier (UUID) is a 128-bit label used to uniquely identify objects in computer systems. The term Globally Unique Identifier (GUID) is also used, mostly in Microsoft systems.
When generated according to the standard methods ...
s of these stores.
At the bottom of the WinFS stack lies ''WinFS Core'', which interacts with the
filesystem and provides file-access and -addressing capabilities.
The relational engine leverages the WinFS core services to present a structured store and other services such as
locking, which the WinFS runtime uses to implement the functionality. The WinFS runtime exposes ''services'' such as ''Synchronization'' and ''Rules'' that can be used to synchronize WinFS stores or perform certain actions on the occurrence of certain events.
WinFS runs as a
service
Service may refer to:
Activities
* Administrative service, a required part of the workload of university faculty
* Civil service, the body of employees of a government
* Community service, volunteer service for the benefit of a community or a ...
that runs three
processes:
# ''WinFS.exe'', which hosts the relational datastore
# ''WinFSSearch.exe'', which hosts the indexing and querying engine
# ''WinFPM.exe (WinFS File Promotion Manager)'', which interfaces with the underlying file-system
It allows programmatic access to its features via a set of
.NET Framework API
An application programming interface (API) is a connection between computers or between computer programs. It is a type of software interface, offering a service to other pieces of software. A document or standard that describes how to build ...
s. These enable applications to define custom-made data types, define relationships among data, store and retrieve information, and allow advanced searches.
The applications can then aggregate the data and present the aggregated data to the user.
Data store
WinFS stores data in relational stores, which are exposed as virtual locations called ''stores''.
A WinFS store is a common repository where any application can store data along with its metadata, relationships and schema. WinFS runtime can apply certain relationships itself; for example, if the values of the ''subject'' property of a picture and the ''name'' property of a contact are identical, then WinFS can relate the contact with the picture. Relations can also be specified by other applications or the user.
WinFS provides unified storage, but stops short of defining the format that is to be stored in the data stores. Instead it supports writing data in application-specific formats. But applications must provide a
schema
Schema may refer to:
Science and technology
* SCHEMA (bioinformatics), an algorithm used in protein engineering
* Schema (genetic algorithms), a set of programs or bit strings that have some genotypic similarity
* Schema.org, a web markup vocab ...
that defines how the file format should be interpreted.
For example, a schema could be added to allow WinFS to understand how to read and thus be able to search and analyze, (say) a
PDF
Portable document format (PDF), standardized as ISO 32000, is a file format developed by Adobe Inc., Adobe in 1992 to present documents, including text formatting and images, in a manner independent of application software, computer hardware, ...
file. By using the schema, any application can read data from any other application, and this also allows different applications to write in each other's format by sharing the schema.
Multiple WinFS stores can be created on a single machine.
This allows different classes of data to be kept segregated; for example, official documents and personal documents can be kept in different stores. WinFS, by default, provides only one store, named "DefaultStore".
WinFS stores are exposed as shell objects, akin to
Virtual folders, which dynamically generate a list of all items present in the store and present them in a folder view. The shell object also allows searching information in the datastore.
A data unit that has to be stored in a WinFS store is called a WinFS ''Item''.
A WinFS item, along with the core data item, also contains information on how the data item is related to other data. This ''Relationship'' is stored in terms of logical links. Links specify which other data items the current item is related with. Put in other words, links specify the relationship of the data with other data items. Links are physically stored using a link identifier, which specifies the name and intent of the relationship, such as ''type of'' or ''consists of''.
The link identifier is stored as an attribute of the data item. All the objects that have the same link ID are considered to be related.
An
XML schema
An XML schema is a description of a type of XML document, typically expressed in terms of constraints on the structure and content of documents of that type, above and beyond the basic syntactical constraints imposed by XML itself. These constrai ...
, defining the structure of the data items that will be stored in WinFS, must be supplied to the WinFS runtime beforehand.
In Beta 1 of WinFS, the schema assembly had to be added to the GAC before it could be used.
Data model
WinFS models data using the data items, along with their
relationships, extensions and rules governing its usage.
WinFS needs to understand the type and structure of the data items, so that the information stored in the data item can be made available to any application that requests it. This is done by the use of schemas. For every type of data item that is to be stored in WinFS, a corresponding schema needs to be provided to define the type, structure and associations of the data. These schemas are defined using
XML
Extensible Markup Language (XML) is a markup language and file format for storing, transmitting, and reconstructing data. It defines a set of rules for encoding electronic document, documents in a format that is both human-readable and Machine-r ...
.
Predefined WinFS schemas include schemas for documents, e-mail, appointments, tasks, media, audio, video, and also includes system schemas that include configuration, programs, and other system-related data.
Custom schemas can be defined on a per-application basis, in situations where an application wants to store its data in WinFS, but not share the structure of that data with other applications, or they can be made available across the system.
Type system
The most important difference between a file system and WinFS is that WinFS knows the type of each data item that it stores. And the type specifies the properties of the data item. The WinFS type system is closely associated with the .NET framework's concept of
classes and inheritance. A new type can be created by
extending and nesting any predefined types.
WinFS provides four predefined base types – ''Items'', ''Relationships'', ''ScalarTypes'' and ''NestedTypes''.
An Item is the fundamental data object which can be stored, and a Relationship is the relation or link between two data items. Since all WinFS items must have a type, the type of item stored defines its properties. The properties of an Item may be a ScalarType, which defines the smallest unit of information a property can have, or a NestedType, which is a collection of more than one ScalarTypes and/or NestedTypes. All WinFS types are made available as .NET CLR
classes.
Any object represented as a data unit, such as contact, image, video, document etc., can be stored in a WinFS store as a specialization of the Item type.
By default, WinFS provides Item types for Files, Contact, Documents, Pictures, Audio, Video, Calendar, and Messages. The File Item can store any generic data, which is stored in file systems as files. But unless an advanced schema is provided for the file, by defining it to be a specialized Item, WinFS will not be able to access its data. Such a file Item can only support being related to other Items.
A developer can extend any of these types, or the base type Item, to provide a type for their custom data. The data contained in an Item is defined in terms of properties, or fields that hold the actual data. For example, an Item ''Contact'' may have a field ''Name'' that is a ScalarType, and one field ''Address'', a NestedType, which is further composed of two ScalarTypes. To define this type, the base class Item is extended and the necessary fields are added to the class.
A NestedType field can be defined as another class that contains the two ScalarType fields. Once the type is defined, a schema has to be defined, which denotes the primitive type of each field, for example, the Name field is a String, the Address field is a custom defined Address class, both the fields of which are Strings. Other primitive types that WinFS supports are
Integer
An integer is the number zero (0), a positive natural number (1, 2, 3, ...), or the negation of a positive natural number (−1, −2, −3, ...). The negations or additive inverses of the positive natural numbers are referred to as negative in ...
,
Byte
The byte is a unit of digital information that most commonly consists of eight bits. Historically, the byte was the number of bits used to encode a single character of text in a computer and for this reason it is the smallest addressable un ...
,
Decimal
The decimal numeral system (also called the base-ten positional numeral system and denary or decanary) is the standard system for denoting integer and non-integer numbers. It is the extension to non-integer numbers (''decimal fractions'') of th ...
,
Float,
Double
Double, The Double or Dubble may refer to:
Mathematics and computing
* Multiplication by 2
* Double precision, a floating-point representation of numbers that is typically 64 bits in length
* A double number of the form x+yj, where j^2=+1
* A ...
,
Boolean and DateTime, among others.
The schema will also define which fields are mandatory and which are optional.
The Contact Item defined in this way will be used to store information regarding the Contact, by populating the properties field and storing it. Only those fields marked as mandatory needs to be filled up during initial save.
Other fields may be populated later by the user, or not populated at all. If more properties fields, such as ''last conversed date'', need to be added, this type can be extended to accommodate them. Item types for other data can be defined similarly.
WinFS creates
tables for all defined Items.
All the fields defined for the Item form the columns of the table and all instances of the Item are stored as rows in the table for the respective Items. Whenever some field in the table refers to data in some other table, it is considered a relationship. The schema of the relationship specifies which tables are involved and what the kind and name of the relationship is. The WinFS runtime manages the relationship schemas.
All Items are exposed as .NET CLR
objects, with a uniform interface providing access to the data stored in the fields. Thus any application can retrieve object of any Item type and can use the data in the object, without being aware of the physical structure the data was stored in.
WinFS types are exposed as .NET classes, which can be instantiated as .NET objects. Data are stored in these type instances by setting their properties. Once done, they are persisted into the WinFS store. A WinFS store is accessed using an ''ItemContext'' class (see
Data retrieval
Data retrieval means obtaining data from a database management system (DBMS), like for example an object-oriented database (ODBMS). In this case, it is considered that data is represented in a structured way, and there is no ambiguity in data.
I ...
section for details). ItemContext allows transactional access to the WinFS store; i.e. all the operations since binding an ItemContext object to a store till it is closed either all succeed or are all rolled back. As changes are made to the data, they are not written to the disc; rather they are written to an in-memory log. Only when the connection is closed are the changes written to the disc in a batch. This helps to optimize disc I/O.
The following code snippet, written in
C#, creates a contact and stores it in a WinFS store.
// Connect to the default WinFS store
using (ItemContext ic = ItemContext.Open())
Relationships
A datum can be
related to one more item, giving rise to a one-to-one relationship, or with more than one items, resulting in a one-to-many relationship.
The related items, in turn, may be related to other data items as well, resulting in a network of relationships, which is called a many-to-many relationship. Creating a relationship between two Items creates another field in the data of the Items concerned which refer the row in the other Item's table where the related object is stored.
In WinFS, a Relationship is an instance of the base type Relationship, which is extended to signify a specialization of a relation. A Relationship is a mapping between two items, a Source and a Target. The source has an Outgoing Relationship, whereas the target gets an Incoming Relationship.
WinFS provides three types of primitive relationships – ''Holding Relationship'', ''Reference Relationship'' and ''Embedding Relationship''.
Any custom relationship between two data types are instances of these relationship types.
* Holding Relationships specify ownership and lifetime (which defines how long the relationship is valid) of the Target Item. For example, the Relationship between a folder and a file, and between an Employee and his Salary record, is a Holding Relationship – the latter is to be removed when the former is removed. A Target Item can be a part of more than one Holding Relationships. In such a case, it is to be removed when all the Source Items are removed.
* Reference Relationships provide linkage between two Items, but do not have any lifetime associated, i.e., each Item will continue to be stored even without the other.
* Embedding Relationships give order to the two Items that are linked by the Relationship, such as the Relationship between a Parent Item and a Child Item.
Relationships between two Items can either be set programmatically by the application creating the data, or the user can use the WinFS Item Browser to manually relate the Items.
A WinFS item browser can also graphically display the items and how they are related, to enable the user to know how their data are organized.
Rules
WinFS includes ''Rules'',
which are executed when a certain condition is met. WinFS rules work on data and data relationships. For example, a rule can be created that states that whenever an Item is created which contains field ''"Name"'' and if the value of that field is some particular name, a relationship should be created that relates the Item with some other Item. WinFS rules can also access any external application. For example, a rule can be built which launches a ''Notify'' application whenever a mail is received from a particular contact.
WinFS rules can also be used to add new properties fields to existing data Items.
WinFS rules are also exposed as .NET CLR objects. As such any rule can be used for any purpose. A rule can even be extended by inheriting from it to form a new rule that consists of the condition and action of the parent rule plus something more.
RAV
WinFS supports creating ''Rich Application Views'' (RAV) by aggregating different data in a virtual table format. Unlike
database view, where each individual element can only be a scalar value, RAVs can have complex Items or even collections of Items. The actual data can be across multiple data types or instances and can even be retrieved by traversing relationships.
RAVs are intrinsically paged (dividing the entire set of data into smaller ''pages'' containing disconnected subsets of the data) by the WinFS runtime. The page size is defined during creation of the view and the WinFS API exposes methods to iterate over the pages. RAVs also supports modification of the view according to different grouping parameters. Views can also be queried against.
Access control
Even though all data are shared, everything is not equally accessible. WinFS uses the
Windows authentication system to provide two data protection mechanisms.
First, there is share-level security that controls access to your WinFS share. Second, there is item level security that supports NT compatible security descriptors. The process accessing the item must have enough privileges to access it. Also in Vista there is the concept of ''"integrity level"'' for an application. Higher integrity data cannot be accessed by a lower integrity process.
Data retrieval
The primary mode of data retrieval from a WinFS store is querying the WinFS store according to some criteria,
which returns an
enumerable
An enumeration is a complete, ordered listing of all the items in a collection. The term is commonly used in mathematics and computer science to refer to a listing of all of the element (mathematics), elements of a Set (mathematics), set. The pre ...
set of items matching the criteria. The criteria for the query is specified using the
OPath query language
A query language, also known as data query language or database query language (DQL), is a computer language used to make queries in databases and information systems. In database systems, query languages rely on strict theory to retrieve informa ...
. The returned data are made available as instances of the type schemas, conforming to the
.NET
The .NET platform (pronounced as "''dot net"'') is a free and open-source, managed code, managed computer software framework for Microsoft Windows, Windows, Linux, and macOS operating systems. The project is mainly developed by Microsoft emplo ...
object model
In computing, object model has two related but distinct meanings:
# The properties of objects in general in a specific computer programming language, technology, notation or methodology that uses them. Examples are the object models of ''Java'', ...
. The data in them can be accessed by accessing the properties of individual objects.
Relations are also exposed as properties. Each WinFS Item has two properties, named ''IncomingRelationships'' and ''OutgoingRelationships'', which provide access to the set of relationship instances the item participates in. The other item which participates in one relationship instance can be reached through the proper relationship instance.
The fact that the data can be accessed using its description, rather than location, can be used to provide end-user organizational capabilities without limiting to the hierarchical organization as used in file-systems. In a file system, each file or folder is contained in only one folder. But WinFS Items can participate in any number of holding relationships, that too with any other items. As such, end users are not limited to only file/folder organization. Rather, a contact can become a container for documents; a picture a container for contacts and so on. For legacy compatibility, WinFS includes a pseudo-type called ''Folder,'' which is present only to participate in holding relationships and emulate file/folder organization. Since any WinFS Item can be related with more than one Folder item, from an end user perspective, an item can reside in multiple folders without duplicating the actual data.
Applications can also analyze the relationship
graphs to present various filters. For example, an email application can analyze the related contacts and the relationships of the contacts with restaurant bills and dynamically generate filters like ''"Emails sent to people I had lunch with"''.
Searches
The WinFS API provides a class called the ''ItemContext'' class, which is bound to a WinFS store. The ''ItemContext'' object can be used to scope the search to the entire store or a subset of it. It also provides
transactional access to the store.
An object of this class can then spawn an ''ItemSearcher'' object which then takes the type (an object representing the type) of the item to be retrieved or the relationship and the
OPath query string representing the criteria for the search.
A set of all matches is returned, which can then be bound to a UI widget for displaying ''en masse'' or enumerating individually.
The properties items can also be modified and then stored back to the data store to update the data. The ItemContext object is ''closed'' (which marks the end of association of the object with the store) when the queries are made or changes merged into the store.
Related items can also be accessed through the items. The ''IncomingRelationships'' and ''OutgoingRelationships'' properties give access to all the set of relationship instances, typed to the name of the relationship. These relationship objects expose the other item via a property. So, for example, if a picture is related to a picture, it can be accessed by ''traversing'' the relationship as:
ContactsCollection contacts = picture.OutgoingRelationships.Cast(typeof(Contact)).Value;
// This retrieves the collection of all outgoing relationships from a picture object
// and filters down the contacts reachable from them and retrieves its value.
// Or the relationship can be statically specified as
ContactsCollection contacts = picture.OutgoingRelationships.OutContactRelationship.Contact;
An OPath query string allows to express the parameters that will be queried for to be specified using ''
Item'' properties, embedded ''Items'' as well as ''
Relationships''. It can specify a single search condition, such as ''"title = Something'"'', or a compound condition such as ''"title = 'Title 1' , , title = 'Title 2' && author = 'Someone'"''. These Boolean and relational operations can be specified using
C# like ''&&'', '', , '', ''='', ''!='' operators as well as their English-like equivalent like ''EQUAL'', ''NOT EQUAL''.
SQL
Structured Query Language (SQL) (pronounced ''S-Q-L''; or alternatively as "sequel")
is a domain-specific language used to manage data, especially in a relational database management system (RDBMS). It is particularly useful in handling s ...
like operators such as ''LIKE'', ''GROUP BY'' and ''ORDER BY'' are also supported, as are wildcard conditions. So, ''"title LIKE 'any*'"'' is a valid query string. These operators can be used to execute complex searches such as
using (ItemContext ic = ItemContext.Open())
The above code snippet creates an ItemSearcher object that searches on the ''OutContactRelationship'' instance that relates pictures and contacts, in effect searching all pictures related with a contact. It then runs the query ''Name LIKE 'A*'"'' on all contacts reachable through ''OutContactRelationship'', returning the list of ''"contacts whose names start with A and whose pictures I have"''. Similarly, more relationships could be taken into account to further narrow down the results.
Further, a natural language query processor, which parses query in natural language and creates a well-formed OPath query string to search via proper relationships, can allow users to make searches such as ''"find the name of the wine I had with person X last month"'', provided financial management applications are using WinFS to store bills.
Different relations specify a different set of data. So when a search is made that encompasses multiple relations, the different sets of data are retrieved individually and a
union of the different sets is computed. The resulting set contains only those data items that correspond to all the relations.
Notifications
WinFS includes better support for handling data that changes frequently. Using WinFS ''Notifications'', applications choose to be notified of changes to selected data ''Items''. WinFS will raise an ''ItemChangedEvent'', using the .NET Event model, when a subscribed-to Item changes, and the event will be published to the applications.
Information Agent
WinFS includes an Information Agent feature for the management, retrieval, and storage of end-user notification rules and preferences for changes to items in the data store. Using Information Agent, it is possible to automatically define relations to new items based on events such as appointments, with an example being that appointments can be related to photos based on the dates the photos were taken, enabling queries for birthdays or holidays without needing to know the actual dates of such events ("''find all photos taken on this birthday''"). Other examples include automatically moving new items to specific folders based on a rule as determined by appointment times and dates the photos were taken ("''when I import a photo taken during a business event, move it to the Business Events folder''") or more complex possibilities. Information Agent can also forward notifications to other devices ("''if I receive a high priority email from my boss, send a notification to my phone''") and is similar to Rules and Alerts functionality of Microsoft Outlook.
Data sharing
WinFS allows easy sharing of data between applications, and among multiple WinFS stores, which may reside on different computers, by copying to and from them.
A WinFS item can also be copied to a non-WinFS file system, but unless that data item is put back into the WinFS store, it will not support the advanced services provided by WinFS.
The WinFS API also provides some support for sharing with non-WinFS applications. WinFS exposes a shell object to access WinFS stores. This object maps WinFS items to a virtual folder hierarchy, and can be accessed by any application.
Virtual folders can automatically share new content referenced by the query with users (a virtual folder for "''all vacation photos''" can automatically share new items returned by this query with users). WinFS data can also be manually shared using
network shares, by sharing the legacy shell object.
Non-WinFS file formats can be stored in WinFS stores, using the File Item, provided by WinFS. Importers can be written, to convert specific file formats to WinFS Item types.
In addition, WinFS provides services to automatically synchronize items in two or more WinFS stores, subject to some predefined condition, such as "''share only photos''" or "''share photos that have an associated contact X''".
The stores may be on different computers. Synchronization is done in a
peer-to-peer
Peer-to-peer (P2P) computing or networking is a distributed application architecture that partitions tasks or workloads between peers. Peers are equally privileged, equipotent participants in the network, forming a peer-to-peer network of Node ...
fashion; there is no central authority. A synchronization can be either manual or automatic or scheduled. During synchronization, WinFS finds the new and modified Items, and updates accordingly. If two or more changes conflict, WinFS can either resort to automatic resolution based on predefined rules, or defer the synchronization for manual resolution. WinFS also updates the schemas, if required.
Application support
Shell namespace
WinFS Beta 1 includes a
shell
Shell may refer to:
Architecture and design
* Shell (structure), a thin structure
** Concrete shell, a thin shell of concrete, usually with no interior columns or exterior buttresses
Science Biology
* Seashell, a hard outer layer of a marine ani ...
namespace extension, which surfaces WinFS stores as top level objects in ''My Computer'' view.
Files can be copied into and out of the stores, as well as applications can be directly used to save there. Even folders such as ''My Documents'' can be redirected to the stores.
WinFS uses ''Importer'' plug-ins to analyze the files as they were being imported to the store and create proper WinFS schemas and objects, and when taking the objects out, re-pack them into files.
If importers for certain files are not installed, they are stored as generic ''File'' types.
Microsoft Rave
''Microsoft Rave'' is an application that shipped with WinFS Beta 1. It allows synchronization of two or more WinFS stores, and supports synchronization in ''full mesh'' mode as well as the ''central hub'' topology. While synchronizing, Microsoft Rave will determine the changes made to each store since the last sync, and update accordingly. When applying the changes, it also detects if there is any conflict, i.e., the same data has been changed on both stores since the last synchronization. It will either log the conflicting data for later resolution or have it resolved immediately. Microsoft Rave uses
peer-to-peer
Peer-to-peer (P2P) computing or networking is a distributed application architecture that partitions tasks or workloads between peers. Peers are equally privileged, equipotent participants in the network, forming a peer-to-peer network of Node ...
technology to communicate and transfer data.
StoreSpy
With WinFS Beta 1, Microsoft included an unsupported application called ''StoreSpy'', which allowed one to browse WinFS stores by presenting a hierarchical view of WinFS Items. It automatically generated
virtual folders based on access permissions, date and other metadata, and presented them in a hierarchical tree view, akin to what traditional folders are presented in. The application generated tabs for different Item types. StoreSpy allowed viewing ''Items'', ''Relationships'', ''MultiSet'', ''Nested Elements'', ''Extensions'' and other types in the store along with its full metadata. It also presented a search interface to perform manual searches, and save them as virtual folders. The application also presented a graphical view of WinFS Rules. However, it did not allow editing of Items or their properties, though it was slated for inclusion in a future release. But the WinFS project was cut back before it could materialize.
Type Browser
WinFS also includes another application, named ''WinFS Type Browser'', which can be used to browse the WinFS types, as well as visualize the hierarchical relationship between WinFS types.
A WinFS type, both built-in types as well as custom schemas, can be visualized along with all the properties and methods that it supports. It also shows the types that it derives from as well as other types that extend the type schema. However, while it was included with WinFS, it was released as an unsupported tool.
OPather
WinFS Beta 1 also includes an unsupported application, named ''OPather''. It presents a
graphical interface for writing
Opath queries. It can be used by selecting target object type and specifying the parameters of the query. It also includes
Intellisense
Code completion is an autocompletion feature in many integrated development environments (IDEs) that speeds up the process of coding applications by fixing common mistakes and suggesting lines of code. This usually happens through popups while typ ...
-like parameter completion feature. It can then be used to perform visualization tasks like binding results of a query to a ''
DataGrid'' control, create views of the data in WinFS itself, or just extract the query string.
Project "Orange"
Microsoft launched a project to build a data visualization application for WinFS. It was codenamed ''"Project Orange"'' and was supposedly built using
Windows Presentation Foundation
Windows Presentation Foundation (WPF) is a free and open-source user interface framework for Windows-based desktop applications. WPF applications are based in .NET, and are primarily developed using C# and XAML.
Originally developed by Microso ...
.
It was supposed to provide exploration of ''Items'' stored in WinFS stores, and data relationships were supposed to be a prominent part of the navigation model. It was supposed to let people allow organization of the WinFS stores graphically as well – productizing many of the concepts shown in th
IWish Concept Video WMV File However, since the WinFS project went dark, the status of this project is unknown.
See also
*
Desktop organizer
*
GNOME Storage – a storage management system for the GNOME desktop
*
NEPOMUK
Nepomuk (; ) is a town in Plzeň-South District in the Plzeň Region of the Czech Republic. It has about 3,600 inhabitants. It is known as the birthplace of Saint John of Nepomuk, who was born here around 1340.
Administrative division
Nepomuk ...
*
ReFS
Resilient File System (ReFS), codenamed "Protogon", is a Microsoft proprietary file system introduced with Windows Server 2012 with the intent of becoming the "next generation" file system after NTFS.
ReFS was designed to overcome problem ...
*
Relational database management system
A relational database (RDB) is a database based on the relational model of data, as proposed by E. F. Codd in 1970.
A Relational Database Management System (RDBMS) is a type of database management system that stores data in a structured for ...
(RDBMS)
References
External links
WinFS BlogWinFS at the Microsoft Developer Network(
Internet Archive
The Internet Archive is an American 501(c)(3) organization, non-profit organization founded in 1996 by Brewster Kahle that runs a digital library website, archive.org. It provides free access to collections of digitized media including web ...
cache)
Channel 9 VideosWinFS NewsgroupWinFS Beta 1 PreviewWinFS area on NetFXGuide.com(
Internet Archive
The Internet Archive is an American 501(c)(3) organization, non-profit organization founded in 1996 by Brewster Kahle that runs a digital library website, archive.org. It provides free access to collections of digitized media including web ...
cache)
{{DEFAULTSORT:Winfs
Microsoft application programming interfaces
Windows disk file systems
Windows administration
Semantic file systems
Articles with example C Sharp code