Son zamanlarda parlayan bir iş kolu var: SEO uzmanlığı ve danışmanlığı. SEO arama motoru optimizasyonu manasına gelip teknik bir kavram görüntüsü verse de esas olarak sanal ortamın arama motoru odaklı pazarlama faaliyetlerine işaret ediyor. Arama motorları - özellikle Google - devlerin ve cücelerin güreş meydanına dönmüş durumda.

Size bu olimpik atmosferde koçluk tavsiye edenler de çok olacaktır. Kapınızı SEO SEO diye çok aşındıranlar bulacaksınız. Web ile ilgili bir şeylere gözünüz takıldığında SEO-Friendly denen şeyin ne de çok tekrar ettiğine şahit olacaksınız.

Bu tavsiye dizilerinde en çok geçen başlıklardan birisi, temiz ve manalı URL meselesidir. Eskiden karışık kuruşuk, şifrelenmiş URL'ler prestij meselesi iken SEO ilkeleri durumu tersine çevirmiştir. Yâni Hotmail'in hâlâ devam ettirdiği şu URL yapısına mukabil:

http://login.live.com/login.srf?wa=wsignin1.0&rpsnv=10&ct=1199394131&rver=4.5.2130.0&wp=MBI&wreply=http:%2F%2Fmail.live.com%2Fdefault.aspx&id=64855

şunun gibi URL'ler:

https://secure.del.icio.us/login

daha evlâ denilmektedir.

"IIS 7 ile Fazlalıkları Aldırabiliyoruz" devam ediyor »

04.01.2008 | Muhammed Tahiroğlu | 4 yorum

WAS nedir hocam?

Aslında arada bir "P" harfi noksan: Windows Process Activation Services. Windows 2008 ve Vista'nın bir iç bileşeni.

Ne işe yarıyor?

Yeni Web sunucumuz IIS 7'nin işlem etkinleştirme (process activation) mimarisini tamamlıyor. Bir sürü teknik dokuman okuyarak elde edeceğiniz bilgi şu ki, IIS uygulamaları artık sadece HTTP protokolünden değil de TCP, MSMQ ve Named Pipes gibi farklı protokoller ile de ayağa kalkabiliyor. Böylelikle Windows Communication Services (WCF) uygulamaları (yani servisler) bu saydığımız protokoller üzerinden IIS'in bir takım işlem yetenekleri ile çalışabiliyor.

Önceki durum, IIS-WCF işbirliğinde HTTP protokolüyle sınırlı olmaktı. Şimdi servis sunma işi daha doğru bir yere oturdu. Meselâ hem NetTcpBinding kullanıp performans kazanalım hem de IIS'in Application Pool nimetlerinden (recycling, health monitoring, rapid failure protection, vs.) sonuna kadar istifade edelim. İşin özü bu.

WAS Nerede?

Ararsanız bulamazsınız. Windows 2008 ve Vista'da sonradan açılan bir özellik olarak duruyor. Ancak bu isimde bir konsol veya ekran bulamayacaksınız kursanız bile. Çünkü kendisi bir arka plan teknolojisi. IIS üzerinde TCP Binding ile bir WCF uygulaması host ettiğiniz anda WAS kullanmışsınız da haberiniz yok demektir. O hâlde W3SVC'yi kapatabilirsiniz, çünkü web sunucuya ihtiyacınız yok.

Faydalı Okumalar

WAS ile bir servis çalıştırmaya kararlı iseniz sizi kimse tutmasın. Biz daha anlaşılırını yazana kadar şu okumalar isabetlidir:

28.12.2007 | Muhammed Tahiroğlu | 0 yorum

Hafta sonu sıkıldık diyelim. İşte güzel bir vakit geçirme teklifi. Bakalım ASP.NET MVC pişmiş mi bir tadına bakalım.

Teknoloji bıraktığımız yerde değil, mütemadiyen tekâmül ediyor. ASP.NET çıkınca çok ilgi göstermiştik. Şimdi bakıyoruz geriye, kaç sene oldu. Meraklısına yeni ortamlar lâzım. Sağolsun Microsoft'un ürünlerindeki bir sonraya bırakılmış çözümler bu beklentiyi her zaman sıcak tutuyor. ASP.NET için de öyle oldu denilebilir. Gelinen noktada, klasik ASP.NET ile geliştirmenin çoğu durumda isteneni karşılamadığı, mimâri olarak geliştiricinin önünü tıkadığı yüksek sesle konuşulur oldu. Bu sesler Microsoft tarafından da dinleniyordu muhakkak ve onlar da MVC yaklaşımını ASP.NET sisteminin içine gömdüler. Daha doğrusu gömecekler de prova yapıyorlar.

Bu yazımızda, çay-kahve-çorbamızı alıp şu yeni MVC ne menem bir şeymiş, ona eğileceğiz. Umarız, zevkli bir teknik yazı olur ve biz de memnuniyetle yayımlarız. Vira bismillah!

"Bir ASP.NET MVC Deneyi" devam ediyor »

16.12.2007 | Muhammed Tahiroğlu | 3 yorum

Dağıtık Uygulamalar...

