evcil.net noktanın egemenliği

2606 / 020

C# ile Tanışalım

.NET Framework, programcılara aşina olduğu kod dilini kullanma özgürlüğü tanıyarak bir devrim gerçekleştirdi. Ve, belli belirtimlere sadık kalındığı sürece, farklı dillerle yazılmış uygulamaların birbiriyle etkileşebileceğinin de teminatını verdi. Nasıl mesela? Mesela, A programcısı X diliyle bir Class yazıyor; B programcısı, Y diliyle bu Class'ı devralan (inheritance) yeni bir Class yazıyor. Böylece hangi programcının, hangi dili kullandığı sadece ayrıntı olmaktan öte bir anlam taşımıyor.

Evet, .NET diller arası etkileşime olanak tanıyan, bir çok dile destek veren bir platform. Üçüncü parti derleyiciler yazılarak .NET için her an yeni bir dil daha yazılabilir. Ama herşeyden önce, .NET'in beraberinde sunduğu dillere bakmak gerekiyor. Bu diller 4 tane: C++, Visual Basic .NET, C# ve JScript.NET. Dikkat edilirse bu listede, "ben yeniyim" diye göz kırpan bir tanesi var. Yazımızda, bu yeni dili tanımaya çalışacağız.

C# Nedir?

Önce okumaya çalışalım. Yeni bir dil olduğu ve de bir sembol içerdiği için telaffuzu konusunda baştan anlaşmak gerekir herhalde. C#'ın resmi okunuşu c-sharp (yani si-şarp). Ancak siz, # sembolü için yörenizde kullanılan karşılığa göre özgün telaffuzlar üretebilirsiniz. si-diyez ve biraz daha milli olan ce-diyez de alternatifler arasında.

C# en basit tanımla, C ve C++ ekolünden türemiş, modern, nesne-yönelimli bir programlama dilidir. .NET Framework hedef alınarak tasarlanmıştır ve komut satırı derleyicisi .NET Framework SDK ile bedava dağıtılmaktadır. C#'ı her türlü .NET uygulamasında kullanabilirsiniz. Bir ASP.NET sayfasında, bir Windows Forms uygulamasında, bir web servisinde veya bir konsol uygulamasında... C#, VB.NET ile beraber .NET iskeletinin iki esas dilini teşkil ediyor. Ve aynı zamanda .NET geliştirileri tarafında en çok ilgi çeken ve tercih edilen dil. Özellikle C# - ASP.NET ikilisinin kullanıldığı Open-Source uygulamalar hızla artmaya başladı.


Komut satırı C# Derleyicisi (csc.exe) hakkında

C# derleyicisi (csc.exe), .cs uzantılı dosyalara kaydedilen C# kaynak-kodlarını IL (Ara Dil - Intermediate Language) koduna çevirerek .dll veya .exe uzantılı assemblyler olarak kaydeder. Bu derleyici, .NET Framework'un 21 mb boyutundaki dokumantasyon ve ek araçlar içermeyen dağıtılabilir kurulumunda da mevcuttur ve bedavadır. .NET Framework kurulumu için http://msdn.microsoft.com/net adresine bakınız.

Sisteminizde .NET Framework kurulu ise, C# komut satırı derleyicisi olan csc.exe yi
%WINDOWS_DIZINI% Microsoft.NET Framework vX.X.XXX
dizini altında bulabilirsiniz. X karakterleri yerine sistemde kurulu framework sürümü gelecektir. Benim sistemim için bu patika şöyle: D:WINNTMicrosoft.NETFrameworkv1.0.3705

Bu dizin altında C# derleyicisinin yanısıra diğer derleyicileri de bulmanız mümkün (vbc.exe, jsc.exe). Bu dizindeki derleyicileri, komut satırında herhangi bir mantıksal noktadan, sadece dosya ismini yazarak kullanarak büyük bir konfor sağlamak istiyorsanız, bu patikayı, sistemin "search path" listesine eklemelisiniz. Aşağıdaki komut yeterli olacaktır:
Set Path=D:WINNTMICROS~1.NETFRAMEW~1V10~1.370;%PATH%

Böylelikle, her noktadan VB.NET, C# ve JS.NET derleyicilerine ulaşabileceksiniz. Yazımızın ilerleyen bölümlerinde bir derleme örneği vereceğiz. O zaman daha iyi anlaşılacaktır.

C#, tasarlanırken C/C++'ın gücü ve Visual Basic'in kolaylığı ve verimliliği birleştirilmiş. Bu dili tasarlayan ekibin başında ise, yine Turbo Pascal ve Borland Delphi gibi efsanelerin yaratımını yönetmiş Anders Hejlsberg var. Kendisi ile C# hususunda yapılmış bir mülakatı okuyabilirsiniz.

C# kaynak-kod dosyalarını .cs uzantılı dosyalarda saklıyoruz. Bir .cs dosyası oluşturmanız için gereken minimum araç sadece bir metin editörü: Not defteri, EditPlus, UltraEdit, vs. Şu gerçeği unutmayalım: tüm .NET uygulamalarını sadece basit metin editörü kullanarak oluşturmak mümkün. Kendinize güveniyorsanız, Visual Studio .NET gibi tasarım harikası bir dosta hiç ihtiyacınız yok.

İlk C# Programımız

