Thursday, 26 May 2011

Sunucu (Server) Nesneleri

Sunucu (Server) Nesneleri

ASP’yi diğer CGI teknolojilerinden ayıran başlıca özelliklerden biri tek tek Web sayfalarını sanki bir bilgisayar programının çeşitli pencereleri, diyalog kutuları, mesaj kutuları, girdi kutuları gibi, birarada bir “uygulama programı” olarak bağlayabilmesidir. Başka bir deyişle bize, ziyaretçinin sitemize bağlandığı ve ana sayfamızı açtığı andan itibaren sitemizin bir program bütünlüğünde çalışmasını sağlayacak araçlar gerekir. Bunu ancak Web Server’ın yardımıyla yapabiliriz.

ASP sayfalarımızda kullanacağımız ikinci grup nesne, Sunucu Nesneleri’dir. Bu grupta tabiî önce Sunucu’nun kendisi yer alır; sonra ziyaretçi ile kurduğumuz ilişki gelir. Ziyaretçi ile ilişkimizi iki yönlü trafiğe benzetebilirsiniz: ondan bize gelen talepler, bizim ona karşılıklarımız.

Ziyaretçiden bize gelen trafiğe neden “Talep” diyoruz? Ziyaretçi, Browser’ının URL hanesine yazdığı her adresle, veya formlardaki bir düğmeyi veya sayfalarımızdaki herhangi bir köprüyü tıklamakla, Server’a “Bana şunu göndersene!” demiş olur. Bu taleptir. Ziyaretçi taleplerinin tümü Talep Nesnesi (Request Object) olarak bir arada ele alınabilir. Server’ın bu taleplere verdiği karşılıklar, yani ziyaretçinin Browser’ına gönderdiği sayfalar, resimler, sesler, videolar ise karşılıktır ve ASP açısından Karşılık Nesnesi’ni (Response Object) oluşturur.

Text Dosyaya Yazdırma

Text Dosyaya Yazdırma

Text dosyasına istediğiniz veriyi girebilir. Veri depolama işlemlerinizi bu şekilde kolaylıkla halledebilirsiniz.

<center>ÖRNEK</center>
<%
'-- Öncelikle FileSystemObject nesnesi DosyaNesnesi isimli değişkene aktarıldı.
Set DosyaNesnesi=CreateObject("Scripting.FileSystemObject")
'-- Server'ın kök klasörü altında ornek.txt isimli dosya açıldı.
Set Dosya=DosyaNesnesi.OpenTextFile(server.mappath("\ornek.txt"),1,False,False)
'-- ornek.txt içerisine Merhaba yazılı bir satır ekler.
Dosya.writeLine("Merhaba")
'-- Dosya değişkeni server'ın belleğinden atıldı.
Dosya.close
'-- DosyaNesnesi değişkeni server'ın belleğinden atıldı.
Set Dosya=Nothing
Set DosyaNesnesi=Nothing
%>

OpenTextFile-Varolan Metin Dosyasını Açma ve Ek Yapma

Varolan Metin Dosyasını Açma ve Ek Yapma

(OpenTextFile)

<%
Dim DosyaSistemi, MetinDosyasi, Satir
Set DosyaSistemi = CreateObject("Scripting.FileSystemObject")
Set MetinDosyasi = DosyaSistemi.OpenTextFile("c:yazi_deneme.txt",1, 0)
Do
Satir = MetinDosyasi.ReadLine
%>
<%=Satir%>
<%
Loop Until MetinDosyasi.AtEndOfStream
MetinDosyasi.Close
%>

Set MetinDosyasi = DosyaSistemi.OpenTextFile("c:yazi_deneme.txt",1, 0)

Burada dosya yolunu ve adını veren birinci argümana ek olarak iki yeni argüman görüyorsunuz: “8,0” şeklinde

Bunlardan birinicisi girdi/çıktı durumu (I/O Mode), ikincisi ise biçim (Format) ile ilgilidir. I/O Mode parametreleri şunlardır.

1: okumak için aç
8: eklemek için aç

Açılacak dosyanın biçimini belirttiğimiz son argüman ise şu değerlerden birini alabilir:

0: ASCII dosyası olarak aç
-1: Unicode dosyası olarak aç (Örneğin içinde Türkçe karakterler varsa)
-2: Sistemin varsayılan dosya türü olarak aç

ReadLine. Bu, açılan metin dosyasından bir satır okutmamızı sağlar.
İkinci ve son satırları okutmamızı ise Do..Loop kontrolü sağlar. Bu Döngü AtEndOfStream oluncaya kadar (dosyanın sonuna gelene kadar) devam eder.

Kullanbilecegimiz Diger komutlar;

