Makale Özeti

ASP.NET 1.0 ve ya 1.1 ile program geliştirmiş tüm programcıların aşina olduğu bir klasör vardır, "bin" klasörü. Eskiden ASP.NET için önemi olan tek klasör olan "bin" klasörü, artık kendisine yeni arkadaşlar edinmiş durumda. Ayrıca ASP.NET 2.0 ile projelerinizde kullanabileceğiniz birçok dosya tipi programlama yaşantımıza katılmış oldu. Bu makalede bu dosyalara ve görevlerine de yer vereceğiz.

Makale


ASP.NET 2.0 - Yeni Klasör ve Dosya Tipleri


Makalenin kapsadığı konular:
  1. Yeni klasör tipleri
  2. Yeni dosya tipleri
ASP.NET 1.0 ve ya 1.1 ile program geliştirmiş tüm programcıların aşina olduğu bir klasör vardır, "bin" klasörü. Eskiden ASP.NET için önemi olan tek klasör olan "bin" klasörü, artık kendisine yeni arkadaşlar edinmiş durumda. Bu klasörleri projenize eklemek içinse, tek yapmanız gereken Visual Studio 2005 içerisinde, "Solution Explorer" penceresinde, projenize sağ tıklayıp "Add Folder" sekmesine girmek. Burada karşınıza aşağıdaki ekran görüntüsündeki gibi bir görüntü çıkacaktır:



Görmüş olduğunuz gibi, "Add Folder" sekmesi altında, "App_Data", "App_Code" gibi çeşitli klasör seçenekleri ve bir de "Regular Folder" yani normal klasör ekleme seçeneği gelmektedir. Aslına bakarsanız, normal bir klasör eklemeniz sizin için farketmemektedir. Eklemiş olduğunuz normal klasörün ismini, resimde görmüş olduğunuz özel isimli klasörlerden birinin ismini verdiğiniz anda, Visual Studio 2005 bu klasörün ikonunu değiştirip, klasörü özel klasörlerden birisi olarak işaretlemektedir.

Unutmamak gerekir ki, dosyaları bu klasörlere atmaktansa kendi tanımladığım klasörlere de atardım diyenler olursa, bu klasörlere HTTP üzerinden erişilmesi mümkün değil. Yani herhangi bir ziyaretçi "www.domain.com/App_Data/dataDosyasi.mdf" şeklinde bir adres kullanarak, veritabanı dosyanızı indiremez. İşte bu nedenle bu klasörleri kullanmak, en mantıklı olacak davranıştır.

Özel klasörler, sırası ile, aşağıdaki görevlere sahiptirler:


  1. Bin

    Bilindiği şekliyle kullanılıyor. Projenize fiziksel olarak assembly referansları eklemeniz durumunda, assembly'ler bu klasöre kopyalanıyor.
     
  2. App_Code

    Visual Studio 2005 tüm class dosyalarınızı bu klasörde toplamanızı sağlıyor. Bu klasör içerisindeki class dosyaları derlenmeden çalıştırılabiliyor.
     
  3. App_GlobalResources

    XML, text, Resource dosyası gibi "global" kaynak dosyalarınızı bu klasörde toplayabiliyorsunuz.
     
  4. App_LocalResources

    XML, text, Resource dosyası gibi "özel" kaynak dosyalarınızı bu klasörde toplayabiliyorsunuz.
     
  5. App_WebReferences

    Web referanslarınızı bu klasörde toplayabiliyorsunuz.
     
  6. App_Data

    XML, XSD, TXT, MDF, MDB gibi veritabanı ve ya içerisinde bilgi saklayabileceğiniz herhangi bir data dosyasını bu klasöre atabiliyorsunuz. Özellikle Visual Studio 2005'in MSSQL 2005 içerisinde bulunan bir veritabanını kendi içerisinde yönetebilmesi ve bilgilerin saklandığı MDF dosyasının bu klasör içerisinde tutulması büyük bir avantaj.
     
  7. App_Browsers

    ASP.NET 2.0 ile gelen yeni özelliklerden birisi olan "tarayıcıya göre davranış" tanımlamalarının yapıldığı dosyaların saklandığı klasördür.

    Tarayıcıya göre davranış konusu makale dizimizin 3. makalesinde anlatılmaktadır.
     
  8. Theme

    ASP.NET 2.0 ile gelen bir başka yeni özellik olan "tema" desteğinin tanımlandığı tema dosyalarının saklandığı klasördür. Aslına bakarsanız "Theme" türünde bir klasör yoktur. Temaların saklandığı fiziksel klasör "App_Themes" klasörüdür. "Theme" seçeneğine tıklayarak yaratacağınız yeni tema klasörü otomatik olarak yaratılacak olan "App_Themes" klasörü içerisine atılacaktır. Bunu sebebi ASP.NET 2.0'ın farklı klasörler sayesinde birden fazla tema yaratılabilmesine olanak vermesi ve proje içerisinde kullanacağınız temayı seçerken, klasörün ismi ile aynı ismi kullanmanız gerekeceğidir.

    Temalar makale dizimizin 3. makalesinde anlatılmaktadır.
     



