Present State and Future Direction of
LINQ
At the time of this writing, LINQ is still in a beta stage. LINQ
made its first appearance in September 2005 as a technical preview. Since then,
it has evolved from an extension of Visual Studio 2005 to an integrated part of
the next .NET Framework release (version 3.5) and the next Visual Studio
release (code-named “Orcas”).
The first released version of LINQ will directly support some data
domains, as we saw in the “LINQ
Flavors” section that appeared earlier. However, LINQ can be extended
to support other data domains. Possible extensions could be something like LINQ
to SharePoint, LINQ to Exchange, and LINQ to OLAP, just to name a few examples.
Actually, some possible implementations are already available using LINQ to
Objects-we have already seen a possible LINQ to Reflection query in the “LINQ
to Objects” section.
Another point of extensibility of LINQ is the provider model
included in LINQ to SQL and LINQ to Entities. Beta versions of LINQ support
only SQL Server databases, but it is possible to implement a provider for any
other relational database. We can expect that many providers will be written by
developer communities and third parties.
LINQ is likely to have an impact on the way applications are coded.
It would be an error to think that LINQ will change application architectures,
because its goal is to provide a set of tools that improve code implementation
by adapting to several different architectures. However, we cannot avoid
speculating that LINQ might affect some critical parts of the layers of an
n-tier solution. For example, we envision the use of LINQ in a SQLCLR
stored procedure, with a direct transfer of the query expression to the SQL
engine instead of using an SQL statement.
Many possible evolutions could originate from LINQ, and we
should not forget that SQL is a widely adopted standard that cannot be easily
replaced by another, just for performance reasons. Nevertheless, LINQ is an
interesting step in the evolution of current mainstream programming languages.
The declarative nature of its syntax might be interesting for uses other than
data access. We already cited PLINQ, a research project that is an example of
the current studies in this direction. Many other services can be offered by an
execution framework to a program written using a higher level of abstraction
such as the one offered by LINQ. A good understanding of this new technology
might be important today, but it could become fundamental tomorrow!