Den saknade LINQ

I min förra kolumn var en av frågorna jag tog upp behovet av LINQ (Language Integrated Query) som ännu ett datafrågespråk. Jag var glad över att få ett stort antal e-postmeddelanden som instämde i min åsikt, plus några som pekade på fördelarna med LINQ framför SQL. Intressant nog kom de flesta mejlen mot LINQ från personer som jag själv, som har tillbringat många år i IT-sektorn och som det kan vara lätt att avfärda som ”griniga gamla GITs”, vilket är vad Mark Saragossi från Octa föreslog att vi skulle kunna vara. kallad. Men det skulle vara att bortse från alla dessa år av verklig erfarenhet av jobb där behovet av att producera fungerande, tillförlitlig kod i tid är mycket viktigare än att koda med de senaste – ofta oprövade – teknologierna.

Den saknade LINQ

Vissa korrespondenter, som Gouranga Gupta från Omnibus, föreslog att LINQ:s arraykoncept i stället för att introducera en helt ny syntax kanske kunde utökas till att omfatta SQL-liknande funktionalitet. På så sätt kunde vi samla in data i en datauppsättning och sedan fråga dem med ett språk som är väl förstått. Några av e-postmeddelandena antydde att LINQ har fördelen framför SQL genom att vara en språkfunktion i VB9 och C#3 och som sådan stöds fullt ut i Visual Studio 2008. Så varför kan inte SQL också höjas till denna höga nivå ?

En annan sak är att LINQ-frågor kan göras så komplicerade som du vill och kommer att optimeras ner till effektivare SQL av systemet. Frågeoptimeraren i SQL gör dock detta redan med dina befintliga frågor och hur som helst, de flesta av oss har för länge sedan lärt oss vad som fungerar bra när det gäller frågor, så detta är knappast en anledning till att flytta till LINQ. Andra, som Alex Macklen, beskrev vissa fördelar med LINQ:s typkontroll, vilket kan vara till hjälp vid överföring av data från Oracle med dess UTF-8-text till ett system som använder Unicode-strängar, och erbjuder möjligheten att minska tur och retur till servern genom att använda heterogena operationer – det vill säga sådana som dynamiskt läser in data i en datauppsättning som finns i minnet som kan frågas av LINQ om och om igen utan ytterligare serveråtkomst. Liknande beteende kan uppnås i SQL Server genom att cachelagra, men det finns fortfarande ett anrop från din server som kör koden till servern som innehåller databasen.

Uppenbarligen är det viktigt att det finns människor där ute som tänker på hur databasteknologier ska utvecklas och på nya svar på både gamla och nya problem. För mig är dock det största problemet att vi redan har ett frågespråk så väletablerat att det inte försvinner snart, så varför inte utöka det språket för att passa dagens behov snarare än att skapa en helt ny syntax? Man får en misstänksam känsla av att sådana beslut fattas av in-grupper som är mer intresserade av vad som kommer att bedömas som ”coolt” än av överväganden om verklig nytta. Det hela påminner mig om den sena betaversionen av Windows, som vi har fått höra var mycket nära att släppa kod, bara för att upptäcka att den inte kunde skriva ut till nätverksskrivare. Det får dig ibland att undra vad dessa människor gör hela dagarna.

Låt oss få LINQing

Efter att ha ägnat dessa kolumntum åt att säga att det inte finns något behov av LINQ, kommer detta nästa avsnitt nu att förklara för dig en riktigt användbar tillämpning av tekniken. Jag kommer ofta på mig själv med att vilja fråga filsystemet för att få information om filerna det innehåller: till exempel en uppladdningsmapp som finns på en webbserver. Att göra detta via SQL innebär att man skriver massor av kod och fungerar undantagslöst inte särskilt tillförlitligt, så det var med intresse jag läste hur LINQ borde kunna göra detta bättre. Jag står fast vid min uppfattning att SQL borde förbättras för att göra detta möjligt, men tills det är det kan du vara intresserad av att se hur man frågar filsystemet via LINQ. Jag rekommenderar att du först laddar ner den kostnadsfria Express-versionen av Visual Studio 2008, som nu släpps offentligt; dess förbättrade IntelliSense och fullständigare stöd för Ajax-tillägg kommer att göra kodningen mycket enklare, och den kommer samtidigt att installera .NET Framework 3.5, som du kommer att behöva. Vänligen gör denna nedladdning till en extra virtuell maskin ifall det förstör din gamla kod.

Lämna en kommentar

Din e-postadress kommer inte publiceras.