C#'ın nesne yönelimli bir dil olduğunu söylemiştik. Bu nedenle, her C# kodunda bir class tanımı görmeniz doğaldır. Aşağıda, derlendiğinde kendi başına (stand-alone) bir konsol uygulaması olarak çalışabilecek bir C# kodu var. Kodumuz bir class bünyesinde statik Main() fonksiyonu içeriyor. Fonksiyon içerisinde, konsola yazı gönderilmektedir.

merhaba.cs
class IlkProgramIlkHeyecan
{
public static void Main()
{
System.Console.Write("Merhaba C#");
}
}

Bu kodu, merhaba.cs uzantılı bir dosya olarak herhangi bir dizine kaydedin. Eğer, yukarıdaki ara-açıklamada bahsettiğim, derleyici için path ayarlarını yaptıysanız, komut satırında merhaba.cs nin bulunduğu dizine geçip aşağıdaki komutu verirseniz, merhaba.cs'yi başarıyla derleyebileceksiniz.

Komut satırından derleme komutu
csc /out:merhaba.exe merhaba.cs

Derleyicinin Cevabı
Microsoft (R) Visual C# .NET Compiler version 7.00.9466
for Microsoft (R) .NET Framework version 1.0.3705
Copyright (C) Microsoft Corporation 2001. All rights reserved.

Bu komut, aynı dizinde merhaba.exe dosyasını üretecektir. Şimdi yine komut satırından aynı dizinde merhaba yazarak bu programı çalıştıralım:

Bu program kodunu aşağıdaki şekilde de yazmak mümkündü:

using System;

class IlkProgramIlkHeyecan
{
public static void Main()
{
Console.Write("Merhaba C#");
}
}

Görüldüğü gibi, C# söz dizimi olarak çok da yeni bir şey getirmiyor. Daha önce C, C++, Java, JavaScript veya PHP gibi dillerle ilgilenmiş olanlar, C# sözdizimine kolaylıkla adapte olacaklar. Bunlar arasında C#'ı, özellikle Java geliştiricileri kendilerine çok yakın bulacaklar. Bu benzerliğin tesadüf olmadığı bir gerçek.

C# dilinin yapısıyla ilgili ayrıntılara sonraki yazılarımızda değineceğiz. Şimdi bir de C#'ı ASP.NET uygulamalası içinde görelim.

csharp.aspx
<%@ Page Language="C#" %>

<Script Runat="server">
void Page_Load ( Object sender, EventArgs e )
{
int i=0;
Kisiler[] arKisiler = new Kisiler[3];

for ( ; i<3 ; i++)
{
arKisiler[i] = new Kisiler();
arKisiler[i].isim = "Kisi_" + (i+1);
arKisiler[i].mail = "Mail_" + (i+1);
}
rpt.DataSource = arKisiler;
rpt.DataBind();

}

public class Kisiler
{
private string _isim;
private string _mail;

public string isim {
get { return _isim; }
set { _isim = value; }
}

public string mail {
get { return _mail; }
set { _mail = value; }
}
}
Script>

<html>
<body>

C# ve ASP.NET Buluşması<br><br>

<asp:repeater id="rpt" runat="server">
<ItemTemplate>
<%# DataBinder.Eval(Container.DataItem, "isim") + " : " + DataBinder.Eval(Container.DataItem, "mail") %><br>
ItemTemplate>
asp:repeater>

body>
html>

İsim ve Mail şeklinde sadece iki alana sahip bir sınıf tanımı yapıyoruz. Sayfanın
OnLoad olayına yazdığımız fonksiyonda ise, elemanları bu sınıftan oluşan bir dizi tanımlayıp, dizinin elemanlarına değer araması yapıyoruz. Ve HTML alanı içerisinde tanımladığımız
Repeater web kontrolünün
DataSource özelliğine bu diziyi işaret ediyoruz. Repeater'in
DataBind() metodu ile dizideki veriyi listelemiş oluyoruz.
Örneğin çalışır hâli.

Bitirirken...

C# üstünde çok konuşulacak ve yazılacak bir dil. Popüler, şık ve modern. İnternette C# hakkında sıkı kaynaklar da oluştu (Kaynaklar sayfamıza bakınız). Yükselen değer C#, hem programlamaya yeni başlayanlar için, hem de benzer sözdizimine sahip dillerden gelenler için iyi bir tercih olacaktır.

İyi çalışmalar.

2306 / 020

DataGrid İle Sıralama (Sorting)

Önsöz

DataGrid hakkında şimdiye kadar gördüklerimiz bize, basitçe kullanımı ve görünümünün değiştirilmesi gibi temel konuları öğretti. Ardından bu kompleks kontrolün en can alıcı özelliklerinden birisi olan sayfalama desteğini gösterdi.

Ancak DataGrid kontrolü hakkında söylememiz gereken tüm sözler bunlar değildi. Söylediğim gibi, DataGrid çok kompleks bir kontroldür ve kendi bünyesinde çok sayıda özelliği bulundurur, kullanır. Neydi bunlar deyip kısaca yeniden bakarsak: Sayfalama (paging), sıralama (sorting), seçme (selecting), düzenleme (editing) şeklinde sıralayabiliriz. Bu sıralama, konulara değinme sıramı da oluşturmakta. Son makalenin konusu olan sayfalamanın ardından şimdi sıra sıralama konusuna geldi.

