2 Nolu Yazı Reklam arasının kısa olanı makbüldür. Delphice ASP.NET ile arşivbank sitesi tasarımı konusundaki 2 nolu yazımıza hoş geldiniz.
Eğer sizde benim gibi tüm uygulamalarda en son çare yardım sistemlerine bakıyorsanız .NET uygulamaları geliştirirken zaman zaman buna ara vermenizi, bir örnek üzerinde çalışırken sık sık imdat düğmesine basmanızı öneririm.
BDS 2006'da yeni bir proje oluşturduğumuzda ekrana gelen
New ASP.Net Application penceresinde boş yerleri doldurup OK. dediğimizde ;
1. Önce IIS'de sanal bir web yolu (Alias) oluşturuluyor. (Resim-1)

Resim - 1
2.
IIS'in kurulu olduğu sürücüde
wwwroot altında proje adıyla
eş isimli bir klasör oluşturuluyor.
3. Proje adıyla oluşturulan klasörün altınada
bin ismiyle derleme sonucu ASP.NET
dll dosyası ve kullanacağınız diğer paketlerin yer alacağı bir başka klasör oluşturuluyor.
4. Yine proje klasörünün altına
Webform.aspx,
global.asax,
web.config,
Webform1.pas dosyaları oluşturuluyor.
Klasör ve dosya yapısı :
<DIR> . <DIR> .. <DIR> bin Global.asax Global.pas Web.config WebForm1.aspx WebForm1.pas
gibi bir hal alıyor. Burada aynı isme fakat farklı uzantıya sahip
WebForm1.* dosyaları üzerinde çalıştığımız projede kullanacağımız temel dosyalar,
global.asax ve
web.config dosyalarıda uygulamanın global ayar ve değişken tanımlarının saklandığı dosyalar. Şimdilik bu son iki dosyayı atlıyoruz.
WebForm.* Dosyaları
Eğer Asp, php gibi bir web betik diline el ve göz alışkanlığınız varsa tasarım için kullanılan sayfalarla, dinamik eleman öğeleri, procedure, fonksiyon ve değişken tanımlamalarının iç içe geçtiğini, bu yüzdende bazen tasarımın okunurluğunun azaldığını hatırlayacaksınız. Php gibi dillerde bu tip durumlar için template sınıfları, şablon dosyaları kulanılabiliyormuş. Asp'deki durumu bilmiyorum. Şahsen okuma yazma bildiğimden web tasarım etiketleriyle, betik dil kodlarının bir birine geçmesi konusunda hiç şikayetçi olmadım. Ancak tasarımla kodlamanın ASP.NET'teki gibi ayrılabilmeside gerçekten okunurluğu artırıyor.
ASPX ve birazdan değineceğimiz ASCX uzantılı sayfalar kodlamayla tasarımın ayrıştırılmasında kullanılıyor. BDS 2006 bir ASPX/ASCX sayfası üzerinde tıpkı frontpage, dreamwaver vs uygulamalarındaki gibi tasarımı anında gösterebilme yeteneğine sahip. Bu sayfaların üzerine .NET Web ve Dataset bileşenleri, HTML etiketleri ve form elemanlarını koyuyoruz. Koyduğumuz her bir elemana karşılık BDS aşağıdaki örnekte görüleceği üzere ilgili tasarım dosyasına bizim için gidip gereken ifadeleri çiziktiriyor. (Resim - 2)

