ASP Server Nesnesi

ASP, PHP, PERL, CGI, HTML gibi web programcılık dilleri hakkında yardım, tartışma ve paylaşımlar.
Cevapla
Kullanıcı avatarı
UnreaL
Fast Friend
Fast Friend
Mesajlar: 207
Kayıt: 24-12-2005 17:26

ASP Server Nesnesi

Mesaj gönderen UnreaL »

Web Server, ASP için bir nesnedir, ASP'nin bir çok işini bu nesnenin özellikleri ve metodları halleder. Server nesnesinin bir özelliği (ScriptTimeout) ve dört metodu (CreateObject, HTMLEncode, URLEncode, MapPath) vardır. Web Server çalıştığı bilgisayarın sizin siteniz adına yönetiminden sorumludur; dolayısıyla bu kadar az özellik ve metodu var diye bu nesneden çok yararlanmayacağımızı sanmayın. ActiveX ve COM bileşenlerini çalıştırmak Server'ın görevidir.

ScriptTimeout Özelliği: Diyelim ki bir ASP Script'i ya bizim, ya ziyaretçinin, ya da Server'ın bir hatası yüzünden sonsuz döngüye girdi! Döngünün durması için gerekli şart asla yerine gelmiyor ve Script bir türlü yapacağı işi yapıp, sonlandırmıyor. Bu durumlarda ziyaretçinin ve tabiî Server'ın sonsuza kadar beklemesi mümkün değil! Programın bir şekilde durdurulması gerekir. Bunu hemen hemen bütün Web server programlarının Script Timeout (Script süre sınırı) diyalog kutusuna bir değer girilerek yapılır. Öreğin MS-Internet Information Server için varsayılan Script Timeout süresi 90 saniyedir. Yani ISS, herhangi bir Script'in çalışıp-durmasını 90 saniye bekler; bu sürenin sonunda Script'in çalışması tamamlanmazsa ziyaretçiye arzu ettiği sayfanın veya unsurun bulunamadığını bildirir. Bu süreyi (Server'ın varsayılan değerinin altında) kısaltmak değilse bile uzatmak elimizdedir. Bunu ScriptTimeout özelliğini kullanarak yaparız. ASP sayfasının herhangi bir yerine örneğin şu kodu koymak yeter:


<% Server.ScriptTimeout = 100 %>

Bu örneğe göre Server'ın varsayılan Script Timeout süresi 90 saniye ise 100 saniyeye çıkmış olur.
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.

CreateObject Metodu: İlk ASP kodunu yazdığımız andan beri bu metodu kullandığımızı görüyorsunuz. CreateObject (nesne oluştur) olmasa idi, dört mevsim birbirini izleyebilir, Dünya Güneş'in etrafında dönebilir miydi? Hiç sanmam. Fakat lütfen o CreateObject ile bu CreateObject'i birbirine karıştırmayın. Yukarıda kullandıklarımız Scripting nesnesinin bir metodu idi; bu Server nesnesine aittir. 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.

MapPath (Yolu belirle) Metodu: 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:\inetbup\wwwroot" 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:\inetbup\wwwroot\benim_site\" Fakat bu metodun sadece böyle duragan biçimde kullanılması gerekmez; bazen sayfalarımızda ziyaretçi ile etkileşmenin sonucu olarak varsayılan Web dizinimizi değiştirmek isteyebiliriz. Sözgelimi biri Türkçe, diğeri İngilizce iki sitemiz varsa, ve ana sayfamızda ziyaretçi Türkçe'yi seçtiyse, o noktadan itibaren Web uygulamamız için Web kök-dizini, "/turkish/" olacak ve mesela resimlerimiz için verdiğimiz "/resimler/" dizini kök dizinde değil, "/turkish/resimler/" klasöründe aranacaktır. Web yolunu dinamik olarak, yani ziyaretçinin tercihine bağlı şekilde değiştirebilmek için, önce ziyaretçiden gelecek bilgileri nasıl kullanacağımıza, yani Request (talep) nesnesine değinmemiz gerekir.

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


