10 Aralık 2007

Kısa Bir "Veda"

Zor bir veda yazısı ama en güzel tarafı "elveda yazısı" olmaması. Anlaşılacağı üzere askerlik görevim ile ilgili bir veda yazısı okuyorsunuz. 12 Aralık Çarşamba günü Elazığ'da birliğime teslim olacağım. Jandarma-Er olarak yapacağım kısa dönem askerlik görevim süresince (5 ay 5 gün boyunca) sizlerle olamayacağım. Allah nasip ederde sağ salim dönersek kaldığımız yerden devam edeceğiz.

Bu sabah askerliğimin nereye çıktığın heyecanla beklediğim uzun süre içerisinde geçmişte neler yapmışım diye bir bakındım ve ilginç istatistiklerle karşılaştım. Şöyleki bugüne kadar;
- En az 50'si teknik içerikli olmaz üzere 130'un üzerinde blog postuyla 25 binin üzerinde ziyaretçiyle,
- 18 seminer ve 9 webiner ile 800'ün üzerinde kişiyle,
- Yaklaşık 20 makale, 17 video ve 2 dergi yazım ile yazgelistir.com, msakademik.net, turkaspx.net, nedirtv.com gibi sitelerde ve PC Magazine dergisinde sayısı pekte az olmayan okur ve izleyenle buluştum, bilgiyi paylaşmaya, paylaştıkça arttırmaya çalıştım.

Umarım büyük haz alarak yaptığım bu işlere askerden döndüğümde de aynı şekilde devam edebilirim.

Tekrar görüşmek dileğiyle, bana ve tüm Mehmetçiklere hayırlı teskereler...

ASP.NET 3.5 Extensions CTP Preview Resmen Duyuruldu

Geçtiğimiz günlerde blogumda hem duyurusunu, hem de detaylı açıklamalarını yaptığım ASP.NET 3.5 Extensions paketinin CTP Preview sürümü bugün resmen duyuruldu. Detaylı bilgiler ve download işlemi için bu linki kullanabilirsiniz.

Bu paket ile ilgili kurulumları yapmayı ve ilk izlenimlerimi de sizlere iletmeyi çok isterdim ama yarın akşam askerim. Askerden sonra RTM sürümünün izlenimlerini sizlere iletmek dileğiyle :)

05 Aralık 2007

ASP.NET 3.5 Extensions

.NET Framework 3.5 ve beraberinde ASP.NET 3.5 geçtiğimiz günlerde resmen duyurdu. C# tarafında LinQ gibi önemli yenilikler geliyor olsa da web uygulamalarında çok büyük yeniliklerin olmadığını da söyleyebiliriz. Ama 3.5 olayı burada bitti sanmayın zira ASP.NET ekibi çok yakın bir zamanda önemli bir paket ile bombayı patlatacak gibi: ASP.NET 3.5 Extensions. Aslında Microsoft bunun bir benzerini ASP.NET 2.0'ın ardından ASP.NET AJAX Extension'ı duyurarak yapmıştı. Şimdi de benzeri bir strateji ile geliyorlar. AJAX ancak 3.5 sürümünde mimariyle bütünleşti, belki bu son yenilikler de ASP.NET 4.0 (böyle bir sürüm olur mu bilinmez) ile bütünleşik gelecektir. Nacizane yorumlarımdan sonra gelelim ASP.NET 3.5 Extension'larına. Sevgili Scott Guthrie hocamızın .NET Web Product Roadmap başlıklı yazısından da gerekli bilgileri edinebilirsiniz.

Aslında ASP.NET 3.5 Extensions içerisinde daha önceden duyurulan ASP.NET Futures paketindeki kontroller ile ASP.NET MVC Framework'ün olduğunu söylesem pek te yanlış olmaz. ASP.NET 3.5 ile ilgili geçen ay yazdığım yazıda ASP.NET Futures paketi ile gelen kontrollerin eklenmediğinden şikayetçi olmuştum hatırlayacağınız gibi. Sanırım benim ve çoğu web programcısının sesini duymuşlar :) Aşağıda bizleri bekleyen yenilikleri hakkında kısa bilgileri bulabilirsiniz.

ASP.NET MVC Framework: Bu kısmı çok uzun anlatmama gerek yoktur sanırım. Zira bir önceki yazımın içeriği tamamen bu uygulama desenini anlatıyor. MVC (Model View Controller) adı verilen uygulama deseni ile uygulamanın üç ayrı katmanda yazılması yoluna gidiliyor. Model kısmında veri ile ilgili nesneler (DataTable, DataSet ve kendi veri nesnelerimiz), View kısmında User Interface'lerimiz (aspx, ascx, master sayfalar) Controller kısmında ise kullanıcının View ve Model kısmındaki nesneler ile etkileşimini sağlayacak class'larımızın bulunmasını öngören bu model yavaş yavaş günlük hayatımıza girecek gibi.

ASP.NET AJAX Tarafındaki Geliştirmeler: Futures paketinden tanıdığımız History kontrolü bu paketin içerisinde olacak. AJAX sayfalarında tarayıcıdaki ileri-geri gitme problemini çözecek olan bu kontrol asenkron postbackler esnasında sayfanın URL kısmını değiştirerek tarayıcının değişen sayfa içeriklerini geçmişine kaydetmesini sağlıyor. Umarım bu kontrol aynı zamanda arama motorlarının asenkron postback ile değişen sayfa içeriklerini de yakalamasını sağlayabilir. Ya da ilerleyen günlerde ASP.NET ekibi bu yönde geliştirmeler yapabilir.