Read (oku): Bir sayı örgümanı ile çalışır ve verdiğiniz sayı kadar karakter okur.
ReadLine (satır oku): Bir satır okur ve String olarak verir.
ReadAll (tümünü oku): Bütün satırları okur ve tek String olarak verir.
Skip (atla): Bir sayı argümanı ile çalışır ve verdiğiniz sayı kadar karakteri atlar.
SkipLine (satır atla): Bir sonraki satıra atlar.
Bu metodlarla sağladığımız okuma işinin kontrolü amacıyla şu özellikleri de kullanabiliriz:
AtEndOfStream (akımın sonunda): Okutulan dosyanın sonuna gelinmesi halinde True (doğru) olur.
AtEndOfLine (satırın sonunda): Okutulan satırın sonuna gelinmesi halinde True (doğru) olur.

Server.MapPath

Server.MapPath :

MapPath (Yolu belirle)

Web Server açısından “kök dizin” (root directory) Server’ın bulunduğu bilgisayarın sabit diskinde, herhangi bir klasör olabilir.

Örneğin IIS için bu varsayılan değer olarak “C: netbupwwwroot” klasörüdür. Özellikle ASP ile “program niteliğinde siteler” yapmaya başladığımızda, sitenin ilgili bütün dosyalarının bulunduğu bir dizin için yol belirlemek isteyebiliriz. Bunu Server nesnesinin MapPath (Yolu belirle) metodu ile yapabiliriz:

WebDizini = Server.MapPath(“/benim_site”)

Bu komutla WebDizini değişkenin değeri muhtemelen şöyle olacaktır:

“C: netbupwwwrootbenim_site”

Server.CreateObject

Server.CreateObject :

CreateObject(ObjectID)

Diyelim ki sayfanızda reklam amaçlı banner grafiklerini belirli zaman aralığı ile veya ziyaretçiye gönderdiğiniz Cookie (çerez) bilgilerine göre değiştirmek istiyorsunuz. Bunun için diyelim ki MS-Web Server Programının AdRotator bileşininden yararlanacaksınız; şöyle bir kod işinizi görebilir:

<% Set Reklam = Server.CreateObject (“MSWS.AdRotator”)%>
<%= Reklam.GetAdvertisement(“/reklamlar/buyukbanka.txt”)%>

Burada GetAdvertisement, Server’ın AdRotator bileşininin bir metodudur. Server’ın CreateObject metodundan, veritabanına ulaşırken de yararlanacağız.

<% Set BenimDB = Server.CreateObject("ADODB.Connection") %>

ÖRNEK

<%
'-- Bu kod ile veritabanı nesnesi tanımlandı. İstenirse burada serverde kayıtlı olan DLL dosyalar da tanımlanabilir.
Set Nesne=Server.CreateObject("ADODB.Connection")
%>

HTMLEncode, URLEncode

HTMLEncode, URLEncode:

İçinde HTML açısından kod parçası veya özel işaret sayılan karakterler bulunan metinleri sayfamıza içerik olarak göndereceğimiz zaman Server'ın işaretleri aynen metin gibi göndermesini sağlamak için, örneğin:

Server.HTMLEncode("Değisken1 < Değisken2")

yazarsak, ASP bu metni HTML kodu olarak yorumlamaz, metin olarak algılar.

Internet'te bazen özellikle sayfa adresleri belirtilirken bazı değerlerin "URL Kodu" dediğimiz şekilde kodlanmış olarak gönderilmesi gerekir. Bu kodlama türünde boşlukların yerine + işareti konmuş olması şarttır. Bu tür bilgiler göndereceğimiz zaman:

Server.URLEncode("kelime 1 kelime2 kelime3")

şeklindeki bir kod Bunu hemen şu şekle sokacaktır: kelime1+kelime2+kelime3

Server Script Time Out

Server Script Time Out

Bir sayfa içindeki script lerin belli bir süre içerisinde çalışması bekletilir.Bu süreyi kendiniz degiştirmediginiz ürece 90Sn dir.Yani 90 Sn içerisinde tamamlanmazsa çalışması durdurulur.

Bunu degiştirmek için ise:

<% Server.ScriptTimeout = 145 %>

Bölelikle çalışma süresini 145 Sn çıkartmış oluruz bunu degiştire bilirsiniz.

Böyle bir şeyi neden yapmak isteyebiliriz? Script'iniz çok karmaşık veya başka bir Server'daki veritabanından veri çekiyor, olabilir. Gerçi bu anlamda 90 saniye bilgisayar milleti için bir asır anlamına gelir, ama yine de durdurulmasaydı işini başarıyla tamamlayacak bir Script, bu sürenin kısalığı yüzünden Server tarafından durdurulabilir. ASP sayfalarınız çok karmaşıksa ve sürekli Timeout hatası veriyorsa, hata aramadan önce bu süreyi uzatabilirsiniz. ,