Yalnızca dahili ASP.NET Web sunucusu denetiminin sağladığı denetimleri ve işlevleri gerektiren Web Formlarını oluşturmak kolaydır. Ancak genişletilmiş denetimlere ve işlevlere sahip bir tasarımı olan ya da böyle bir tasarımı gerektien Web Formları oluşturmak kullanıcıyı zorlayabilir.
2000 yılında 134 tablo içeren bir SQL Sunucusundaki müşteri veri tabanı üzerinde çalışıyordum. Uygulamanın tasarımını öyle yaptım ki müşteri tüm verilere ulaşmak için kaydedilmiş prosedürleri kullanabiliyordu. Benim yaptığım tasarımda her tabloda en az kendi verisiyle birlikte işleyen dörder kaydedilmiş prosedür vardı. Her bir tabloda rastlanan bu kaydedilmiş prosedürler, hangi müşteriyi sorduğunuza göre, ya tabloda NURD [New (Yeni), Update (Güncelle), Read (Oku), Delete (Sil)] işlevleriyle kaydedilmiş olanlardı ya da CRUD [Create (Yarat), Read (Oku), Update (Güncelle), Delete (Sil)] işlevleri olanlardan oluşuyordu.
Çok zaman, her bir tablonun tablo ve sütun adına ilişkin olan Yeni/Yarat işlevlerinin farklı olması dışında geri kalan tüm kod aynı kaldığı için, bu kaydedilmiş prosedürlerdeki kod, hep aynı komutları tekrarlayan bir kod oluyordu. Bu, her bir tablonun diğer türdeki kaydedilmiş prosedürleri için de geçerli. Her bir tablonun NURD kaydedilmiş prosedürlerine ek kaydedilmiş prosedürü de olabiliyordu. Kaydedilmiş prosdür türleri arasında aynı kodun tekrarlanması çok sık rastlanan birşey olduğundan, yapılacak görev, kaydedilmiş prosedürler yaratmak için bir kod kopyalama, yapıştırma, değiştirme ve kaydetme işinin yüzlerce kez tekrarlanmasından oluşan uzun bir iş oluyordu.
Beraber çalıştığım geliştirme ekibi NURD işlevli kaydedilmiş prosedürleri yaratmak için yaklaşık 90 saat harcayacağımızı tahmin ediyordu. Bu ruhsuz görev gözümüzü korkutuyordu. Buna çözüm olarak, ekibim klasik ASP ve SQL Dağıtılmış Yönetim Nesneleri (SQL-DMO ‘Distributed Management Objects’) kullanarak otomatik çalışan bir kaydedilmiş prosedür yapıcı program oluşturdu. Bu aracın nasıl oluşturulduğunu ileride yazacağım bir makalede genel hatlarıyla anlatacağım.
2001’da (.NET beta 2 çıktığı zaman) bu otomatik kaydedilmiş prosedür yapım programını klasik ASP’den ASP.NET’e aktardım ve programı bir dizi klasik ASP Web sayfasını tek bir ASP.NET Web Formuna toparladım. Her ne kadar bir yandan başka ASP.NET projelerinde çalışıyordum ise de bu aktarım sayesinde ASP.NET hakkında bazı önemli şeyler öğrendim. Öğrendiğim en önemli şey, ASP.NET Web Formlarının olay akış döngülerine ilişkindi.
Bir Örnek
Yukarıda bahsettiğim aktarma projesi çok fazla açıklama gerektiriyor ve bu makalenin asıl varmak istediği noktadan saptırabilir, bu yüzden size öğreteceğin ilkeleri göstermek için numune niteliğinde bir Web Formu kullanacağım.
Numune Web Form’um, basitçe, tıklandığında birkaç şirket türünü listeleyen bir Form. Dökülen bir listeden bir şirket türü seçtiğinizde form bu sefer seçtiğiniz türdeki tüm şirketlerin listesini döküyor. Her ne kadar yukarıda bahsettiğim program aktarma projesi geleneksel tuş türü denetimleri kullanıyorsa da, verdiğim bu örnekteki uygulama listelenen şirketlerden birine tıkladığınızda onun ayrıntılarını gösteren dahili Web sunucusu tuşlarını kullanıyor, bakınız Şekil 1.

Şekil 1: İki muhasebe şirketini listeleyen uygulama örneği.
Ayrıntıları görüntüleme tuşları her bir şirket adının yanında bulunmakta ve şirketi tanımlayıp sonra da ayrıntılarını görüntüleyen işlev komutlarına bağlı. Ayrıntıları göstermeye yarayan hiç bir tuş, otuş sayfaya eklenmeden önce var olmaz. Benim uygulamam her bir tuşu önce çalışacak şekilde oluşturur ve sonra sayfa oluşturulurken o tuşu yerine yerleştirir. Aşağıdaki kodda, çalışır durumda bir tuş oluşturmak için kullanılan C# kodunu görebilirsiniz.
- // Bir tusa yeni bir ornek yarat.
Button sirketAyrintiTusu;
sirketAyrintiTusu = new Button();
sirketAyrintiTusu.CausesValidation = true;
sirketAyrintiTusu.CssClass = “btnstandard”;
sirketAyrintiTusu.ID = _
“btnMuhasebeAyrintilariGWAS”;
sirketAyrintiTusu.Text = “Ayrintilari Goruntule”;
Bu kod, sirketAyrintiTusu adında, işleyen bir tuş yaratır ve onun bazı özellikleri düzenler. Bu tuş daha sonra bir tür içerici denetimine eklenmelidir ki fiili olarak sayfa bulunsun. Aşağıdaki gibi bir kod ile, bu tuş doğrudan doğruya ASP.NET Web Formuna eklenebilir:
- // Tusun Web Formuna eklenmesi.
Page.Controls.Add(sirketAyrintiTusu);
| Bir Web Formuna doğrudan doğruya denetim eklememelisiniz çünkü denetim için oluşturulan kod, |