ADROTATOR (Değişen Reklam Banner'ları):

Bu Componentimiz sayesinde, sayfamızda her girişimizde veya sayfayı her Refresh edişimizde değişen bannerlar koyabileceğiz.

Ayrıca her banner'a ayrı ayrı link verebilecek, ve hatta hangi banner'ın kaç defa gösterileceğini ayarlayabileceğiz... Hemen nasıl yapıldığını inceleyelim...

<%@ Language=VBScript Codepage="1254"%>

<%
Set Reklam=Server.CreateObject("MSWC.AdRotator")
banner=Reklam.GetAdvertisement ("Banner.txt")
Response.Write Banner
%>


Banner.txt isimli txt dosyamız da aşağıdaki gibi olacaktır...

Redirect http:Rating.asp
width 423
height 53
border 0
*
Banner1.gif
http://www.massCars.com
MassCars
5

Banner2.gif
www.turkiyeforum.com
Türkiye'nin En Büyük Forumu
6

Banner3.jpg
http://www.EgitimCenter.Com
Türkiye'nin En Büyük Sanal Dersanesi
1

Şimdi bu textimizde kullandığımız terimleri tanımlayalım.

WIDTH: Bu alana Bannerlarınızın Genişliğini gireceksiniz.
HEIGHT: Bu alana da Bannerlarınızın Yüksekliğini gireceksiniz.
BORDER: Bu alana o girerseniz Bannerlarınız çerçeve kullanmaz. Gireceğiniz 1 ve daha yüksek değerler, Banner'ınıza çerçeve vermenizi sağlar.

İlk Satırda imajın adını ve yolunu yazıyorsunuz.

İkinci Satırda, Linkini
Üçüncü satırda ise imajın üzerine gelince çıkacak ALT yazısını.

Dördüncü satırdaki rakamlarımızın toplamı 10'u verir. Bu rakamlar seçili banner'ımızın 10 defada kaç kere gösterileceğini belirler...

Ama işin doğrusunu söylemek gerekirse ben bu yöntemi pek sağlıklı bulmuyorum. Çünkü bu banner'ların üzerine geldiğimiz zaman, link olarak bize bir QueryString değeri verir.

Bu da bize yeniden bir sayfa yazmamızı ve txt dosyamızın başına Redirect adresi olarak bu sayfaya yönlendirme yapmamızı gerektirir. Ama ben Select Case yöntemiyle daha güzel bir ASP Scripti yazdım ve onu kullanıyorum.
Onun Koduda aşağıdadır. Tek şartı döngüsü 10 olduğu için 10 imajıda yerleştirmeniz gerkiyor. Yani diyelim ki elinizde 4 tane banner var.

Biri 3, biri 3, biri 2, ve diğer geri kalan da 2 kere gösterilecek. O zaman biz de bu bannerları sayısına göre yerleştiriyoruz...B en de 4 tane var. Ben de aynen anlattığım gibi yapacağım.

Atrıca bu scriptimiz text dosya kullanmıyor... Yani başka hiçbir dosyaya gerek duymuyor ve ayrıca AdRotator Nesnesi kullanmadığı için de Windows98'de yani 98 PWS'de de çalışıyor.

CONTENTROTATOR

Bu dersimizde de içerik çevirici özelliğini göreceğiz ASP'nin. Bir sayfaya girdiniz ve sayfada bilgisayar reklamları var. Düşünsenşize her sayfaya girişinizde Bilgisayar dünyasıyla ilgili başka bir haber buluyorsunuz. Ne kadar ilginç değil mi?

İşte ben ASP'nin bu özeeliğini bilmediğim zamanlar, vay be adamlar habire güncelliyor derdim. Ama işin aslı böyle değilmiş. Meğerse ASP'de ContentRotator diye bir özellik varmış. İsterseniz hemen örneğini yaparak çalıştırarak öğrenelim...

<%
Set Tip = Server.CreateObject("MSWC.ContentRotator")
Response.Write Tip.ChooseContent("Content.txt")
%>


Evet yazacağımız kod bu kadar. Önemli olan Content.txt adlı dosyamızda ne yazacağımız ve ne yapacağımız. Şimdi isterseniz Content.txt adlı dosyamızı inceleyelim...

%% #2// Fikra1
> LORD
> Bir ingiliz lordu karisini yatakta bir genc adamla basmis...onlari oyle
> gorunce kadina : -"sayin leydim bu yaptiginiz genel ahlaka sigmaz ben size guvenmistim,
> guvenimin sonsuza kadar surecegini tahmin ediyordum... bana bunu
> yapamamliydiniz....", diye yarim saat nutuk ceker. Ama sonunda dayanamaz
> ve yataktaki gence doner:
> - "Ve siz sevgili genc, en azindan ben konusurken durmak nezaketini
> gosterebilirdiniz.

%% #3// Fikra2
> GENÇ KIZ
>
> Genc kız genc asıgına telefon acmıs : * -Jean, demis, seni çok
> arzuluyorum, geceleri uyku uyuyamyyorum.Ne olur bu hafta sonu bize yemege
> gel.Seni annem babamla tanıstırayım.Sonra benim odamda ders calısıyor
> gibi yapar doya doya sevisiriz...
> * Jean ömründe hicbir kızla sevismemis, toy bir delikanli. Bir eczaneye
> gitmis.Babacan eczaciya :
> -Bu hafta sonu önce bir aile yemegi , pesinden atesli bir ask
> yaşayacagım, demis, o yuzden iyisinden iki kutu prezervatif istiyorum...
> Babacan eczacı kutuları vermiş, oglanın sırtını sıvazlayıp yolcu etmiş. *
> Jean hafta sonunda bir büyük buket çiçekle Françoise'nın kapısını çalmış
> * Genç kız kapıyı açmış.Jean'y dogrudan yemege almış. Delikanlı çok mahçup
> biçimde masaya oturmuş.Kızın ana babasının yüzüne şöyle bir baktıktan
> sonra başını önüne egmiş.Başlamış dua etmeye.Ancak dua bir türlü
> bitmiyor.Françoise sonunda dayanamamış, fısıltıyla :
> *-Ben senin bu kadar dindar oldugunu hiç bilmiyordum Jean, demiş...
> Jean adeta inlemiş : * -Ben de babanın eczacı oldugunu bilmiyordum..

%% #5// Fikra3
> LÜTFEN
> Diskoda bir güzel eğlendikten sonra delikanlı sevgilisini evine
> götürmüş. Kapıda tam ayrılacakları vakit oğlan bir elini duvara dayayarak
> kızcağızı kapı ile kendi arasına sıkıştırmış...
> - Bir kere öpücem!...
> - Olmaz, komşular görür...
> Derken tartışma uzamış. O sırada kapı açılmış, küçük kızkardeş gözlerini
> oğuşturarak kapıda belirmiş. Ablasına dönüp:
> - Babam diyor ki, demiş, öptürecekse öptürsün yoksa ben aşağı inip o
> herifi öyle bir öperim ki bir daha unutamaz...
> Hem söyle şuna abla, elini diafonun düğmesinden çeksin...


Gördüğünüz gibi text dosyamız oldukça basit bir yapıya sahip. Hemen incelemeye alalım... Sanırım size tek farklı görünen karakterler %% #2// Fikra1 karakterleridir sanırım. Hemen bunların ne olduğunu açıklayalım.
%% işaretleri her bir bölümü birbirinden ayırmak için kullanılıyor.

Hemen arkasından gelen #2// işareti ise sayfanın toplamda kaç kere gösterileceğini belirliyor. Örnekte sayfanın yüklenme oranı sayıların toplamıyla bulunur. Örneğimizde yüklenme toplamı 10'ur. Mesela bu Fıkra #2// olduğu için sayfa 10 kere yüklenirse veya Refresh edilirse 2 kere gösterilecektir...

PAGE.COUNTER

<%
Set MyPageCounter = Server.CreateObject("MSWC.PageCounter")
MyPageCounter.PageHit
%>


Bu Web sayfası <%= MyPageCounter.Hits %> kez görüntülenmiştir.
DijitalKale
New Friend
New Friend
Mesajlar: 1
Kayıt: 05-12-2010 04:48

Re: ASP Server Nesnesi

Mesaj gönderen DijitalKale »

teşekkür ettik unreal ;) bu bilgiler çok faydalı oldu bana ;)
Cevapla
  • Benzer Konular
    Cevaplar
    Görüntüleme
    Son mesaj

Kimler çevrimiçi

Bu forumu görüntüleyen kullanıcılar: Hiç bir kayıtlı kullanıcı yok ve 1 misafir