Resim -2
Buda bu sayfanın içindekiler :
<%@ Control Language="c#" AutoEventWireup="false" Codebehind="gelistirici_login.pas" Inherits="gelistirici_login.TWebUserControl1"%> <p>Lütfen Kullanıcı adınız ve şifrenizle giriş yapınız.<br></p> <table cellspacing="0" cellpadding="0" border="0" align="center"> <tr> <td align="right">Kullanıcı </td> <td> <input id="kullaniciadi" name="kullaniciadi" style="BORDER-RIGHT: #000080 1px outset; BORDER-TOP: #000080 1px outset; BORDER-LEFT: #000080 1px outset; WIDTH: 78px; BORDER-BOTTOM: #000080 1px outset; HEIGHT: 18px; BACKGROUND-COLOR: #ffffec" size="9"> </td> </tr> <tr> <td align="right">Şifre </td> <td> <input type="password" id="sifre" name="sifre" style="BORDER-RIGHT: #000080 1px outset; BORDER-TOP: #000080 1px outset; BORDER-LEFT: #000080 1px outset; WIDTH: 78px; BORDER-BOTTOM: #000080 1px outset; HEIGHT: 18px; BACKGROUND-COLOR: #ffffec" size="9"> <td></tr> <tr> <td align="right">G.Kodu </td> <td> <input id="guvenlikkodu" name="guvenlikkodu" style="BORDER-RIGHT: #000080 1px outset; BORDER-TOP: #000080 1px outset; BORDER-LEFT: #000080 1px outset; WIDTH: 78px; BORDER-BOTTOM: #000080 1px outset; HEIGHT: 18px; BACKGROUND-COLOR: #ffffec" size="9"> </td> </tr> <tr> <td align="center"> <ASP
abel id="Label_GuvenlikKodu" runat="server" forecolor="#483D8B" font-bold="True" font-size="Medium">0</ASP
abel> </td> <td> <ASP:Button id="Button1" runat="server" text="Oturum Aç" width="74px" borderstyle="Solid" borderwidth="1px" backcolor="#4682B4" forecolor="#F0F8FF"></ASP:Button> </td> </tr> <tr> <td colspan="2" align="center"> <ASP
abel id="Label_Hata" runat="server" forecolor="Red" font-size="Smaller">---</ASP
abel> </td> </tr> </table>
Herhalde pas uzantılı dosyanın ne işe yaradığını söylemeye gerek yok. Buda bu sayfanın pas dosyası.
unit gelistirici_login; interface uses System.Data, System.Drawing, System.Web, System.Web.UI, System.Web.UI.WebControls, System.Web.UI.HtmlControls, System.ComponentModel, Borland.Data.Provider,System.Web.SessionState, System.Configuration, MySql.Data.MySqlClient,Borland.Vcl.SysUtils; type /// <summary> /// Summary description for WebUserControl1. /// </summary> TWebUserControl1 = class(System.Web.UI.UserControl) {$REGION 'Designer Managed Code'} strict private components: System.ComponentModel.IContainer; procedure InitializeComponent; procedure Button1_Click(sender: System.Object; e: System.EventArgs); {$ENDREGION} strict private procedure Page_Load(sender: System.Object; e: System.EventArgs); strict protected Button1: System.Web.UI.WebControls.Button; MySqlBaglantisi: MySql.Data.MySqlClient.MySqlConnection; MySqlCommand1: MySql.Data.MySqlClient.MySqlCommand; Label_GuvenlikKodu: System.Web.UI.WebControls.Label; Label_Hata: System.Web.UI.WebControls.Label; procedure OnInit(e: System.EventArgs); override; private FHataKodu : String; procedure SetGuvenlikKodu; function GecerliGelistiriciGirisimi: Boolean; { Public Declarations } end; implementation function RandomString(PWLen: integer): string; const StrTable: string = 'ABCDEFGHIJKLM' + '0123456789' + 'NOPQRSTUVWXYZ'; var N, K, X, Y: integer; begin Randomize; if (PWlen > Length(StrTable)) then K := Length(StrTable)-1 else K := PWLen; SetLength(result, K); Y := Length(StrTable); N := 0; while N < K do begin X := Random(Y) + 1; if (pos(StrTable[X], result) = 0) then begin inc(N); Result[N] := StrTable[X]; end; end; end; function TWebUserControl1.GecerliGelistiriciGirisimi:Boolea n; Var _MySqlDataReader : MySqlDataReader ; begin try ------------
Editörün session time out'una yakalanmadan ASCX ve ASPX hakkında bir kaç giriş bilgisi daha ekleyip bu yazıyıda reklam arası için burada kesiyorum.
ASPX ve ASCX arasındaki Fark
İkiside tasarımla ilgili bilgileri tutmasına rağmen bir aspx uzantılı dosya web sunucusundan doğrudan doğruya çağrılabilirken ascx uzantılı dosyalar bir aspx dosyasına tutturularak görüntülenebilmektedir. Tutturma ile ilgili işlemlere ileride değineceğiz. Ancak bu tutturma işleminin php' ve asp dekine benzediğini ama onlardan daha öte bir şey olduğunu aklınızda tutmanız yeterli. Tabii ki ASP.NET ile kullanılan başka dosya tipleride vardır. Ama okuyup yazabildiğimiz kadarı şimdilik bu kadar.
Bana verilen sürenin ve bir yazının daha sonuna geldik. Devamında buluşmak üzere, hoşçakalın.