|
|
|
Asp.Net 2.0 ve Code Klasörü |
|
| Gönderiliyor lütfen bekleyin... |
|
|
Bu makalemizde, AspNet 2,0 ile gelen tanımlanmış
klasörlerden (defined folders), Code klasörünün nasıl kullanıldığını incelemeye
çalışacağız. Asp.Net 1.0/1.1 ile uygulama geliştirirken, solution içindeki
herşey bir dll içinde (assembly) toplanır. Asp.Net 2.0 ise, dosya tabanlı
(file-based) yaklaşım adı verilen yeni bir teknik kullanır. Bu tekniğe göre,
solution, dosyalar ve klasörler sisteminden oluşmaktadır. Bu sistemin faydası,
otomatik derleme özelliğine sahip olmasıdır. Yani, solution içerisine
herhangibir dosya eklenmesi halinde (örneğin bir sınıf), Visual Studio.Net 2005
bu dosyayı otomatik olarak derler ve solution’ ın her zaman dinamik olarak
güncel kalmasını sağlar. Bir başka deyişle yeni eklenen dosya için, solution’ ın
baştan derlenmesi gerekmez. Bu yüzden, Asp.Net 2.0 ile uygulama geliştirirken
ilk dikkati çeken unsur, oluşturulan sanal klasör altında eskiden olduğu gibi
bin klasörünün ve bir dll dosyasının olmayışıdır.
Asp.Net 2.0 ile geliştirilen bu yeni teknikte,
çeşitli önceden tanımlanmış (predefined folders) özel klasör seçenekleri
mevcuttur. Bunlardan biriside Code klasörüdür. Code klasörü, sınıf dosyalarımız,
web servisleri için kullanılan wsdl dosyalarımız, türlendirilmiş dataset’ ler
(typed datasets) için kullanılan xml şemaları ve Data Component’ ler tipindeki
dosyaları barındırılabilir. Code klasörü içerisine konulan bu dosyalar, Visual
Studio.Net 2005 ortamında otomatik olarak tanınır. Ayrıca, Visual Studio.Net
2005, bu dosyaları kullanarak, sınıflara derler, proxy sınıflarını veya
türlendirilmiş veri sınıflarını oluşturur. Bu yapıyı aşağıdaki şekil ile daha
kolay anlayabiliriz.

Şekil 1. Genel yapı.
Dilerseniz konuyu daha iyi anlayabilmek amacıyla
basit bir örnek geliştirelim. Bunun için Visual Studio.Net 2005’ de yeni bir Web
Site açıyoruz. Daha sonra Solution Explorer’ da solution’ ımız üzerine sağ
tıklıyor ve New Folder seçeneğine basarak, yeni bir klasör oluşturuyoruz.
Klasörümüze Code ismini verdiğimizde, şeklinin normal klasörlerden biraz daha
farklı olduğunu hemen farkedebiliriz. Nitekim Code klasörünün Solution için özel
bir anlamı vardır.

Şekil 2. Code klasörünün eklenmesi.
Şimdi default.aspx form’ unuda aşağıdaki gibi
oluşturalım. Bu web sayfasında basit olarak, yarıçapı verilen bir dairenin alanı
hesap edilecek. Bu hesaplama işlemini yapan metodumuzu barındıracak bir
sınıfımız olacak ve bu sınıfımız, Code klasörü içerisinde yer alacak.

Şekil 3. Form tasarımımız.
Şimdi, Code klasöründe sağ tıklayalım ve Add New
Item’ i seçelim. Karşımıza aşağıdaki dialog penceresi çıkacaktır.

Şekil 4. Code klasörü için yeni bir öğe
eklemek.
Bu dialog pencersinde, Code klasörüne
ekleyebileceğimiz dosya tipleri yer almaktadır. Biz class tipini seçeceğiz.
AlanHesap.cs dosyamızın kodları aşağıda görüldüğü gibidir.
using System;
public class AlanHesap
{
public AlanHesap()
{
}
public double DaireAlan(double yaricap)
{
return 3.14 * (yaricap * yaricap);
}
} |
Bu noktadan sonra, solution’ ımızı hiç derlemeden,
AlanHesap sınıfımızı kullanabilir, bu sınıftan nesne örnekleri yaratabilir daha
da önemlisi intelli-sense özelliğinden derhal faydalanabiliriz.