Herhangi bir web programlama dilini kullanarak büyük boyutlardaki veriyi veritabanından alıp tabloya dökenlerin, ve bu işi Türkiye gibi internet omurgasının zayıf olduğu bir yerde yapanların sıkıntısını çektikleri bir konudur sayfalama.. Büyük boyutlardaki veri sayfalara bölünüp gösterilir; ki zaten zayıf olan internet omurgasına bir tekme de biz atmayalım.

--pagebreak--

Giriş

Sıralama da sayfalama kadar kritik bir süreçtir. Ancak sayfalamanın aksine sıralamanın internet omurgası üzerinde olumlu bir etkisi olmaz. Sütun başlıkları (header) link yapılır. Bu linklere tıklandığında sıralama kriteri sayfaya geri gönderilir. Sayfa yeniden yüklenirken veriyi alıp tabloya dolduran rutin kriteri alır ve sql cümlesine yamar. Ortaya çıkan sql cümlesi ile veri daha farklı bir sıralama ile alınır ve tabloya doldurulur.

İşte ASP.NET 'in programcılar için en müjdeli haberlerinden birisi olan DataGrid 'in sıralama yapabilme kabiliyeti bu noktada imdada yetişir. DataGrid kontrolüne sıralama yapması gerektiği söylenir. Yaklaşık olarak 3-4 satırdan oluşan bir sub-rutin yazılır ve sayfaya dökülen tablonun sütun başlıklarına tıklanarak olayın zevki çıkarılır. DataGrid hiçbir şikayet etmeksizin sıralama işini başarıyla yapar.

Bu kadar lafdan sonra artık icraata geçelim. Kısa bir ön bilgi verip, örnek kodlarımızı incelemeye başlayalım. Sıralama işlemi yapması için DataGrid kontrolümüzün AllowSorting özelliğine True değeri verilir (AllowSorting = "True"). Herhangi bir sütun başlığına tıklanıldığında çalıştırılması istenen, biraz önce bahsettiğim 3-4 satırlık sub-rutinin ismi ise OnSortCommand özelliği ile belirtilir (OnSortCommand = "doSorting").

Sub doSorting(s As Object, e As DataGridSortCommandEventArgs)
bindDataGrid(e.sortExpression)
End Sub

Yukarda görülen sub, OnSortCommand özelliğinin değeri olarak verildiğinde, sıralama kriterini, veritabanına bağlantı gerçekleştirip veriyi alan ve DataGrid kontrolüne dolduran sub-rutine gönderir. Burada kullanacağımız doSorting isimli sub-rutin DataGridSortCommandEventArgs örneği olarak aldığı e 'nin SortExpression özelliği ile sıralama kriterini öğrenir ve bindDataGrid isimli sub-rutine gönderir.

Sub Page_Load(Source As Object, E As EventArgs)
If Not IsPostBack Then
bindDataGrid
End If
End Sub

Sub bindDataGrid(Optional kriter As String = "id")
Dim connstr As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("kisiler.mdb") + ""
Dim sql As String = "SELECT * FROM kisiler ORDER BY " + kriter + " ASC"
Dim conn As New OleDbConnection(connstr)
conn.Open()
Dim adapter As New OleDbDataAdapter(sql,conn)
Dim ds As New Dataset()
adapter.Fill(ds,"kisiler")
dataGrid1.DataSource = ds.Tables("kisiler")
dataGrid1.DataBind()
conn.Close()
End Sub

Sub doSorting(s As Object, e As DataGridSortCommandEventArgs)
bindDataGrid(e.sortExpression)
End Sub

AutoGenerateColumns="true"
AllowSorting="true"
OnSortCommand="doSorting"
Width="50%"
BorderWidth="1px" BorderStyle="Solid"
CellPadding="2" CellSpacing="0"
BorderColor="#C7C7C7"
Font-Name="Verdana" Font-Size="8pt">

Bu kısa ön bilgiden sonra sıralama işlemini yapacak olan sayfamızın tüm kodunu vermeyi uygun gördüm. Bu sayfada veritabanına bağlanıp veriyi sıralı bir şekilde alan, ve DataGrid kontrolüne dolduran sub-rutinimizde bir farklılık var. Bu işi yapacak olan bindDataGrid isimli sub-rutin opsiyonel bir parametre alıyor. Parametrenin opsiyonel olduğunu başına Optional anahtar kelimesini ekleyerek belirtiyoruz. Optional anahtar kelimesinden sonra bildiğimiz şekilde parametre olan değişkenin ismini ve türünü yazıyor ve ardından eşittir (=) işareti koyup varsayılan değerini veriyoruz. Böylece sayfa ilk yüklendiğinde varsayılan değer ile sıralama yapılıyor.

Sql cümlesindeki değişiklik ise, basitçe ORDER BY deyimi ile sınırlı kalıyor. ORDER BY " + kriter + " ASC ifadesiyle birlikte sıralama (ASC - Ascending - Artarak) gerçekleştiriliyor.

Sıfırdan sıralama sürecini gözden geçirelim. Sayfa ilk olarak yüklendiğinde Page_Load olayında IsPostBack kontrolünden geçip bindDataGrid sub-rutinini herhangi bir parametre olmaksızın çağırıyoruz. Yürürlüğe giren bindDataGrid sub-rutini parametre bulamayınca varsayılan değer olarak kriter değişkenine "id" değerini atıyor. Veritabanına bağlantıyı gerçekleştirip, veriyi sıralı bir şekilde alıyor ve dataGrid1 isimli kontrolümüze dolduruyor.