ASP.NET 2.0 ile projelerinizde kullanabileceğiniz birçok dosya tipi programlama yaşantımıza katılmış oldu. Bu dosya tipleri ve görevleri aşağıdaki gibidir:


  1. Generic Handler *.ashx

    Kendisine gelen isteğin (request) nasıl bir cevap (response) vereceği programcı tarafından tanımlanan dosya tipidir. Çoğunlukla kullanım amacı tarayıcı bağımsız olarak işlem gören ve XML standartlarını kullanan istemcilere XML formatında cevap vermektir. Tarayıcılardan bağımsız olarak cevap gönderilmesi gereken isteklerde kullanılabilecek bu dosya tipi ile her türlü içerik tipi ( resim, Xml, text, Html) handle edilebilir.

    Örneğin aşağıdaki örnekte tarayıcıya "text/plain" tipinde "Hello World!" değerine sahip bir text gönderilmektedir (Visual Studio 2005'in yarattığı template'in birebir örneği olarak):


        <%@ WebHandler Language="C#" Class="Handler" %>

        using System.Web;

        public class Handler : IHttpHandler {

           public void ProcessRequest ( HttpContext context ) {
                context.Response.ContentType = "text/plain";
                context.Response.Write("Hello World!");
           }

           public bool IsReusable {
                get {
                     return false;
                }
           }

        }

     
  2. Class Diagram *.cd

    Bir sınıf tanımlama işlemi sırasında yazmış olduğunuz tüm kodları yazmak yerine kullanabileceğiniz dosya tipidir. Projenize yeni eklediğiniz bir Class Diagram dosyasının ve "Class Designer" penceresinin görünümü aşağıdaki gibidir:



    Bu dosya üzerinde, ilgili araçları kullanarak projenizde kullanılacak tüm sınıf, enum, interface, struct ve delegate'leri tasarlayabilirsiniz. Şimdi bu araçları kullanarak bir sınıf tasarlayacağım:

    • İlk adım olarak "Class Designer" ekranında "Class" objesini mouse ile sürükleyerek ClassDiagram.cd dosyasının üzerine bırakıyorum.



      Bu noktada karşıma 3 başlıkta bilgiler isteyen bir form çıkıyor. İlk başlığımız sınıfın ismi, ikinci başlığımız sınıfın erişilebilirlik düzeyi, üçüncü başlığımız ise sınıfın yeni bir dosya da mı yaratılacağı yoksa var olan bir dosyaya mı ekleneceği. Bilgileri aşağıdaki gibi dolduruyorum ve "OK" butonuna tıklayarak "Araba" isminde bir sınıf yaratıyorum.



      Artık sınıfımız tanımlandı ve ekranda aşağıdaki görüntü mevcut:



      Ekranda görmüş olduğumuz sınıfımıza sağ tıkladığımda ise, "Add" sekmesi altında aşağıdaki opsiyonlar bulunmakta:



      Bu opsiyonlar sayesinde sınıfıma method, özellik, değişken, event, constructor, destructor ya da bir constant (sabit değer) eklemem gayet kolay. Ben yeni bir method ekleme işlemi üzerinde örneğe devam ediyorum:



      Şimdi de karşıma methodun ismini girebileceğim bir textBox çıktı. Buraya da değer olarak "VitesDegistir" yazıyorum.

      Bu sefer ise karşıma "Class Details" isminde bir pencere çıktı. Bu pencereyi kullanarak method, özellik, event ve değişken yaratabiliyoruz ve bu yarattığımız objelerin erişilebilirlik düzeyleri, dönüş tipleri ve değişken tipleri gibi özelliklerini bu ekranı kullanarak tanımlayabiliyoruz.



      Artık tanımlamış olduğumuz fiziksel dosyamıza "Solution Explorer" penceresi aracılığı ile erişebilir ve Visual Studio 2005'in bizim için yazmış olduğu sınıfı görebiliriz.



      Görmüş olduğunuz gibi sınıfımız "App_Code" klasörü altında yer almakta. Şimdi kodumuzun içine gidelim:



      "Araba" sınıfımız "public" olarak, "void" tipinde "VitesDegistir" isminde bir methodla karşımızda.
       

     
  3. Master Page *.master

    Tüm ASPX dosyalarınızın kabuğu olarak düşünebileceğiniz bu dosya türü, ASP.NET 2.0 için devrim niteliğindedir. Tüm sitenizi ortak bir şablon üzerinde hareket ettirebilmeniz, daha sonrasında bu şablonu sadece sürükle bırak işlemleri ile tüm sitenize uygulayabilmeniz gibi avantajlar sunan bu yapının kullanımı oldukça basittir.

    • İlk adım olarak projemize yeni bir Master Page ekleyelim (örnek içerisindeki master page'in ismi Coskun.master'dır).



      Master Page'imize otomatik olarak "ContentPlaceHolder" tipinde bir kontrol eklenmiş olduğunu göreceksiniz. İşte "Master Page" sisteminin temelinde bu kontrol bulunmakta. Bu kontrolün olmadığı bölümler, ASPX sayfalarınız içerisinde kesinlikle değiştirilemez. Şimdi örneğimize tüm sayfamızı kaplayacak büyüklükte bir tablo ekleyip, bu tablonun sol tarafına menümüzü (menüye sadece birkaç örnek link ekleyeceğim), sağ tarafına da "ContentPlaceHolder" tipindeki kontrolümüzü taşıyarak ve ContentPlaceHolder içerisine birkaç satırlık yazı yazarak devam edelim:



      Projenize yeni bir ASPX dosyası eklemek istediğinizde, Visual Studio 2005'in yeni dosya ekleme menüsünde bir seçenek olduğunu göreceksiniz.



      Bu seçeneği işaretleyip, Master Page'imizin ASPX sayfasına nasıl tanımlandığını resimlerle adım adım görelim:





      Ve bu ekranda OK butonuna tıkladığımızda, karşımıza aşağıdaki gibi bir ASPX sayfası çıkacaktır:



      Görmüş olduğunuz gibi, Master Page'e ait ve değiştirilemeyecek kısımlar soluk renkte görünmektedir. Bu kısımların değiştirilemeyecek olmasının sebebi ise, "ContentPlaceHolder" içerisine alınmamış olmalarıdır.

      ContentPlaceHolder'ınıza sağ tıkladığınızda "Default to Master's Content" isminde bir seçenek çıkacaktır.



      Bu seçeneğe tıkladığınızda ise, ContentPlaceHolder'ın içeriği Master Page üzerinde tanımlanan ile aynı değere dönecektir:



      Bu ContentPlaceHolder üzerinde, tekrar kişisel içerik yaratılmak istenir ise de, yine sağ tıklamak yeterli olacaktır:



      Görmüş olduğunuz gibi, bu sefer de karşımıza "Create Custom Content" isminde bir seçenek çıktı.

      Senaryomuza yeni dosyalar eklediğimizi, bu dosyalarda da "ContentPlaceHolder" kontrolümüzün içeriğini sayfamıza uygun olarak değiştirdiğimizi düşünürseniz; tüm sayfalarımız sol tarafında bir menü kontrolüne ve sağ taraflarında da kendilerine özel içeriklere sahip oldular. Senaryoya göre müşterinizin menünün renkleri ile ilgili bir şikayeti olduğunu düşünün, sizce tüm sitenizce menü renklerini değiştirmeniz ne kadar sürenizi alırdı?
       

     
  4. SQL Database *.mdf

    MSSQL Server'ın data dosyası olarak kullandığı MDF dosyalarını artık Visual Studio 2005 ile iç içe kullanmanız mümkün. Bu dosya içerisindeki Stored Procedure'leri, tabloları ve view'ları Visual Studio 2005 ile düzenleyebilir ve yenilerini ekleyebilirsiniz.




     
  5. Site Map *.sitemap

    Sitenizin haritasını düzenleyebileceğiniz bir XML dosyasıdır. Bu XML dosyası makale dizisinin 4. bölümünde anlatılacak olan "SiteMapDataSource" kontrolü ile kullanılarak yine makale dizisinin 7. bölümünde anlatılacak olan "Menu" kontrolüne direkt olarak bind edilebilmektedir.
     
  6. Skin File *.skin

    ASP.NET 2.0 ile gelen tema sistemi ile ilgili tanımlamaların yapıldığı dosyalardır. Tema sistemi makale dizisinin 3. bölümünde anlatılacaktır.
     
  7. Browser File *.browser

    ASP.NET 2.0 ile gelen yeni özelliklerden birisi olan "tarayıcıya göre davranış" tanımlamalarının yapıldığı dosyalardır. Browser dosyaları makale dizisinin 3. bölümünde anlatılacaktır.
     



Coskun SUNALI
http://net.tr.gen.tr