Kim çevirdiyse dilimize, çok iyi yapmış. "Distributed" demeye dilimiz varmıyor artık. Her neyse. Bu tür uygulamalar yazmak için her üç yılda bir alternatifler sunuluyor önümüze. Microsoft'un en son ikramı ise, .NET 3.0 kutusundan çıkan Windows Communication Foundation.

Bu "foundation" ile ilgili yazıları, muhabbetleri muhtelif mecralardan takip etmişsinizdir zaten. Bizim merak ettiğimiz ise bu teknolojiyle boğuşanların varlığı. Hiç acaba ben mevcut dağıtık yapımı WCF ile yeniden gerçekleyeyim deyip kolları sıvayan oldu mu? Lütfen yerel düşünün. Kendi şehrinizden, İstanbul'dan ya da mahallenizden başlayın.

WCF acaba COM+ - Remoting - Web Services evrelerine bulaşmış yerli yazılım kuvvetlerimizin kaçında hayat bulmaya başladı?

Microsoft sunumları devirdi, bitirdi. Halkımızda bir kıpırtı, bir kımıltı filan göremiyoruz? Yoksa var da biz mi halkımıza duyarsızlaştık a dostlar?

WCF'nin süper bir şey olduğundan mı bu aşırı merakımız? Asla. Daha ilk sürümündeki bir yazılım ürünü için temkinli durmak elbette akıllıcadır. Ama bu onunla ilgili tecrübelerimizin oluşmayacağı anlamına da gelemez.

İmdi, WCF yatağını buldu akıyor. Dünya üzerinde, yazılım mimarları bu olaya odaklanmış kahvelerini yudumluyorlar. Sorduğunda da 5 sene ömür biçiyorlar bu abuk teknolojiye. Bebek doğdu, olgunlaşacak ve ölecek.

Bebeği kucağınıza alıp, onunla beraber insanoğlunun başımıza sardığı yeni bir mimari yaklaşımı öğrenmeye ve uygulamaya ne dersiniz? Yoksa uyguluyor musunuz?

Tecrübelerinizi kamu oyu ile paylaşabilirsiniz efendim. Evcil.net'in kapıları açık, bilgievcil.net.

WCF ile.

13.12.2007 | Muhammed Tahiroğlu | 0 yorum

.NET 3.5 ile programlama tarafına "gelen" en önemli yenilik budur efendim. [Gelmek eylemini neden vurguladığımı merak eder gibisiniz. Bırakın o tırnaklar, bu sefer izahatsız kalsın.]

LINQ, gerçekten acayip bir şey. Öncelikle açılımına bakalım: Language Integrated Query. İfâ ettiği vazifeyi adında taşıyor gördüğünüz gibi: dil ile bütünleşik sorgulama altyapısı.

Basit bir problemle başlayalım.

Elinizde sayılardan oluşan bir dizi var. Bunların arasından 3 ile bölünebilenleri istiyorum sizden. Bir program yazarak cevaplıyorsanız bu soruyu, ne yaparsınız?

Önce yeterli boyutta sahte diziyi tanımlarsınız:

int sayilar = new int[] {1,2,3,4,5,6,7,8,9,10};

Sonra mevlevîler gibi döne döne 3'e bölünebilmeyi test eder ve yazarsınız:

"LINQ Keşifleri (1) - Koleksiyonları Sorgulamak" devam ediyor »

10.12.2007 | Muhammed Tahiroğlu | 0 yorum

Bir üst framework yazmak / kullanmak ne denli zahmetlidir, biliyor muydunuz?