Şekil 5. Intelli-Sense Özelliği.
Bu noktadan sonra, uygulamamızı oluşturduğumuz
klasöre bakarsak aşağıdaki yapıda olduğunu farkederiz. Dikkat edecek olursanız
Asp.Net 1.0/1.1’ deki gibi kalabalık bir topluluk yoktur. En önemlisi Bin
klasörünü veya tüm uygulamanın tiplerine ait manifesto bilgilerini ve kodları
barındıran bir dll görememekteyiz.

Şekil 6. Klasör Azlığı.
Code klasörü için dikkat edilecek noktalardan
birisi, buradaki dosyaların tamamının single assembly olarak ele alınmalarıdır.
Yani, bu klasör altındaki tüm dosyalar aynı dil ile yazılmış olmalıdır. Nitekim,
klasörümüze vb.net ile yazılmış aşağıdaki class dosyasını eklediğimizi
düşünelim.
Imports Microsoft.VisualBasic
Public Class VbSinif
Public Function Deneme(ByVal yaricap As String) As String
Return (yaricap)
End Function
End Class |
Bu durumda solution’ ı derlediğimizde aşağıdaki
derleme zamanı hata mesajını alırız.

Şekil 7. Hata Mesajı.
Peki çözüm nedir? Büyük çaplı projelerde, farklı
.net dilleri kullanılarak geliştirilen sınıfların aynı solution içerisinde
kullanılması için ne yapabiliriz? Bunun için, öncelikle Code klasörü içinde her
bir dile yönelik olarak ayrı klasörler açmamız gerekir. Aşağıdaki şekilde olduğu
gibi.

Şekil 8. Farklı diller için farklı klasörler.
Buradaki alt klasörleri isimlendirmek için belirli
bir kural yoktur. Ancak buradaki isimlendirmelerin aynısını Web.Config
dosyasındaki <compilation> node’ unda kullanmamız gerekmektedir. Nitekim,
otomatik olarak yapılan önceden derleme işlemlerinde, hangi alt klasörlerin
kullanılacağının sitenin konfigurasyon ayarlarına yansıtılması gereklidir. Bunun
için Web.Config dosyasındaki,
<compilation debug="true">
</compilation> |
kısmını aşağıdaki ile değiştirmemiz yeterli
olacaktır.
<compilation debug="true">
<codeSubDirectories>
<add directoryName ="CSharp"/>
<add directoryName ="VbDotNet"/>
</codeSubDirectories>
</compilation> |
Şimdi bu işlemlerin ardından default.aspx
sayfasına geçtiğimizde, vb.net ile yazdığımız sınıfa erişebildiğimizi ve
kullanabildiğimizi görürüz.

Şekil 9. Farklı dil ile yazılmış sınıfa erişim.
Şimdi kodumuzu aşağıdaki gibi geliştirelim ve
sayfamızı çalıştıralım.
void btnHesapla_Click(object sender,
EventArgs e)
{
AlanHesap ah = new AlanHesap();
lblSonuc.Text =
ah.DaireAlan(Convert.ToDouble(txtYaricap.Text)).ToString();
VbSinif s = new VbSinif();
string deger = s.Deneme(txtYaricap.Text.ToString());
lblDeger.Text = deger;
} |

Şekil 10. Farklı dil ile yazılmış sınıflar bir
arada çalışıyor.
Böylece geldik bir makalemizin daha sonuna. Bir
sonraki makalemizde görüşmek dileğiyle hepinize mutlu günler dilerim.
Burak Selim ŞENYURT
selim@bsenyurt.com
Makale:
Asp.Net 2.0 ve Code Klasörü ASP.NET Burak Selim Şenyurt
|
|
Bu konu hakkında yayınlanan yorum bulunmamaktadır.
"Yorum Yaz" tabını kullanarak sizde yorumlarınızı yazabilirsiniz.
|
|
|
|
|
|
|
-
-
Eklenen Son 10
-
Bu Konuda Geçmiş 10
Bu Konuda Yazılmış Yazılmış 10 Makale Yükleniyor
Son Eklenen 10 Makale Yükleniyor
Bu Konuda Yazılmış Geçmiş Makaleler Yükleniyor
|
|
|