Sütun başlıklarından birisine tıklandığında ise OnSortCommand özelliği ile ismini belirttiğimiz doSorting sub-rutini çalıştırılıyor. Bu sub-rutin, BindDataGrid sub-rutinine sıralama kriterini parametre olarak gönderiyor. bindDataGrid sub-rutini parametre geldiğini görüp kriter değişkenine varsayılan değeri değil doSorting sub-rutininden gelen parametrenin değerini atıyor. Ve sıralama buna göre gerçekleştiriliyor.

ASC mi ? DESC mi?

DataGrid 'in sıralama özelliğini öğrendiğimize göre şimdi bunu biraz geliştirelim. Yukarıdaki koda göre sıralama "Ascending" yapılıyor. Yani A 'dan Z 'ye sıralanıyor. Şimdi yapacağımız değişiklikler ile kullanıcıya bunu tersine çevirebilme imkanı vereceğiz. Bunun için grup adı SortStyle olan iki adet RadioButton kontrolü kullanacağız. RadioButtonlardan "ASC" olanının Checked özelliğini True olarak belirleyeceğiz. Böylece varsayılan olarak sıralama "ASC" olacak.

Şimdi bindDataGrid sub-rutinine ekleyeceğimiz satırlara geldi. Öncelikle SortStyle isimli bir String değişken tanımlıyoruz. rbAsc isimli "Ascending" sıralama yapılması anlamına gelen RadioButton 'ın Checked değerini kontrol edip True ise "ASC" değerini, değilse "DESC" değerini SortStyle değişkenine atıyoruz. Sql cümlesindeki değişiklikten anladığınız gibi bu değişkeni sql cümlesinde kullanarak ASC veya DESC sıralamayı seçiyoruz.

Sub Page_Load(Source As Object, E As EventArgs)
If Not IsPostBack Then
bindDataGrid
End If
End Sub

Sub bindDataGrid(Optional kriter As String = "id")
Dim connstr As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("kisiler.mdb") + ""
Dim SortStyle As String
if rbAsc.Checked then
SortStyle = "ASC"
else
SortStyle = "DESC"
end if
Dim sql As String = "SELECT * FROM kisiler ORDER BY " + kriter + " " + SortStyle
Dim conn As New OleDbConnection(connstr)
conn.Open()
Dim adapter As New OleDbDataAdapter(sql,conn)
Dim ds As New Dataset()
adapter.Fill(ds,"kisiler")
dataGrid1.DataSource = ds.Tables("kisiler")
dataGrid1.DataBind()
conn.Close()
End Sub

Sub doSorting(s As Object, e As DataGridSortCommandEventArgs)
bindDataGrid(e.sortExpression)
End Sub

AutoGenerateColumns="true"
AllowSorting="true"
OnSortCommand="doSorting"
Width="50%"
BorderWidth="1px" BorderStyle="Solid"
CellPadding="2" CellSpacing="0"
BorderColor="#C7C7C7"
Font-Name="Verdana" Font-Size="8pt">

GroupName="rbSortStyle" Text="ASC" Checked="True"
Font-Name="Verdana" Font-Size="8pt"/>

GroupName="rbSortStyle" Text="DESC"
Font-Name="Verdana" Font-Size="8pt"/>

Netice

DataGrid 'in sıralama özelliğini daha farklı şekillerde kullanıp, uygulamalarınızı geliştirmek ve daha değişik özellikler kazandırmak size kalmış. İsterseniz Sıralama yönü seçimi için RadioButton yerine DropDownList veya daha başka bir kontrol kullanabilirsiniz. Ayrıca deneyenler görecektir; son örnek kod çalıştırıldığında ortaya çıkan tabloda, DESC seçeneğini seçtikten sonra "no" isimli sütun başlığına tıklarsanız sıralama değişmiyor. ASC iken yapılan sıralamanın aynısı DESC iken de oluşuyor. Basit bir örnek için bu konuyu araştırmaya gerek görmedim. Ama siz önemli işlerinizde kontrolün sağlam bir şekilde çalışıp çalışmadığını unutmayın. Görüşmek üzere..

606 / 020

ASP.NET İmla Kuralları – 2