Microsoft yazmış bir framework, üstüne yine yazmış Application Block'lar, Enterprise Library'ler. Sonra üçüncü taraflar (çeviri Google'dan) yazmış başka başka yazılım geliştirme altyapıları. Ortalık standartlaşma, merkezileşme, kurallılaşma hevesiyle dalga dalga, duman duman.

İşveren veya "ekipler âmiri" ne istiyor? Kodcuma bağımlı olmayayım. Plug-and-play kodcularım olsun. Tuğlaları birleştiren, duvarı ören işçiler gibi. Tuğlanın yapısı hakkında, duvarın tasarımı hakkında bir fikri olmasın. Fikri olsa bile bunu kendine saklasın. İşyerinden tuğla kaçırsa bile, başka bir duvara uymadığı için tuğlalar elinde patlasın. Bir gün stok tarafında tuğla dizmiş kodcumuz, ertesi gün izne ayrılmış diğer arkadaşının yerine muhasebe tuğlaları dizebilsin. Üstelik, esneklik ister âmiri. Yazılımlar rahat rahat sünebilmelidir, genişleyebilmelidir. Her gün değişen iş ve rekabet koşullarına göre dinamik bir biçimde geliştirilebilmelidir. Kodlar yapış yapış olmuş makarnaya dönmeden konforlu biçimde yazılabilmelidir. Zaman da kazanmak ister âmir. Sıkıştırma algoritması bir kere yazılsın ister, her kodcu, gerektiğinde kendi zip'ini yazmaya kalkışıp geceler, gündüzler tüketmesin ister.

Hangi sebeple olsun altyapı gereklidir. Kodcu istesin veya istemesin, gereklidir.

Kodcunun hayalleri, idealleri vardır. Kendi algoritmalarını yazıp, kendi imzalarını atmak ister. Kod içerisine şakalı açıklamalar yazmak düşler. Kimisi âşıktır, şiire verir kendini. Döngü içerisinde sıcak kalp atışları duyulur. İtiraf.com'dan çok daha öte bir şeydir bu. Çok insancıldır. İnsan emeğinin yazılıma dönüştüğü noktada, alınteri ışıltısıdır bunlar. Kodcu, altyapının kendini sınırladığını düşünür bu zamanlarda. Altyapı olmasa süper bir kodcu olacaktır, sağdan soldan teklif gelecektir. Bu bir ressamın, yaptığı bir tablonun altına adını yazamaması gibi azap verici hâle gelir onda. Ah şu altyapı olmasa veritabanına nasıl da bağlanırım der. Nasıl da hızlı çalışan kodlar yazarım! Tüm değişkenleri tek satırda nasıl da tanımlarım. Rem'lerle adımı nasıl da yazarım kodların arasına. Ustalığımı konuştururum. Ben gitsem bile adım kalır bâki.

Öyle olmaz işte. Altyapı, kodcuyu kendi mahallesine çeker, döver de döver. Hem ruhen hem bedenen bir eğitime tâbi tutar. Kazançlı da çıkar aslında kodcu bir anlamda. Daha tertipli kod yazmayı öğrenir. Bot gibi çalışmaya başlar. Akşam eve gidince normal insana dönmesi gerekir yalnız. Altyapının da kararında olması lazımdır.

Şöyle erer ruhlar itminâna:
Devir tüketim devridir. Acımasızca bir tüketim. Bandwith'ler, "storage"lar... servet gibi yığılır insanın önüne. Tek tasarruf etmesi gereken şey "zaman"dır bu çağda. Çünkü artırdığı zamanı, daha fazla tüketim için kullanacaktır. Evet kardeşim evet, altyapı da, framework de bir tüketim aracıdır. Eskisinden daha fazla kod çalışıyorken arka planda, kodcunun daha az kod yazması, onun hakikaten daha az kod yazdığı anlamına gelmemektedir. Çünkü artan zamanda yine kod yazan kodcumuz, tüketimin zâlim çarkına girmiş bulunmaktadır.

İşin acısı nedir bilir misiniz? Bunun farkında olarak yaşamak. Ve Orta Çağ'ı kapatıp Yeni Çağ'ı açacak kudretten mahrum olmak.

Son olarak, bu da bir dış bağlantı olsun, gönülden kopan: Why frameworks are a good thing?

Yazının özgün hâli www.tahiroglu.com sitesinde yayımlanmıştır.

03.12.2007 | Muhammed Tahiroğlu | 0 yorum

Scott Bey, Microsoft'un "coder" görünümlü pazarlama şefi olarak bize vizyonu işaret etti. Biz de görevimizi yerine getirelim ve hadi onun pazarlama bültenine bağlantılar vererekten coşkuyu yurt sathına yayalım.

Aferin adama. Öyle bir kamu oyu oluşturuyor ki, her yazdığı binlerce insanın yazdığına temel teşkil ediyor.

Biz de geleneği bozmuyoruz efendim. 3.5 demişken devam ediyoruz. Developer Division Manager'imizin işaretiyle kalkıyoruz, şahlanıyoruz.

Scott Bey, ASP.NET'i Visual Studio 2008 ile paketledik, verdik size ama bizde durmak yok diyor. ASP.NET'e ek olarak gelişme safhasında birkaç parça ürünümüz var. Bunlar da zat-ı âlilerinin blog sayfasından ilânıyla vücut bulacak.

Bir hafta içerisinde perdelerini aralayacaklarını söylediği genişletme paketinde neler yer alıyor dersiniz?

ASP.NET MVC !

Model-view-controller mimarisinin ASP.NET'e uygulanmış iskeleti nihayet bu paket ile evlere konuk oluyor. Web sayfası icra sürecini VB Formları paradigmasından çok farklı bir şekilde ele alan MVC deseni resmi  ASP.NET dünyasında bir ilk olacak. Mevcut web sayfası icra şeklinden bunalan geliştiriciler, heyecandan kasılmış biçimde bu eklentiyi bekliyorlar. MVC'nin uygulanmasıyla arayüz katmanı iş ve tanım katmanından tamamen sıyrılacak ve bağımsız hareket edebilecek. Web formları yerine başka görünüm bileşenleri kullanılabilecek.

AJAX'ta İlerlemeler

MS artık AJAX gazını içselleştirdiği için her güncellemede bir öpücük de buraya gelecektir. Şaşırmıyoruz. Bir ilerleme örneği olarak tarayıcılardaki ileri-geri düğmeleriyle entegrasyonu haber veriyor. Daha nefis olacakmış.

Dinamik Veri Desteği ya da Scaffolding

Garip bir ad bu kabul. Türkçe'ye kimin nasıl çevireceğini bilemiyorum. Anlamamız gereken şey, bu teknik ile kod yazmadan veritabanı üzerindeki CRUD işlemlerinin kolayca halledilebildiği. Ruby on Rails dünyasında popüler olan Scaffolding, ASP.NET MVC ile MS dünyasına da giriş yapıyor. Detayları paket yayımlanınca göreceğiz.

SilverLight Batı'dan Yükselir

Biz neden kendi Flash'ımızı yapmıyoruz diye sorar birisi. Sonra olaylar gelişir. ASP.NET ile konuşma becerisi artacakmış diyorlar.

ADO.NET Entity Framework

Veritabanındaki şemanızı iş nesnelerine dönüştürmek için kullanabileceğiniz araç. LINQ ile hoplaya zıplaya çalışacağını tahmin edersiniz. Typed DataSet saçmalığının ders alınmışı. Bu framework, sanırım ASP.NET eklentisi içinde değil de ayrıca çıkacak. Fakat tarihleri yakın veya aynı olabilir.

Bitirirken...

2008'de konuşacağımız çok şey var. Geliştiriciler açısından bereketli bir yıl olacak. Windows Communication Foundation (WCF) mimari tarafta gündemimizi işgal ederken Windows Presentation Foundation ( WPF) arayüz tarafında derinleşecek. ASP.NET dairesinde MVC atılımı olacak, AJAX maydonozlaşacak. Sunucu tarafında IIS 7.0 başımıza yeni işler çıkaracak. Tarayıcı pazarında IE 8 kendine yer açacak ve SilverLight'a muhtemelen pozitif ayrımcılık yapacak. SilverLight, Flash ile mindere inecek. LINQ yeni bir uzmanlık ve danışmanlık branşı olarak parlayacak. Vista var bir de değil mi? Bir de Windows Server 2008 ve Windows Activation Services (WAS)!

Microsoft yeni yılın gündemini önümüze sermiş durumda. Yazılım dünyasında olan ve taze kalmak isteyen vatandaşlar için de yoğun geçecek demektir 2008. Cümlesine kolay gelsin.

03.12.2007 | Muhammed Tahiroğlu | 1 yorum

Web oldum olası, "yönlendirme" diye bir şeye ihtiyaç duymuştur. İstemci-sunucu ilişkisinin derinliklerinden, sunucu tarafındaki işlem sürecine kadar her noktada makine dilindeki JUMP komutuna benzer şekilde bir sıçrama, işlem akışını başka bir mecraya yönlendirme gerekmiştir.

ASP.NET perspektifinden olaya bakarsak, o anda çalıştırılmakta olan bir sayfadan başka bir sayfaya/kaynağa yönlenmek demektir. Ve bu dünyada yönlenmenin üç türü var: Redirect, Transfer ve RewritePath. Her biri mimarinin değişik noktalarına dokunuyor. Farklı etkilere sahip. Dilerseniz ey okur, sırayla bunları inceleyelim ve tefekkür edelim.

Redirect... Response Redirect.

ASP'nin HTTP başlıklarından "Object Moved" olanını yansıtmaya yarayan metodu. ASP.NET'e de aynı isimle devroldu. Yönlenmek istediğiniz kaynağın adresini veriyorsunuz, ASP.NET sizin için istemciye (internet tarayıcısına) "bu nesne şu adrese taşındı" başlığı gönderiyor. Tarayıcı da size hissettirmeden bu mesajı alıp o adrese ulaşmaya çalışıyor.

Dikkat ederseniz bu tip yönlendirme işleminde istemci-sunucu arasında en azından iki gelip gitme mevcut. ASP.NET'e özgü olmayan, her web programlama ortamında uygulanabilecek HTTP başlığı ile yönlendirme, böyle bir gidip-gelme dezavantajı taşıyor.

Bu metodun istemci tarafına uzanmasından ötürü, istemci gittiği hedef adresi tabî olarak biliyor. Ve bu bir internet tarayıcısı ise, kullanıcıya da o adres gözüküyor.

HTTP başlığı ile yönlendirmeler için, fazladan git-gel dezavantajına rağmen kullanım alanı yoktur denemez. Dış adreslere doğru kullanıldığında anlamlı olmaktadır. Zaten dış adreslere yönlenmeyi sadece bu metod ile yapabilmektesiniz. Birazdan detaylarını anlatacağımız diğer metodların dış adreslere yönlendirme becerisi bulunmamaktadır.

Bir diğer kullanım amacı ise kalıcı yönlendirmeler yapmaktır. Kalıcı yönlendirmeler, Response.Redirect'ten farklı bir biçimde yapılsa da temeli aynıdır. Kalıcı yönlendirme, (Permanent Redirect) 301 durum koduyla istemciye yanıt döner. Bu tip yönlendirmeler özellikle adresi kesin olarak değişmiş içerik için kullanılmaktadır. İnsanlardan daha çok web robotlarına hitap etmektedir. Onlar bu kalıcı yönlendirme mesajını kaale alarak, bir dahasına yeni adrese gitmeleri gerektiğini öğrenirler. Meselâ sitenizin yazılım altyapısını diyelim. Eski URL'ler artık geçerli değilse, bu URL'leri indekslemiş uygulamalar 404 (Not Found) alıp duracaklardır. Eski müşteriyi kaybetmemek ve verilmiş emeği hiç etmemek için eski URL'lere baştan sona kalıcı yönlendirme çekmeniz pek akıllıca bir davranış olacaktır.

Transfer

Transfer halk arasında Server.Transfer olarak da bilinir. Yine ASP'den ASP.NET'e devrolmuş bir imkandır. Adı o kadar anlamlıdır ki, yaptığı işi tam olarak ifade eder: sunucuda transfer. Bu metodda transfer işlemini yapan sunucudur. İstemci tarafıyla ilgimiz kalmamıştır. Muhatabımız sayfamızı işleten sunucu. Ve biz ona "benden pes! şu sayfayı işlet" deriz. Sunucu yeni istediğimiz sayfa için yapacağı işleri bismillah çeker ve baştan alır.

Bu metodun en güzel tarafı, istemciye bir detayın yansımamasıdır. Ama sunucuyla ASP.NET çalışma dairesi arasında yeni bir git-gel'e vesile olduğu da unutulmamalıdır. Genelde iç taraftaki dizin ve sayfa yapısını kullanıcıya çaktırmadan çalışan siteler Server.Transfer'i tercih eder. Bu metodun kardeşi olan Server.Execute ise az farklı bir şekilde işler. İstenilen sayfayı işletir ve temel sayfaya geri döner. Çok daha uzun işlenebilecek bir konudur bu Server.Transfer. Bakarız efendim bir ara.

Transfer'in bir takım handikapları yok değildir. Meselâ transfer edebileceğiniz adres bir iç ASP.NET sayfasıdır. Aslında ASP devrinde bu ikinci sayfaya değer geçirme de başlı başlına sorundu ama ASP.NET'te "query string"ler çalışıyor, sağolsun MS. İkinci sayfada Request nesnesi her şeye rağmen, size ilk adresi verecektir.

RewritePath

Son dönemin tekniğidir. ASP.NET'in HttpContext nesnesi tarafından sunulur. Kol kırılır, yen içinde kalır misâli ASP.NET çalışma dairesinin içinde gerçekleşen bir yönlenmedir. Request nesnesindeki adresi ezer ve onu ikinci sayfanın bilgileriyle doldurur. Zaten bu işlemin adı da URL'yi yeniden yazmak. ASP.NET icra dairesi bu yeni URL'yi işlemeye başlar. Sunucu isteği ASP.NET icra dairesine teslim etmiş ve cevap bekliyordur. ASP.NET de yeni sayfayı işledikten sonra sonucu sunucuya aktarır. Sunucudan da kablolar üzerinden dağlar, taşlar ve ovalar geçerek istemciye ulaşır.

ASP.NET içerisindeki istemciye yansıtılmayacak yönlendirmeler için en uygun, en hızlı metod budur. İlk URL'ye ulaşmak için HttpContext'in Items koleksiyonunu sepet olarak kullanabilirsiniz. PostBack'lerle ilgili sıkıntı yaşanacaktır kuvvetli ihtimal. Bunun çözümü de daha detaylı bir makalenin konusu. Burada yakasını bırakıverelim isterseniz.

Son Söz

Yönlendirme tiplerinin arka planını bilmek bize bilinçli yönlendirme yapmayı temin eder. Karambole yönlendirmeler, uygulama performansını olumsuz etkileyebilir.

Bu yazıda maksatlı olarak kod örneği vermedik. Okuyucunun aradığı da çok kolay bulunabilecek kod örneklerinden ziyade, meselenin iç yüzüdür. Yani kodun arkasındaki iddiadır.

İddia ile.

02.12.2007 | Muhammed Tahiroğlu | 0 yorum

Hâlâ diri duran ASP, 3.0'da "istop etmişti" bilirsiniz. Rotamız ASP+ diye ortaya çıkan sonra da ASP.NET diye nâm salan yeni teknolojiye döndü. Şimdi ASP.NET'in 3.0 sürümünü hissetmeden (var mıydı böyle bir sürüm?) saatlerimiz 3.5'u gösterir olmuş.

Elimizde ne var bir bakalım.

2.0'ın Yeri Sağlamlaştı

ASP.NET 2.0, 1.x'e göre gerekli ve tatmin edici bir güncellemeydi. "Master Page", "Partial Class", Temalar, Profiller, yepyeni kontroller... A'dan Z'ye, System.Web altında ne varsa elden geçmiş ve yenileri eklenmişti.

Şimdi 3.5 koduyla gelen sürüm, 2.0'ın üzerine ilaveler yapıyor. Ama asla 2.0'da bir şey değiştirmiyor. "Core" diye bahsedilen kısım 2.0. Aynen .NET 3.5'un genelinde olduğu gibi.

O nedenle 3.5'tan ASP.NET adına pek bir şey beklemeyin. Bu minör, yani minicik güncelleme. Yepyeni olan ne varsa, ortak framework'te var.

Boncuklar

ASP.NET dairesinde boncuk niyetine üç ekleme var, hepsi bu.

AJAX Artık Ev Sahibi

Daha önce ayrıca indirilen, yani misafir hükmündeki ASP.NET AJAX kütüphanesi artık bünyeye entegre edilmiş. Şimdi web'den indirmeden doğrudan kullanılabiliyor. Günümüz şartlarında web'den indirmenin kaybettirdiği zaman düşünülürse; çok mühim bir yenilik.

ListView

GridView ile DataList arasında bir şey. Daha esnek çizelge biçimli veri göstermeye yarıyor. Scott Bey, bir makalesinde kullanımını örneklemiş.

DataPager

Milletin evelden kendi kastığı sayfalama kontrolüne el atmışlar. Bir web kontrolü hedef alarak çalışan arayüz bileşeni. Ancak beraber çalışacağı kontrolün "IPageableItemContainer" diye bir arayüzün temsilcisi olması gerekiyor. Uzmanların verdiği bilgiye göre bu arayüzü de sadece yeni yazdıkları ListView destekliyor.

Baştacımız LINQ

Lafın dönüp dolaşıp bu dört harfli sözcüğe geleceğini tahmin ettiniz değil mi? Yeni aromalı sakızımız çünkü kendileri.

ASP.NET 3.5 ile doğrudan ilgili olmasa da LINQ, bu sürüm ile kullanabileceğiniz önemli bir teknoloji. Basitçe söylemek gerekirse, ilişkili veriyle çalışmak için geliştirilmiş yeni bir yazım dili ve yorumlayıcısı. Bir veritabanı, XML belgesi, iş nesnesi veya LDAP üzerinde LINQ deyimleri ile işlem yapabileceğiz. Bu yeni sözdizimi, .NET dillerine yeni kazandırılan "Lambda Expression", "Extension Method" gibi özelliklerle mümkün oluyor. Şunun gibi görünüyor:

List<string> ilceAdlari = from ilce in ilceler
where ilce.ilKodu = 46
select ilce.ilceAdi;

Ve IDE...

Visual Studio 2008 de bir tutam yenilikle göz kırpıyor bize. ASP.NET'i ilgilendirenlerine bakalım kısaca.

Hedef Zenginliği

Yeni IDE ile eski sürümleri (2.0, 1.x*) hedef alan web siteleri yazabilirsiniz. Yazış serbest! Yani son model arabanızı korkmadan stabilize yollara sürebilirsiniz.

HTML'yi Canlı Görme Devrimi

Scott Bey bunu DevConnections 2007'de ballandıra ballandıra anlatmış ve dinleyicilerden de tebessüm dolu bir alkış almış diyorlar. Yenilik diye sunulan şeyi muhtemelen siz de burun bükerek kullanacak veya hiç kullanmayacaksınız.

Siz de Debug'ların Efendisi Olabilirsiniz

Visual Studio bu sürümde sırf Debug için çalışmış diyebiliriz. JavaScript, CSS ve milli meselemiz AJAX'a yönelik gelişmiş editör ve debug desteğinden bahsediliyor. JavaScript için IntelliSense desteği de kopartılmış. Yorumlarınız bile gözüküyor balonda, ipucu olaraktan.

Netice

ASP.NET 3.5, 2.0'ın kasvetli havasını devam ettiriyor. PostBack, ViewState yerli yerinde. Anlamsız kodlar basan web kontrolleri de duruyor. Benim için 3.5 sönük bir sürüm. Ama taliplisi için çok şey ifade ediyordur.

Kendi adıma asıl değişimin ASP.NET MVC Framework'ün yayımlanmasıyla başlayacağını düşünüyorum. İşte o zaman şu yakamızı 2008'de bile bırakmayan "VB Formları" sendromundan kurtarabileceğiz demektir. Ümidim var.

*: Hüseyin Bey'in hatırlatmasıyla düzeltilmiştir. VS 2008 1.x sürümlerini desteklemiyor.

29.11.2007 | Muhammed Tahiroğlu | 1 yorum

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.
25.11.2007 | Muhammed Tahiroğlu | 1 yorum

Microsoft'un verdiği iki adet statik kod analiz aracı bulunuyor. Birisi, daha önceden kendi içinde (internal) kullandığını beyan ettiği FxCop. Diğeri de Visual Studio'ya çakılı gelen Code Analysis.

Analiz işine yeni başlayan geliştirici, durduk yere nur topu gibi bir ikilemin içine düşüyor: hangisini kullanmalıyım? İşin duayenlerine sormak istiyor, destek almak istiyor. İnterneti eviriyor, çeviriyor.

Görüyor ki bunun cevabını Microsoft bile vermiyor. Tamamen senin tercihin diyor. Ya da evet, VS 2008'i bekle: çok enteresan şeyler geliyor.

FxCop'ın Code Analysis ile en büyük farkı, onun IDE'den bağımsız çalışan (stand-alone) bir araç olması. Code Analysis, FxCop temelinin IDE'ye entegre edilerek geliştirilmesi demek oluyor. Ama bu şu demek değil sevgili okur: FxCop = Code Analysis.

Code Analysis, FxCop'ın bilmem kaç versiyonundan başladı ama şimdi aynı değiller. İkisi farklı koldan gelişiyor ve ilerliyor. Microsoft bir analiz kuralını FxCop'a yazmış, Code Analysis'e yazmamış olabilir. Yapar mı yapar, kendi söylüyor efendim, benim iddiam değil.

Öte yandan, Code Analysis sadece "Maintainability" ve "Reliability" kurallarını içeriyor. FxCop bunun üzerine "Spelling" kurallarını da içerdiği için daha detaylı analiz yapıyor. Ama Microsoft, Orcas'ta FxCop'ı tamamen kapsadığını ifade ediyor. Güveniyoruz kendisine.

Bir diğer gerçek de şu ki, FxCop her zaman olacak ve öylece bağımsız bir uygulama olarak duracak. Lâkin Code Analysis'in IDE ile, Team Foundation Server ile ilişkileri gitgide gelişecek, kabiliyetleri artacak (misal, Code Metrics). VS ve TFS kullanan ekiplerin olmazsa olmazı hâline gelecek. Varacağımız yer, Code Analysis. Bunu görmek zor değil.

23.11.2007 | Muhammed Tahiroğlu | 0 yorum

Visual Studio 2008'i heyecanla indirenler, daha evelden vaad edilen .NET Framework'ün kaynak koduna göz atmanın henüz mümkün olmadığını görüyorlar.

Evet, ürünün sunumunda güzel güzel anlatılan bu özelliğin hazır olmadığı kısık sesle belirtildiğinden olsa gerek biraz geç öğreniyorsunuz.

Biz de .NET koduna "step into" ile dalmak için sabırsızlanan kitlenin yatışması için üzerimize düşen vazifeyi yapalım. İçeriden birisinin dediğine göre, kaynak koda dalış için gerekli çevrim-içi sistemin hazırlığı bitmek üzereymiş. Aslında biraz laf arasında, son anda farkedilmiş performans probleminden dolayı sistemin aktifleştirilmediği, biraz daha üzerinde çalışılacağı ve gerekirse VS'ye geçilecek bir hot-fix ile ayağa kaldırılacağı söylenmiş.

...

Bunun yanında .NET camiası, zaten .NET Framework'ün kodlarına epeydir âşina. MS kodu karıştırma gereği duymadığı için Reflector gibi cihazlar, geliştiriciye kaynak kodu tertemiz verebiliyordu.

Ama MS bunun daha ilerisini vaad etti. Görmek ne kelime, içine girip adım adım işletebilirsiniz dedi. Camiayı alevlendiren de bu.

Biraz daha sabır gerekiyor sevgili camia.

22.11.2007 | Muhammed Tahiroğlu | 0 yorum

Açık kaynak kodlu Castle projesinin ASP.NET ayağı MonoRail, bu kulvardaki MVC yolunda en güçlü temsilci olarak görülüyordu. Ta ki Microsoft, resmen MVC implementasyonuna başladım diye ilan edene kadar.

Yalnız geçen hafta ilginç bir gelişme yaşandı. 28 yaşındaki Castle kurucusu Hamilton Verissimo, Microfoft'un MVC laboratuvarına davet edildi. Orada kendisinden MS-MVC'yi incelemesi ve görüşlerini paylaşması rica edilmiş, o da kırmamış sağolsun. Mezkur ziyaretle ve ekiple ilgili değerlendirmesini "MS MVC and the MVC Team" başlıklı günlük kaydında paylaşmış.

Özetle, gidip MVC'nin o anki hâliyle ufak denemeler yaptığını söylüyor. Bu denemelerde MonoRail'e kıyasla yapabildiklerini ve yapamadıklarını listelemiş. Ama bu yapamadığı şeylerin de sebebini MonoRail iskeletindeki sıkı bağlılıklar olarak gösteriyor, MS'i rahatlatıyor bir noktada.

Hamilton, çıkacak CTP sürümünün büyük beklenti içinde olanlar için hayal kırıklığı yaşatacağını ima ediyor. Fazla da MS'i yıpratmadan söylüyor bunu. Sırf geri-bildirim için çıkacağını ve de çalışması için bir sürü iş gerektirdiğini ekliyor. Böylelikle MS-MVC ile ilgili beklentilerimizi dibe indirmiş oluyor. Yalnız ikinci fazından ümitli.

Peki en can alıcı soru: MonoRail ne olacak?

Kendi kendine soruyor ve onurlu(!) bir cevap veriyor: "MS-MVC sunduklarıyla bizi sollarsa, MonoRail dükkanını kapatmanın vakti gelmiştir. Eğer patlarsa, MonoRail 2 ile yola devam ederiz. Onların implementasyonunu bekliyoruz."

Microsoft, açık kaynak kodlu projeleri desteklemek yerine klonlarını yapıp onları silmeye çalıştığı için bolca eleştiriliyor. Yine bu savı destekler bir durum kapıda. Eğer MonoRail biterse, bir kod yığının üzerinde daha güneş batacak.

Hamilton'un yazısının altındaki yorumlar, -belki de onaydan geçtiğindendir- bu ziyareti ve neticelerini destekler yönde: +1'miş.

Ben "-1" diyorum sevgili okur. MonoRail, Microsoft zaten yaptı-yapıyor, biz de gidelim kebap yiyelim, Tuna nehrinde salınalım dememeliydi. Afiyet olsun.

21.11.2007 | Muhammed Tahiroğlu | 0 yorum

Bir süre "Orcas" olarak dillendirilen yeni bebek üretime hazır hâle geldi ve MSDN üyelerine sunuldu. Visual Studio 2008 gelişmiş bir geliştirme platformu. Yanında da .NET Framework 3.5 sürümünü getiriyor.

Bir bakalım ne yenilikler ihtiva ediyor bu "bebek":

- "Eskiler Alırım!"; eskimiş VS kullanıcıları, uygulamalarını aynen VS 2008'de geliştirmeye devam edebilirler. Zira IDE, çok-hedeflilik diye çevrilebilecek multi-targeting özelliğini hâiz. Yani VS 2008'i açıp .NET 1.1 veya .NET 2.0 sürümü için uygulama yazabiliyorsunuz. Böylelikle framework sürümü ile IDE sürümü birbirine bağımlılıktan kurtulmuş oldu.

- Windows Presentation Foundation (WPF) için dâhili tasarım aracı. VS 2005 için eklenti olan bir şeydi, şimdi ürünün bir parçası.

- Bünyeye gömülü olmazsa olmaz AJAX. Tam anlamıyla JavaScript kod tamamlama (intellisense) ve hata ayıklama (debugging) imkânı.

- Debug esnasında .NET Framework kaynak kodunun içine dalış. Hâni Scott bahsetmişti.

- Ve tabî ki veriyle uğraşmanın yeni adı: Linq to SQL. Daha henüz emekliyor bu bebek ama 2010'un sürüm vaktinde olgunlaşacağı vaad edilmiş.

MS yolundaki geliştiricilere hayırlı olsun efendim.

Aboneler buraya: http://msdn2.microsoft.com/en-us/subscriptions/default.aspx

Tümleyenler şuraya: http://www.microsoft.com/express/download/

20.11.2007 | Muhammed Tahiroğlu | 0 yorum

Haftalardır ASP.NET'in MVC atağını konuşup duruyoruz. Henüz millet olarak kodlayıp denemiş değiliz. Şimdilik bakınmakla yetiniyoruz.

Bir yandan Las Vegas'tan DevConnections 2007 esintileri vuruyor yüzümüze. üstad Metin Karabiber de, bu esintiyi "vatan borcu" hassasiyetinde ufaktan taşımış, sağolsun.

DevConnections, doğal olarak ASP.NET MVC'yi de büyük bir kitle önünde sergilemek ve ilişkiyi diri tutmak için güzel fırsat. Nitekim Microsoft ekibi fırsatı değerlendirmiş ve bir sunum yapmış. Hanselman ve Elion arkadaşların sunumunu inceleminizi salık veririm.

Sunumdan çıkan ufak notları da buraya nakşedelim. [Parantez içi sözler fakire ait]

- ASP.NET MVC, hayatımıza test-yönelimli geliştirmeyi, gevşek bağlı bileşenleri getireceğine dair söz veriyor.
- URL'ler artık /UrunDetay.aspx?UrunId=26&ShowBasket=true şeklinde saçmalamaktan kurtuluyor, REST ve SEO ile samimi hâle geliyor: /urundetay/kahve-makinesi/showbasket vs. [Aman efendim, en çok sevindiğim şeylerden birisi.]
- üstüne basa basa denen o ki, Web Form'lar bitmiyor. Web Form yerli yerinde dururken, MVC ona alternatif olarak ikram ediliyor. Artık Web Form zorlanan bir şey değil, tercihlerden sadece biri oluyor. [Ha şöyle.]
- Artık gevşeyin diyorlar. Dependency Injection (DI) veya Inversion of Control (IOC) teknikleriyle genişleyebilen uygulamalar yazın, coşun diyorlar.
- MVC altyapısı, ASP.NET'in sınıf hiyerarşisindeki karşılığı olan System.Web'den veriliyor.
- Tüm "açık kaynak" dünyasıyla da barışık deniyor. Meselâ "model" katmanında NHibernate, "view" katmanında Brail kullanabileceğimiz söyleniyor.

Bir "kontrol" sınıfından kod örneği:

[ControllerAction]
public void ShowPost(int id) {
     Post p = PostRepository.GetPostById(id);
     if (p != null) {
         RenderView("showpost", p);
     } else {
         RenderView("nosuchpost", id);
     }
}

Rahatlıkla anlaşılacağı gibi bu metod bir URL'yi temsil ediyor.

URL'ler kontrolörlere yönlendiriliyor. Onlar da bir iş yapıp akışı bir "View"a havale ediyorlar. "Rendering" için klasik Web Form bileşenleri kullanmanın yanında NVelocity, Brail gibi başka motorlar da kullanabiliyoruz. [Evet, gevşek bağlılık sayesinde.]

...

Cümle MVC taraftarı, web'in doğasına aykırı buldukları Web Form'larına nicedir veryansın ediyordu. Şimdi de bu Microsoft implementasyonuna biraz mesafeli duruyorlar. Bakalım perdeler açılıp CTP vitrine konunca kodlayan parmaklar ne diyecek?

Önyargısız takip ediyoruz ey okur.

09.11.2007 | Muhammed Tahiroğlu | 1 yorum