Dinamik Veri (Dynamic Data) Desteği: Yine Futures paketinden tanıdığımız bir özellik. DynamicAutoData, DynamicList, DynamicNavigator, DynamicRssLink ve adını hatırlayamadığım bazı veri kontrolleri ile bir veritabanında yapacağımız Select, Insert, Update, Delete gibi işlemleri neredeyse kod yazmadan gerçekleştirebilmemizi sağlıyor. .NET Framework 3.5 ile gelen Database Markup Language (dbml) dosyaları ile dinamik veri kontrollerini birlikte düşününce ve üstüne MVC Framework'ü de katınca bu yeniliklerin MVC'nin Model katmanını oluşturacağını söyleyebiliriz.

SilverLight Desteği: SilverLight artık ASP.NET ile giderek bütünleşiyor. Tahminen yine Futures paketindeki Media ve XAML kontrollerinin ekleneceği bu pakette ASP.NET ile SilverLight'ın entegrasyonunun daha da kolaylaşacak. Yani daha interaktif daha zengin içerikli sayfalar geliyor.

ADO.NET Veri Servisleri (Data Services): ADO.NET Entity Framework adı verilen bu pakette ASP.NET 3.5 Extensions ile birlikte duyurulacak. Object Relation Mapping (ORM) desteği ile daha da güçlenen .NET Framework 3.5'teki veri işlemleri aslında bu framework altında toplanıyor gibi. Artık veri ile ilgili her türlü işlemi oluşturacağımız veya SqlMetal aracı ile oluşturulacak class'lar ile gerçekleştireceğiz gibi...

Yine ASP.NET Futures'la gelen IronPhyton ve Managed JScript gibi dinamik diller ile ilgili olarak Scott Guthrie'ın postunda bir bilgi göremedim ama bir soruya yazdığı yorumda bu konuda da çalışmaların olduğunu belirtmiş. Bu konuyla ilgili de yenilikler gelecek gibi.

03 Aralık 2007

ASP.NET MVC Nedir?

Son zamanlarda yabancı kaynakları takip ediyorsanız eminim ki MVC harflerini ASP.NET'in hemen yanında sıklıkla görmüşsünüzdür. MVC yani Model View Controller. MVC mimarisi aslında daha önceden de duyulan bir tasarım deseniydi (design pattern) programlama dünyasında. Bu yaklaşımdaki temel mantık bir web projesini üç temel parçaya bölmek ve yapılacak işleri bu parçalar üzerinden yürütmektir. Hazırladığımız projelerde sıklıkla kullandığımız uygulamayı iş katmanı ile veri katmanı olarak ayrı parçalara bölmeyi buradaki yaklaşım ile benzeştirebiliriz. Aslında temel amaç uygulamayı işe yarar belirli amaçları olan parçalara bölmek ve bir parçanın değişiminden diğer parçaların etkilenmesini engellemektir.

MVC uygulamanın Model, View ve Controller olarak üçe ayrılmasını benimseyen bir tasarım desenidir.

- Model veri ve durum bilgilerini taşır. Burası DataTable, DataSet ve entity katmanımızdaki sınıfların bulunduğu bileşendir.

- View uygulamanın arayüzlerinin bulunduğu bileşendir. Master sayfalar, aspx ve ascx gibi kullanıcının görüntüleyeceği dosyalar bu kısımda yer alır.

- Controller ise arayüzler arasındaki etkileşimi sağlayan, veri nesneleri üzerinde değişiklik yapılmasını sağlayan bileşenlerdir. İşte burada benim çok ilgimi çeken bir yenilik çıkıyor karşımıza. Controller katmanındaki sınıflar aracılığıyla etkin URL Mapping işlemi yaparak artık tarayıcı üzerinden sayfalara istek yapmak yerine nesnelere istekte bulunabiliyoruz. Yani URL üzerinden tarayıcıda görüntülenecek nesnenin render edilmesi sağlanabiliyor.


Sol kısımdaki resimde bu desenin bir projeye nasıl uygulandığının basit bir örneğini görebilirsiniz. MVC tasarım deseni, önümüzdeki yıllarda bir ASP.NET programcısının hayatına girecek önemli kavramlardan biri olacak gibi. Zira Microsoft ASP.NET yazılım geliştirme grubunun önümüzdeki günlerde çıkarmayı düşündüğü ASP.NET 3.5 Extensions ile birlikte resmen web uygulamarına dahil edilecek bu desen. Üzerinden daha detaylı araştırmalar ve çalışmalar yapılması gereken konular. Ben askerde iken eminim ki ASP.NET 3.5 Extensions ve ASP.NET MVC konularında birçok teknik yazı yazılacaktır. İnşallah dönüşte keyifle okuyabilirim.

Daha detaylı bilgiler için Scott Guthrie'nin blogundaki şu başlıkları okuyabilirsiniz:
ASP.NET MVC Framework
ASP.NET MVC Framework (Part 1)
ASP.NET MVC Framework (Part 2): URL Routing