İmlâ kurallarına devam ediyoruz. Bu konudaki ilk yazımızda
ASP.NET dosyalarında, sunucu tarafında icra edilecek kodları sayfa
içerisinde hangi bölgelere yazabileceğimizi ve bunların getireceği
sonuçları işlemiştik. Son olarak da dil-bağımsız sunucu taraflı yorum
bloklarına değinmiştik. Şimdi biraz daha ilerleyelim ve geriye (yani
ASP'ye) ket vurarak diğer ASP.NET'deki sözdizimi yeniliklerine göz
atalım.

Yönergeler (Directives)

Önce tanımlayalım. Yönergeler, bir web formu (.aspx) veya bir kullanıcı kontrolü (.ascx)
içerisine yazılan, derleyiciye bir takım belirli bildirimlerin
yapıldığı kod parçalarıdır. ASP'ye âşina olanlar, sayfa içerisinde
kullanılacak sunucu taraflı script dilini belirtmek için kullanılan
Page yönergesini hatırlayacaklardır. ASP.NET'de yönergeler ASP'den tanıdığımız söz dizimiyle yazılıyorlar.
Hemen bir örnek:

<%@ Page Language="VB" Debug="True" EnableViewState="False" %>

Evet, aynen ASP'de olduğu gibi,
<%@ ile başlayıp
%> ile biten bir alan içerisinde, yönerge adı ile başlayarak (bu örnekte
Page), derleyiciye bir şeyler anlatmaya
çalışıyoruz. Tüm yönergeleri bu yapıda yazıyoruz. Bir sayfada, elbette
birden fazla yönerge kullanmamız gereken durumlar olacak. O zaman
farklı yönerge blokları açmamız gerekir:

<%@ Page Language="VB" Debug="True" EnableViewState="False" %>
<%@ Imports Namespace="System.Data" %>
<%@ Register Tagprefix="YazilimFirmam" Tagname="MenuKontrolum" Src="Menu.ascx" %>

Konudan
sapmamak için örneklediğimiz yönergelerin detaylı anlatımlarına
girmiyoruz. Farklı bir makalede, yönergeleri tek tek ele alacağız.

Yönergelerin yazım stilini kavradıktan sonra aklımıza
yönergeleri sayfa içerisinde nereye yazacağımız sorusu gelebilir.
ASP.NET, bu konuda bizi kısıtlamıyor. Yönergeler, sayfanın istenilen noktasında yazılabilir. Ama yerleşik yazım disiplini ve okunabilirlik açısından sayfaların en üstüne konması daha uygun.

Doğal olarak yönergelerin amacına göre çeşitli kurallar da mevcut. Mesela bir web formu içinde (.aspx) sadece tek
Page yönergeniz olabilir. Aynı şekilde bir kullanıcı kontrolü (.ascx) içinde de sadece tek
Control yönergesine izin var.
Page direktifi web formuna özgü,
Control direktifi kullanıcı kontrolüne
özgüdür. Bundan dolayı bir .aspx içinde Control direktifini
kullanamazsınız. Bunun yanında, yönerge içerisinde bir niteliğe
verdiğiniz değer de o niteliğe uygun olmalıdır. Mesela
Page yönergesinde,
true veya
false değer kabul eden
Debug niteliğine bu ikisinden farklı
bir değer verirseniz, derleme aşamasında hata alırsınız. vs.. Bu gibi
detayları, yönergeleri işleyeceğimiz makalemizde anlatacağız.

Yönergeler, ASP.NET sayfalarında artık önemli bir yere sahip. ASP.NET
derleyicisi, işinde yönergelere öncelik veriyor. Biz de yönergeleri
öğrenmeye öncelik versek iyi olmaz mı?

Sunucu Taraflı Kapsamalar

Bu da eski bir yönerge aslında. Çok öncelerden.. "shtml" den gelen, farklı dosyaları dahil etme yönergesinden bahsediyoruz:


veya..


Bu ifadelerle, sunucu üzerinde bulunan başka bir düz yazı dosyasını
sayfamıza dahil edebiliyoruz. Böylece çok noktada kullanmamız gereken
kodları bir kere yazmış oluyoruz. Bu ifadeler, sayfadaki sunucu taraflı
kodlardan daha önce işletiliyorlar. Dosyanın yolunu ister fiziksel
olarak, ister sanal olarak belirtebiliyoruz. Her iki yöntemde de,
belirtilen patika (path), kesin (absolute, örnek: c:menu.inc) veya içinde bulunan sayfaya göre bağıl (relative, örnek: ../../menu.inc) olabilir.

ASP'yi bu kapsama ifadeleri olmadan düşünemiyoruz. Ama artık nankörlük
etmenin zamanı geldi de geçiyor bile. Çünkü ASP.NET, bu kapsama
bloklarının yerine bize daha güçlü ve yetenekli alternatifler sunuyor.
En basitinden her sayfada kullanacağımız site içi dolaşım menüsünü, bir
kullanıcı kontrolü biçiminde oluşturup, bir çok ek özellik verebiliriz.
Kullanıcı kontrollerini .ascx
uzantılı dosyalarda saklıyoruz ve istediğimiz .aspx sayfasında, veya
yine bir .ascx sayfasında kullanabiliyoruz. Çok sık kullanacağımız
fonksiyonları topladığımız bir kütüphaneyi de, Imports yönergesiyle
kullanabilme olanağımız var..

Neticede, ASP.NET, kapsama ifadelerinin pabucunu dama atmış ve
sunduğu alternatiflerle çok modern ve profesyonel bir anlayış getirmiş.
Biz yine de, kapsama ifadelerinin imlâsını bir hatırlayalım dedik.

Bitirirken...

Kanımca yazım kurallarını iyi özümseyen bir programcı, derleme
aşamasında alacağı hataları en aza indirecektir. Kaldı ki, ASP.NET,
çalışma prensibinden dolayı, programcıyı daha titiz ve düzenli kod
yazımına doğru zorlamaktadır. Bu konuyu ciddiye aldığımızdan, seriye
devam edeceğiz.

İyi çalışmalar.

206 / 020

ASP.NET İmla Kuralları – 1

ASP.NET dosyalarının .aspx uzantısı ile kaydedildiğini biliyoruz. Bu ayrıcalık
ile, eski ASP sayfalarımız, ASP.NET kurulu bir sistem üzerinde sorunsuz çalışabiliyor.
Uzantılar değişti. Peki ya kodlama stilinde bir değişiklik var mı? ASP.NET, ASP'den
kalma alışkanlıklarımıza ne kadar müsade ediyor? Yazımız, bu sorulara cevap arayacak.

ASP'yi bir hatırlayalım

ASP ile uğraşanların çok iyi bildiği

<% %> etiketleri vardır. Bu etiketlerle HTML
kodlarının arasında, sunucu taraflı script kodu için blok oluşturulur ve sayfa için
belirtilmiş script dili ile kodlamalar yazılır.

--pagebreak--

Hemen bu tip bir klasik ASP sayfası örneği verelim:

Örnek bir ASP sayfası


<%
For i=1 To 5 %>
size="<%= i %>"><%=
i %>

<%
Next %>

Yukarıdaki kodda <% ve %> etiketleri arasında yazılmış ifadeler, ASP yorumlayıcısı
tarafından sunucu taraflı bir talimat olarak değerlendirilecek ve icra edilecektir.
Ancak ASP'de sunucu taraflı script yazmanın bir başka yolu daha var:
Runat="Server" olarak nitelenmiş bir

Script etiketi. Hemen bakalım:

ASP sayfasında sunucu taraflı Script etiketi

ASP.NET Kod Blokları

ASP.NET motoru da, ASP gibi aynı şekilde kısa etiketleri ve script bloklarını kabul
ediyor. Yalnız bir takım farklılıklar ve kısıtlamalarla birlikte.

-- Kısa etiketler içerisinde

Function veya

Sub bloğu tanımlayamazsınız. Yani aşağıdaki kullanım
hatalıdır:

<%
' ASP.NET bu aşağıdaki satırda hata verecektir.
Sub Deneme()
Response.Write("asda")

End Sub
%>

Bu tanımlama ile hata alıyorsak fonksiyonlarımızı nerede tanımlayacağız? Geriye
bir tek yol kalıyor o da sunucu taraflı

Script etiketi kullanmak. Şöyle:

-- Sunucu taraflı

Script bloğu içerisinde sadece tanımlama
yapılabilir. Deklarasyon dışında herhangi bir metod çağrısı veya atama yapılamaz:

NOT
Tüm kısıtlamaların elbette bir nedeni var: nesneye yönelik mimari; ancak bu yazımızın
konusu değil. Merak edenler, yukarıdaki kodlarda yanlış bir kullanım yapıp, çıkan
hata sayfasının en alt kısmındaki Show Complete Compilation Source linkine
tıklayarak ASP.NET tarafından otomatik oluşturulan, sayfa ile aynı adı taşıyan Class
koduna bakabilirler. ASP.NET teknolojisinin getirdiği bir yenilik de işte bu noktada:
.aspx dosyasına yazdığınız her şey, yani bir script kodundan tutun da bir boşluk
karakterine kadar her şey bir Class bünyesine alınıyor. Ve bu dosya derlenip
.dll olarak saklanıyor. Kaynak kod değişene kadar sizin sayfanız .aspx dosyasından
değil, bu derlenmiş .dll'den sunuluyor. Bu, sayfanızın artık gerçek bir program
gibi çalışması demek.

NOT
Bunun yanında unutmamamız gereken bir kural: sayfa içi global değişkenlerimizi

Script bloğunda deklare etmeliyiz. Çünkü kısa etiketler
(<% %>) içinde tanımladığımız değişkenler, Script bloğundaki prosedürler tarafından
bilinmez. Bunun nedeni, sayfada <% %> arasındaki tüm ifadelerin derleme aşamasında
ayrı bir prosedür içerisinde toplanması ve tanımlanan değişkenlerin de bu prosedürün
lokal değişkenleri olmasıdır.

Sunucu Taraflı Yorum Bloğu

ASP.NET, sayfa içerisinde kullanılan dilden bağımsız bir yorumlama tekniği getiriyor.
Yorumlarımız, elbette sunucu taraflı olduğu için istemciye yansımıyor. Sunucu taraflı
yorum bloğunu
<%-- ve

--%> etiketleri ile oluşturuyoruz. Bu blok, ister
çok satırlı, ister tek satırlı kullanılabilir.

Sunucu taraflı yorumlama teknikleri
<%--
Burdaki kodlar, ASP.NET parser tarafından

dikkate alınmayacaktır.
(çok satırlı)
--%>

<%-- Tek satırlı
--%>

<%
' Dile özgü yorumlama kullanımı da mümkün.
' VB.NET yorum satırı
%>


' VB.NET yorum satırı
Sub Page_Load()
' VB.NET Yorum Satırı
End Sub

Bitirirken...

ASP.NET, köklü ASP'ye göre köklü değişikliklerle geldi. Bu köklü değişikliklerdeb
yazım kurallar da nasini aldı. Yazımızda, söz diziminde meydana gelen bu değişim
ve yeniliklerin bi kısmına değindik.

Yazım kuralları serimiz devam edecek. İyi çalışmalar.

106 / 020

ASP.Net Kurulumu ve Çokça Sorulan Sorular

ASP.Net ile gelen müthiş esneklikten faydalanmak için kurulumu başarı ile tamamlamak gerekiyor kuşkusuz. ASP.Net kurulumu için, .NET Software Development Kit'i indirerel bilgisayarınıza kurmanız gerekiyor. ana sayfasından devam ederek, ya da tıklayarak hemen indirebilirsiniz.

.NET SDK, benim gibi Internet'e Dial-up bağlantı sağlayan kullanıcılar için kabus sayılabilecek bir boyutta: ~130 MB. Ayrıca, Windows 2000 üzerine kurulum için Service Pack 2 gerekiyor. Bu nedenle ASP.NET çalışmaya başlamadan önce baya bir download macerası yaşamanız gerekiyor. İndirmeniz gereken dosyalar arasında bahsetmediğim, ama gerekli olan IE 5.5 var. Windows 2000 ile gelen IE 5.01 i, herhangi bir dergi CD sinden güncelleyebilirsiniz. Elinizde bir dergi CD si yoksa, Windows Update'i kullanabilirsiniz.

Not: .NET SDK Sadece IIS 5.0 yüklü Windows 2000 Server işletim sistemlerinde çalışır. Buna rağmen Beta 1 sürümü, IIS 4.0 yüklü NT 4.0 larda çalışabilir.

.NET SDK yı yüklemeden önce, Windows 2000 işletim sisteminiz için Service Pack i yükleyin. Daha sonra Internet Explorer 'ınızı, hala güncelleştirmemişseniz, en azından IE 5.5 e yükseltin. Bu ön hazırlıkları tamamladıktan sonra, ASP.NET kurulumu basamakları takip ederek başarılı bir şekilde tamamlayabilirsiniz. [SP2]

Not: .NET SDK, benim gibi Dial UP bağlantı ile Internet 'e bağlanan kullanıcılar için biraz büyük boyutta olduğu için, burada .NET SDK yerine, .NET Framework kurulumunu anlatacağım. Kurulum şekilleri benzerdir, ve yeri gelmişken söylemek gerekirse, iki teknoloji de MSI Installer kullanarak kurulur.

Microsoft .Net Framework kurulum dosyası bilgisayarınıza dotnetredist.exe olarak indirilir. Bu dosya 19,7 MB boyutundadır. Bilgisayarınıza indirdiğiniz bu dosya, boyutun küçük tutulması için ikinci defa paketlenmiştir. Esas kurulum dosyası, dotnetredist.exe yi tıkladığınızda, bilgisayarınızda herhangi bir konuma açılan dotnetfx.exe dosyasıdır.

dotnetredist.exe dosyasını tıkladığınızda, sizden Son kullanıcı lisans anlaşmasını onayladığınızı belirtmenizi ister. karşınıza çıkan, ve soldaki resime benzeyen stadart bir "Şartlarınızı kabul ediyorum" butonuna tıklamanızı ister.

Şartları kabul ettiğinizi belirten "Yes" tuşunu tıkladığınızda, kurulum programı sizden geçici dosyaları açmak istediğiniz bölümü belirtmenizi ister. Bu kurulum ileriki aşamalarda, Registy ye ve bilgisayarın sistem dosyalarına müdahale ettiğinden, mutlaka Administrator yetkileri gerektirir, ancak dosyayı açtığınız yerde de erişim izniniz olmalıdır. Ve dosyayı açtığınız bölüm yazılabilir olmalıdır.

Siz, geçerli bir konum belirtip, "OK" tuşunu tıkladığınızda, bilgisayar, geçici dosyaları, belirttiğiniz konuma açmaya başlar.

Her şey sorunsuz gitmişse, artık sizin de bir dotnetfx.exe niz var demektir. Bu dosyayı tıklayarak kuruluma devam edebilirsiniz. dotnetfx.exe yi tıkladığınızda, karşınıza resimdeki uyarı çıkacaktır. Bu uyarı size .NET kurmak istediğnize emin olup olmadığınızı sormaktadır. Bu makaleyi okuduğunuza göre buna emin olmalısınız, "Yes" i tıklayarak devam edebilirsiniz. Bilgisayarınızdaki Installer eski ise, kurulum programı Installer ınızı güncelleyecek ve daha sonra kuruluma devam edecektir.

Şu ana kadar bir sorun çıkmadıysa, kurulum programı kendini hazırlar ve MSI paketinin içindeki dosyalar açılmaya başlanır.

Kurulum aşağıdaki gibi bir ekranla başlar, program kurulumu sırasında size eşlik edecek olan kurulum programı bu ekranda kendini tanıtır. "Next" i tıklayak kuruluma devam edebilirsiniz.

Kurulum programı, IIS dosyalarını güncelleyeceğinden, kurlum sırasında IIS durdurulur. Eğer kurumsal olarak hizmet veren bir IIS iniz varsa, iş saatleri dışında kurulum yapmayı tercih etmelisiniz.

IIS durdurulduktan sonra, bilgisayarınıza yeni dosyalar kopyalanmaya başlanır.

Kurulum esnasında sizin yapacağınız hiç bir şey yoktur. Kurulum sırasında kullanabileceğiniz tek tuş olan "Cancel" i tıklarsanız, kurulumu yarıda kesmek isteyip istemediğiniz sorulur ve "Yes" derseniz bilgisayarınıza .NET kurulmaz, kurulumdan önceki durumuna geri alım yapılır. Kurulum tamamlandığında size kurulumun tamamlandığını belirten şu uyarıyı alırsınız.

Kurulum Registry 'ye ve sistem dosyalarınıza müdahale ettiğinden kurulumun tamamlanması için bilgisayarınızı yeniden başlatmalısınız.

Bilgisayarınızı yeniden başlattıktan sonra artık ASP.Net destekleyen bir IIS 'e sahip olacaksınız.

Aktif ASP.Net çalıştıran bir bilgisayarın işlem gücü bakımından gerçekten iyi olması gerekir. Benzer şekilde, ASP.Net uygulamalarınızı denediğiniz (ASP.Net yüklediğiniz) bilgisayarın da, ASP.Net olmadan rahat çalışıyor olması gerekir. Sadece Windows 2000 Server kurulumu için:
Windows 2000 Server için : En az 64 MB RAM, 128 MB önerilir.
Windows 2000 Ad. Server için : En az 128 MB RAM, 192 MB ya da 256 MB önerilir.
Windows 2000 Datacenter için : En az 128 MB RAM, 256 MB+ önerilir.

.NET tam bir RAM canavarıdır. .NET SDK bekleme konumunda iken, 25 MB civarında RAM harcar. (Sanal+Fiziksel) Bu, .NET servisleri üzerine getirdiğiniz ek işlem yüküyle doğru orantılı olarak artacaktır. Bilgisayarınızda rahat bir şekilde .NET teknolojilerini çalışmak istiyorsanız, Windows 2000 kurulumu için tavsiye edilen + 64 MB RAM düşünebilirsiniz.

Hard Disk gereksinimi olarak, Windows 2000 Server 'ın; 850MB + RAM Miktarı * 2 şeklinde bir gereksinimi vardır. 130 MB yakın olan indirdiğiniz dosya, kurulum yapıldığında genişleyeceği için, .NET için en azından 200 MB alan ayırmanız gerekmektedir.

ASP.Net in getirdiği en yeni özelliklerden biri ise kod derlemesidir. ASP 3.0 'daki mantığa göre, bir ISAPI ye, her seferinde ASP kodları verilir, bu kodlar ISAPI programa parametre olur ve sonuç üretilir. Ancak, ASP.Net ile bu değişmiştir. Çünkü ASP.Net ile, kodlar ilk çağırıldığında derlenmekte, ve daha sonra derlenmiş kodlardan sunum yapılmaktadır. Derleme yapan programların (Combiler) hepsinde olduğu gibi, hızlı derleme ve dolayısıyla hızlı sunum için, iyi bir işlemci gerekmektedir. ASP.Net in sisteminize getirdiği işlemci yükünü Performance Monitor den izleyebilirsiniz. ASP.Net sayfası çağırdığınızda mouse 'unuz yavaş hareket etmeye başlıyorsa, ASP.Net bilgisayarınıza fazla yük getiriyor demektir.

Web Server 'ın, çalıştırması gerektiği uzantılar Application Mappings ile IIS e tanıtılır. ASP 3.0 ve ASP.Net farklı uzantılara, dolayısıyla da farklı Application Mapping lere sahip olduğundan, .NET SDK yüklemiş olmanız demek, ASP çalışmalarınıza engel demek değildir. Çünkü, ASP 3.0 dosyaları *.asa, *.asp uzantıları alırken, ASP.Net dosyaları *.aspx, *.asax, *.ascx, *.asmx uzantıları alır. Bu da, iki farklı ISAPI tarafından işletilmeleri anlamına gelir. Yani ASP.Net kurmak, mevcut ASP uygulamalarınıza zarar vermez.

Visual Studio .NET, .NET geliştirmek için çok ideal bir ortam sunuyor. Ama ASP.Net çalışmak için illa ki Visual Studio .NET gerekmiyor. Herhangi bir metin editörü bu iş için yeterli oluyor.

.NET SDK, İşletim sistemi konusunda gayet seçici davranıyor. Pek tabi ki, her türlü işletim sisteminde ASP.Net kodlarını yazdıktan sonra, ASP.Net kurulu bir server 'a göndererek deneme yapabilirsiniz, ama ASP.Net kurmak için işletim sisteminizin mutlaka Windows NT tabanlı olması gerekiyor. Beta 1 Sürümü, SP 6 ile Windows NT üzerine kurulabiliyor. Ancak .NET SDK kurmak için mutlaka SP2 ile Windows 2000 ya da Windows XP gerekiyor. Saydığımız işletim sistemleri üzerinde IIS olması da şart tabi ki. Çünkü ASP.Net PWS ya da Apache gibi başka bir web server ile çalışmıyor.

Tüm bu gereksinimleri sağlamış iseniz, size dosyayı indirip kurmaktan başka bir şey kalmıyor. Kurulumun başarısını test etmek için, artık bir programcılık geleneği haline gelen "Merhaba Dünya" uygulamasını yapalım isterseniz.

Herhangi bir metin editörle, yeni bir dosya açın ve içerisine şunları YAZIN:

ASP.Net 'e başladık!

Bu örnekte, Server Kontrollerinden label
kullanılarak, ASP.Net e basit bir giriş
yapılıyor. Yukarıdaki tarihi ASP.Net e başlama
tarihiniz olarak kaydedebilirsiniz.


font-bold="true" runat=server/>

Eğer bilgisayarınızın ekranında kocaman "Merhaba Dünya! Şu anda saat: ..." yazıyorsa, tebrikler. ASP.NET öğreniminde, başlamakla büyük bir adım attınız. Gelecek makalemde, ASP.NET performansının izlenmesi, ve sisteminizde ASP.NET çalışmasının kontrolü hakkında birşeyler yazacağım.

Bu süreye kadar diğer makaleleri okuyarak ASP.NET'te yol alabilirsiniz.
Başarılar!

Kısım: ASP.NET Yorum yok

Sayfalar

Kısımlar

Desteklediklerimiz

Ay bazında arşiv

Haberleşme