ORM'de Su Bulanık
Evet, anladık: kimse artık hart hurt SQL yazmak istemiyor. Zaten sunucu tarafında karmaşık SP yazma devrini de çoktan bitirmiştik. Vaktidir o zaman yeni moda işlere girişmenin. Değil mi dostlar?
Camiadaki yeni temayül, kod üreteçler kullanmak ve ORM kütüphaneleri ile ilişkisel verileri konforlu biçimde, SQL'e bulaşmadan manipule etmek. Bu eğilim Java camiasından bizim camiaya naklolmuştur, kabul.
Yalnız bu temayül artık doruk noktasına ulaştığından olsa gerek, ortalık ORM'den geçilmiyor. Şu listeye bir bakınız:
- .NET Persistence
- BBADataObjects
- DataObjects.NET
- Data Tier Modeler for .NET
- DotNorm
- Eldorado.NET
- Enterprise Core Objects (ECO™)
- Entity Broker
- eXpress Persistent Objects for .NET
- FastObjects.NET
- JC Persistent Framework
- LLBLGen Pro
- ModelWorks
- Nhibernate
- Nolics.NET
- Norm
- Norpheme
- ObjectBroker
- ObjectSpaces
- ObjectSpark
- Objectz.NET
- OJB.NET
- OPF.Net (Object Persistent Framework)
- ORM.NET
- Pragmatier Data Tier Builder
- RapTier
- Sisyphus Persistence Framework
- TierDeveloper
- Bob.NET
- ObjectPersistor.NET
- Genome
En eskileri belki Nhibernate ama bu kalabalık, insanın üzerinde "akşam üstü İstanbul trafiği" etkisi oluşturuyor ve iyiyi-kötüyü ayırt ettirmez oluyor.
Bu kalabalık ürün listesi arasında ticari olanlar da var ama genel itibariyle açık kodlu. Açık Kod rüzgarının .NET camiasında artık esip gürlediğinin bir delili bu liste.
Ya MS cephesi?
Microsoft'un elinin armut toplamadığını tahmin edebildiniz: o da ADO.NET Entity Framework ve yepyeni bir sorgulama yapısı olarak LINQ kartlarını açtı. İşin garibi herkes çok beğeniyor MS'in yaptıklarını. Microsoft bu LINQ işini o kadar ciddiye alıyor ki, C#'ı sırf bu işe destek için güncelliyor. Son günlerde "her şey linq için".
LINQ emekleme sürümünde henüz. Performans darboğazı var. Ama koşmaya başladığında, şu yukarıdaki listenin LINQ entegrasyonu yapmaktan başka çıkar yolu görünmüyor.
Netice
- Halkın SQL'den kurtulalım çırpınışları yerindedir, desteklenmelidir.
- ORM karmaşasına (hele de ticari olanlarına) pek dalmamak lazımdır.
- "Linq to SQL" insanı cezbediyor, bir an evvel uygulamak lazımdır:
- .NET 2.0 uygulamaları öntanımlı olarak LINQ desteklemiyor ama LINQ kullanan bir kütüphaneyi kullanabilir.
- .NET 3.5'ta LINQ kullanmayanı dövüyorlar.
- Performansın kritik olduğu uygulamalara, LINQ takoz olacaktır.
