![]() |
|
|||||||
| Anasayfa | Forum | Oyunlar | Kayıt ol | Yardım | Üye Listesi | Ajanda | Arama | Bugünki Mesajlar | Forumları Okundu Kabul Et |
| Notices |
![]() |
|
|
LinkBack | Seçenekler | Arama | Stil |
|
|
#1 (permalink) | |||||||||||||||||
|
ASP.NET .NET ’e giriş, Neden ASP.NET? ASP.NET kısaca Microsoft’un Haziran ayı itibari ile lanse edilen yeni sunucu taraflı web teknolojisidir. Microsoft’un yeni gözbebeği olan .NET alt yapısı çerçevesinde, bir çok açıdan yetersiz kalmaya başlamış ve tabiri caizse son kullanım tarihi geçmiş ASP ’nin yerini alacak olan ASP.NET, web programcılığı tarihinde çığır açacak yeniliklerle karşımıza çıkmakta. İlk olarak ASP+ olarak açıklanan bu yeni teknoloji, Microsoft’un sunucu taraflı internet teknolojilerini de .NET platformu altında toplama kararından sonra ASP.NET adını aldı. Neden ASP den vazgeçip yeni bir dil öğrenmeliyim diyorsanız cevabı hazır. Öncelikle ASP nin neden terkedilmeye mahkum olduğunu anlayalım. 1. Bildiğiniz üzere ASP (Active Server Pages), uzantıları ".asp" olan dosyaların asp.dll adlı bir ISAPI yorumlayıcısı tarafından yorumlanması ve kodda yer alan işler yapıldıktan sonra sonucun istemciye gönderilmesi esasına dayanıyordu ki bu sunucunun performansını ciddi şekilde etkiliyordu. Her isteğin ardından tekrar yorumlanan kodlar aynı anda yüzlerce sitenin barındığı sunuculara ciddi yük getirmekteydi. 2. ASP ile yazdığınız kodlar her ne kadar site ziyaretçileri için görüntülenemez olsalarda, intranet uygulamaları geliştirenler aylarca uğraşıp geliştirdikleri programlarını herhangi bir ortama kurduklarında ciddi bir tedirginlik içine girerlerdi. Neden, kodlar ortalıkta da ondan. 3. Yarı nesne tabanlı bir programlama dili olan ASP, sadece temel öğeleri ve işlevleri içeren bir nesne ortamı sağlıyordu. Sunucuda kurulu olan COM objelerine erişerek veya kendi objelerinizi yazarak ( sunucuya kaydetmek zorundaydınız ) kendinize nispeten geniş bir hareket ortamı yaratabiliyordunuz. Ancak ASP’nin özgün nesne topluluğu bir çok sorunun çözülmesinde yetersiz kaldığından çoğunlukla üçüncü parti COM bileşenlerine ihtiyaç duyuluyordu. Bu çok ciddi bir sorundu çünkü her Hosting firması sizin ihtiyacınız olan bileşeni bulundurmayabiliyordu. Sizin yazdığınız bileşenlerin sisteme kurulması konusunda da güvenlik açısından çok hassas davranıyorlardı. 4. ASP, HTML kodlarının arasına serpiştirilerek yazılması gereken bir dil. Buna literatürde "Spagetti kodlama" deniliyor. HTML tagleri arasında kaybolan ASP kodları hiç hoş bir görünüm arzetmediği gibi, herşeyin birbirine girmesine de neden olabiliyordu. 5. ASP ile Nesne yönelimli çalışamadığınızdan tekrar kullanılabilir sınıflar ( class ) ve arabirimler yazılamıyordu. 6. Oluşturduğunuz formların yönetimi ise başlı başına bir dertti. Formun içindeki bilgilerin kontrolleri ASP ile yapılamadığından Javascript öğrenmek ve kullanmak zorunda kalmıştık. Formdaki değişiklikler neticesinde, formun bazı öğrelerinin içeriğinin değişmesinin gerektiği durumlarda formun mutlaka submit edilmesi gerekiyordu. Tabii Javascript’i iyi biliyorsanız durum farklı. Peki ASP.Net cephesinde durum ne? Bize neler kazandırıyor ? 1. Yorumlayıcı Uzantıları .aspx olan ASP.NET dosyalarının yorumlanmaları için yeni bir alt yapı kullanılıyor. Yeni çalışma ortamımızın adı IIS ile entegre çalışan .NET Framework. Bu yeni çalışma ortamının en büyük getirileri şüphesiz uyumluluk ve dayanıklılık. Bundan böyle yazacağınız ASP.NET kodları IIS ile sorunsuz çalışacak. Ayrıca ileriye dönük düşünüldüğünde bugün yazacağınız kodlar IIS’nin yeni sürümlerinde de problem çıkarmayacak. 2. Programlama dili, yazım kuralları Temelde bir çok farklılık bulunmakta. Bunun en önemli sebebi artık hem Object Oriented Programming ( Nesne Tabanlı Programlama ) hemde Event Driven (Eylem Yönelimli ) kullanılıyor olması. Bu konuyu gelecek yazılarımızda ayrıntıları ile inceleyecek ve artık hepimizin aşina olması gereken Nesne Yönelimli Programlama konusunu öğreneceğiz. Peki ASP.Net programlarken hangi dili kullanacağız? Cevap, canınız hangisini isterse. Çünkü artık ASP ile en güzel günlerini görmüş VBScript adlı melez ve yarım yamalak dili kullanmak zorunda değilsiniz. Ne demiştik? ASP.NET, .Net platformunun bir parçası. Yani .Net için kullanabileceğiniz bütün dilleri kullanabilirsiniz. Bunlardan en önemlileri microsoftun yeni geliştirdiği ve "Java ya nispet olsun diye çıkardılar abi" şeklinde spekülasyonlar yapılan c# ( si şarp okunur ) ve tüm özellikleri ile birlikte kullanabileceğiniz Visual Basic.NET . Ancak şunu akıldan çıkarmamak gerekir. Kullanacağınız diller gerçekten sınırsız. PHP.NET veya Perl.NET gibi üçüncü parti dillerle de programlama yapabilirsiniz. 3. Compile edilerek ( derlenerek ) çalıştırılan kodlar Haydaaa! .exe ve .dll dosyaları derlenmiyormuydu? Evet! Kesinlikle öyle. Ancak aslında sizde bir .dll yazıyorsunuz. Yazdığınız kodlar, çalıştırılmadan önce bir defaya mahsus .NET derleyicisi aracılığı ile MSIL denen ara koda çevriliyor. Bunun ardından da makine kodu dediğimiz koda dönüştürülüyor, yani .dll haline getiriliyor. DLL lerin hızları göz önüne alındığında bunun ne çaplı bir performans artışı sağlayacağını düşünmek için matematik profesörü olmaya gerek yok. Derlenerek çalışan kodların daha bir çok getirisi var. Hatalarınızı anında görebiliyorsunuz. Düzeltmeleri yaptıktan sonra kodu tekrar çalıştırdığınızda, eğer gerçekten hata yoksa derlenen kod hemen ziyaretçilerinize hizmet vermeye başlıyor. 4. c# ’ın getirdikleri Her ne kadar bu yeni ve müthiş yetenekli dili kullanmak zorunda olmasanızda, c# .NET ortamının resmi dili haline gelmiş sayılır. İlk defa .NET ile ortaya çıkmasının bunda etkisi büyük tabi. C# .NET Framework ile geliştirilmiş ve belkide .NET yapısı için tasarlanmış bir dil. Dolayısıyla .Net’in bütün özelliklerini barındırıyor ve sonuna kadar kullanabiliyor.Önemli artılarından biride tam manası ile Nesne yönelimli programlamaya destek vermesi. Yani Nesneye yönelik programlamanın getirdiği bütün avantajlardan faydalanabiliyorsunuz. Yazım kuralları açısından Java’ya çok benziyor ancak c++ da andırıyor. Kısacası iki dilin bütün iyi yönlerini almış. Öğrenmesi çok zor değil gibi gözükmesine rağmen, eski ASP cilerin Visual Basic.Net üzerinde yoğunlaşacağını tahmin ediyorum. 5. Devasa kütüphane desteği Microsoft’un uzun uğraşlar neticesinde toparladığı ve yıllardır geliştirilerek Windows ortamında program yazanların beğenerek kullandığı sınıf kütüphaneleri (Base Class Library-BCL) bundan böyle ASP.Net programcılarının da hizmetinde. Bu kütüphanelerin yaptığı kısaca şu, işletim sisteminin alt yapısı ile gelen bir takım öğelerin kullanılabilir hale gelmesini sağlıyor. Yani bir mail göndermek veya dosya upload etmek için üçüncü şahısların componentlerine ihtiyacımız olmayak. 6. Sunucu kontrolleri (Server Controls) ASP.NET, sunucu tarafında olay güdümlü olarak programlanabilen, sunum (presentation) ile mantığı (logic) başarıyla ayıran bir bileşen seti ve mimarisi sunuyor. Bu bileşenler, koddan bağımsız olarak sayfa üzerine yerleştirilebiliyor ve ayrı dosyalarda bu kontroller için programlama kodları yazılabiliyor. Biraz garip geldi değilmi, ilerleyen yazılarda detaylarına indikçe anlaşılır hale gelecek, meraklanmayın. 7. XML ile kolay konfigurasyon Server konfigurasyonu için IIS yönetim arabirimi ile uğraşmanıza gerek kalmadı. Basit bir XML dosyası ile server konfigurasyonunu yapabiliyorsunuz. Kısacası .NET platformunun saygıdeğer üyesi ASP.NET geldiği uzun ve tecrübelerle dolu yoldan eli boş gelmiyor. Bize bugüne kadar hayal bile edemeyeceğimiz bir çok yenilik ve imkan sunuyor. Umarım biz türk programcıları arasında hakettiği ilgiyi görür ve daha iyiye ulaşma çabamızda böyle güzel bir teknolojiden gerektiği gibi yararlanabiliriz. Şunun altını özellikle çizmemiz lazım. .NET ve ASP.NET, ASP’nin devamı niteliğinde değil. O bambaşka bir teknoloji. Sanırım yüzyılın buluşlarından desek abartmış olmayız. Geleceğin trendini yakalamak adına en kısa sürede öğrenmek ve ciddi uygulamalar geliştirmekte ASP.NET ’i kullanmak zorundayız |
|||||||||||||||||
|
|
|
|
|
#2 (permalink) | |||||||||||||||||||||||||
|
ASP.NET Avantajları ASP.NET avantajlarını şöyle sıralayabiliriz. Programlama Dilinde Bağımsızlık ASP.NET programlama dillerimden bağımsızdır. ASP.NET web yazılımları geliştirebilmek için 20 programlama dili ve fazlasını kullanabiliriz,örneğin, VB.NET, C#, JScript.NET, C++ with Managed Extensions, COBOL.NET, Perl.NET. Derlenmiş Kod Bildiğimiz gibi ASP scripting dilleriyle çalışıyor. Fakat ASP.NET derlenmiş kod ve güçlü tipli dillerle çalışıyor, yani gerçek programlama dilleriyle. ASP.NET bu nedenle gerçek veri tiplerini kullanıyor örneğin integers ve strings. int sayac; string isim; ASP.NET de kullanılan programlama dilleri daha iyi olağanüstü durum işleme gücüne sahiptirler. ASP.NET içerisinde try … catch … finally deyimleri ile olağanüstü durum işleme imkanına sahibiz. try { ...; } catch (e) { ...; } finally { ...; } Sürükle & Bırak ve Olay Bazlı Programlama Eğer Visual Basic kullandıysanız, bilirsiniz ki VB’nin en güzel taraflarından birisi sürükle ve bırak objeleri sistemi ve olay bazlı programlama yani click, doubleclick, textchange gibi. ASP.NET bu özellikleri WEb Formlarıyla aynı şekilde kullanabilirisiniz. Bundan sonraki bolümde göreceğiniz gibi Visual Studio.NET içerisinde nasıl ASP.NET web uygulamaları geliştireceğinizi anlatacağım. VB de nasıl program geliştiriyorsanız, ASP.NET Web Formları da yani fonksiyonelliği sağlıyor.ASP.NET içerisinde gerçekten çok iyi dizayn edilmiş ve çok sayıda HTML kontrolleri vardır. Hemen hemen bir ASP.Net sayfasında bulunan bütün HTML kontrolleri Visual Basic, C#, C++ kodları ile kontrol edilebilir. ASP.NET buna ek olarak yeni nesneye dayalı programlamayı destekleyen, girdi kontrolleri, programlanabilir listbox lari, yeni doğrulama kontrolleri (validation controls). ASP.NET içerisinde örneğin DataGrid, DataList kontrolleri olup bu kontroller web yazılım geliştiricisinin hayatini çok kolaylaştırmaktadır. bu kontrollere ileriki bölümlerde detaylı şekilde değineceğiz. Mobile Programlama Desteği ASP.NET ile sadece web yazılımları değil ayrıca mobil telefonları ve PDA’lar (Palm, PocketPC’s, RIM devices, etc) içinde yazılım geliştirebilirsiniz.ASP.NET de mobil aletleri için WML (Wireless Markup Language) veya HTML 3.2 (Hyper Text Markup Language) veya cHTML (Compact Hyper Text Markup Language) of I-mode aletlerini destek sağlar. ASP.NET mobil aletin kullandığı protokolü otomatik olarak belirler ve ona göre sonucu geri döndürür. Bağlantısız Veri Erişimi ASP ve ADO nun en önemli sorunlarından birisi ADO her zaman veritabanına canlı bağlantıyı tutar. Buda ASP sayfalarının çalıştırılmasını önemli ölçüde yavaşlatır. ADO.NET bağlantısız veri erişimini sağlayan sistemi bizim kullanımımıza sunar. Session state ASP session değişkenleri desteği çok sınırlıdır ve birden fazla web server dan oluşan sistemde session değişkenlerini hiç desteklemez.ASP.NET de ise olay tamamen değişiyor, birçok session depolama metodunu destekler örneğin In-Process (ASP ile ayni), out-of-process (session durumu başka bir bilgisayardaki Windows Servis ile sağlanır) ve SQL Server’da. Out-of-process ve SQL Server seçenekleri web farm desteği sağlar. Güvenlik Desteği ASP sadece IIS authentication metodlarını desteklerken ASP.NET daha geniş güvenlik sistemini destekliyor örneğin IIS/Windows doğrulama sistemlerinden Basic doğrulama, Digest doğrulama, Integrated Windows doğrulama, Form bazlı doğrulama ve Microsoft Passport doğrulama. ASP.NET içerisinde yeni olarak Windows kullanıcı doğrulama (windows authentication) sistemine ek olarak form bazlı kullanıcı doğrulama (forms-based user authentication) sistemi geliştirilmiştir. bu yeni sistemde çerez yönetimi (cookie management) ve otomatik olarak doğrulanmayan kullanıcıların başka bir web sayfasına gönderilmesi (automatic redirecting of unauthorized logins) gibi güzel özellikler eklenmiştir. İzlemek, Debug, ve Bellekleme Desteği (Tracing, debugging and caching support) ASP sisteminde kodu izlemek ve BUG lari bulmak bir derttir. Fakat ASP.NET içerisinde bu sistem çok daha geliştirilmiş, adım adım debug olayı ve diğer trace ve debug metodlarini desteklemektedir. ASP.NET bunlara ek olarak mükemmel bellekleme (caching API) sağlamaktadır. Verileri bellekleme sistem output caching, data caching, dependent caching ve fragment caching metodlarını destekler. XML Bazlı Konfigürasyon ASP içerisinde ise konfigürasyon bilgileri çok değişik yerlerde saklanıyordu. Örneğin, IIS bilgileri IIS Metabase (registry) de saklanmaktadır. Eğer COM/ COM+ bileşenlerini kullanıyorsanız, COM ve COM+ bileşenlerinin bütün bilgileri registry ve COM+ Catalog da saklanır. ASP.NET konfigürasyonu metin dosyaları ile yapılır. Bu metin dosyaları XML dosyalarıdır. ASP.NET de XML ayrı bir önem kazanmıştır. ASP.NET de çalışan programı kesmeden bu konfigürasyon dosyaları değiştirilebilir. ASP.NET bunu arka planda, kullanıcıdan saklayarak halleder. Yeni bir web isteği geldiğinde ASP.NET worker process (çalışan işlemci) yeni konfigürasyonla isleme devam eder. XCopy Kurulum COM bileşenlerinden farklı olarak .NET bileşenleri Windows registry’e kayıt edilmesine gerek yoktur. Yapmamız gereken tek şey bileşeni derlemek,ASP.NET yazılımının bulunduğu klasörde BIN isimli bir klasöre ekledikten sonra bu derlediğimiz bileşeni kopyalamaktır. Gördüğünüz gibi artık registry ile uğraşmak yok. Bu gerçekten Microsoft’un uzun zamandır yapması gereken bir değişiklik idi. Hosting Seçenekleri ASP bir ISAPI programı olup IIS e bağlıdır.Buna karsın, ASP.NET ise .NET framework üzerinde çalışır, böylece ASP.NET sayfaları bu nedenle IIS dışındaki web serverları tarafından da sunulabilecektir. Çöp Toplayıcısı (Garbage Collector) ASP.NET de yazdığınız kodda bellek yönetimini kendinizin yapmanıza gerek yoktur. .NET Framework bu isi kendisi halleder. Böylece, bellek sorunlarıyla uğraşmamış oluyoruz. <------- Asiprens 'in İmzası------->
Serseriyim sokaklar evim, serseriyim adam gibi severim, bana bir adım gelene ben on adım giderim.Dinle cici kız dinle zannedersinki serseri ağlamaz, serseri bi kayboldumu onu kimse bulamaz, şimdi anlıyorsunya, şehirlerin [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] kızı hiç kimse serseri gibi sevipte aşık olamaz... [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] Fikrimin İnce Gülü |
|||||||||||||||||||||||||
|
|
|
|
|
#3 (permalink) | |||||||||||||||||||||||||
|
ASP.NET Kullanarak Mail Göndermek Eskiden ASP3.0 kullandığımız zamanlarda (gerçi hala kullanılıyor) e-mail göndermek için cdonts, persist gibi mail bileşenleri kullanırdık.Bunların hepsinin kendine göre kullanım biçimleri vardı.Ama artık asp.net te mail göndermek için bu bileşenleri kullanmanıza gerek kalmayacak, çünkü bunlar bize hazır olarak gelmekteler. Asp.Net te e-mail class ı System.Web.Mail namespace i altında bulunur.Bu namesapce imizi inceleyelim. System.Web.Mail --> Namespace MailAttachment --> Class MailMessage --> Class SmtpMail --> Class MailEncoding --> Enumered Values MailFormat --> Enumered Values MailPriority --> Enumered Values Şimdi class larımızı birlikte inceleyelim ve sonra ufak bir örnekle makalemizi bitirelim. MailAttachment : Göndermek isteğimiz mail e dosya eklemek istiyorsak, bu class dan faydalanmamız gerekmektedir.Kullanımı ise şöyledir. Dim sMail As New MailMessage Dim EklenecekDosya As New MailAttachment("C:abc.txt") sMail.Attachments.Add(EklenecekDosya) Yukarıdaki yaptığımız işin özeti ise şudur; Bir tane mail göndermek için sMail diye bir obje yarattık.Daha sonra MailAttachment class ından yararlanarak, göndermek istediğiiz dosyayı belirttik ve daha sonra mail objemizin Attachment Add metodu ile ekledik. MailMessage : Mail göndermek için esas işler burada yapılıyor.Şimdi birlikte bu class ımızı inceleyelim. Mail göndermek istiyorsak, bu class dan fayadalanmamız gerekmektedir. Attachments : Göndermek istediğimiz e-mail e dosya ekleyebiliriz.Ekleme işlemini yukarıdaki gibi yapıyoruz. Bcc : E-mail imizin bir kopyasını belirttiğimiz kişinin adresine gönderiyoruz. BOdy : E-Mail imizin mesajını buraya yazıyoruz. BOdyEncoding : Mesajımızın kodlama tipini burada belirtiyoruz. BOdyFormat : Mailimizin Html mi yoksa düz metinmi olacağını burada belirtiyoruz. CC : E-mail imizin bir kopyasını belirttiğimiz kişinin adresine gönderiyoruz. From : Mailin kimden geldiğini karşı tarafa buraya yazdığımız adres ile belirtiyoruz. Priority : E-Mailimizin öncelik sırasını burada belirtiyoruz. Subject : E-Mail imizin başlığını buraya yazıyoruz. To : E-Mail imizin kime gideceğini buray yazacağımız adres ile belirtiyoruz. Burası ile ilgili örneğimizi en altta yapacağız... SmtpMail : EMail imizi göndermek için mail server ın adresini burada belirtmeliyiz.; SmtpMail.SmtpServer = "mail.server.com" Böylece e-mail imiz bu adresten karşı tarafa ulaşacaktır.Biraz smtp nedemek onu açıklayalım;; Smtp (Simple Mail Transfer Protocol) mail göndermek için kullanılan bir protokoldür.Amacı bilgi transfer etmektir.Bu protokol sayesinde işletim sistemleri farketmeksizin e-mail gönderilip alınabilir.İnternette e-mailler bu protokol kullanılarak gönderilip alınır.Şimdi biz kaldığımız yerden devam edelim. Şimdi class larımızıda açıkladıktan sonra bir örnek yapalım; Imports System.Web.Mail, System.IO Public Class WebForm1 Inherits System.Web.UI.Page #Region " Web Form Designer Generated Code " ’This call is required by the Web Form Designer. <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent() End Sub Protected WithEvents Label1 As System.Web.UI.WebControls.Label Protected WithEvents Label2 As System.Web.UI.WebControls.Label Protected WithEvents Label3 As System.Web.UI.WebControls.Label Protected WithEvents TextBox2 As System.Web.UI.WebControls.TextBox Protected WithEvents TextBox3 As System.Web.UI.WebControls.TextBox Protected WithEvents Label4 As System.Web.UI.WebControls.Label Protected WithEvents DropDownList1 As System.Web.UI.WebControls.DropDownList Protected WithEvents Label5 As System.Web.UI.WebControls.Label Protected WithEvents TextBox1 As System.Web.UI.WebControls.TextBox Protected WithEvents Button1 As System.Web.UI.WebControls.Button Protected WithEvents File1 As System.Web.UI.HtmlControls.HtmlInputFile Protected WithEvents Label6 As System.Web.UI.WebControls.Label Protected WithEvents TextBox4 As System.Web.UI.WebControls.TextBox ’NOTE: The following placeholder declaration is required by the Web Form Designer. ’Do not delete or move it. Private designerPlaceholderDeclaration As System.Object Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init ’CODEGEN: This method call is required by the Web Form Designer ’Do not modify it using the code editor. InitializeComponent() End Sub #End Region Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load ’Put user code to initialize the page here End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim sMail As MailMessage = New MailMessage Dim sFolder As String = Server.MapPath("Files/") Dim sFile As String = Path.GetFileName(File1.PostedFile.FileName) File1.PostedFile.SaveAs(sFolder & sFile) Dim sAttachment As MailAttachment = New MailAttachment(sFolder & sFile) With sMail .To = TextBox1.Text .From = TextBox2.Text .Subject = TextBox3.Text .Attachments.Add(sAttachment) Select Case DropDownList1.SelectedIndex Case 0 .BOdyFormat = MailFormat.Html Case 1 .BOdyFormat = MailFormat.Text End Select .BOdy = TextBox4.Text End With SmtpMail.SmtpServer = "mail.linkmedya.com" SmtpMail.Send(sMail) File.Delete(sFolder & sFile) End Sub End Class Ewet örneğimizi olduğu gibi buraya yapıştırdık.Unutmadan söyleyelim projenin içindeki Files kalsörünün ASP.NET kullanıcısına Tam Denetim vermeyi unutmayın <------- Asiprens 'in İmzası------->
Serseriyim sokaklar evim, serseriyim adam gibi severim, bana bir adım gelene ben on adım giderim.Dinle cici kız dinle zannedersinki serseri ağlamaz, serseri bi kayboldumu onu kimse bulamaz, şimdi anlıyorsunya, şehirlerin [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] kızı hiç kimse serseri gibi sevipte aşık olamaz... [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] Fikrimin İnce Gülü |
|||||||||||||||||||||||||
|
|
|
|
|
#4 (permalink) | |||||||||||||||||||||||||
|
Bu yazidan sonra, bir asp.net web formuna kendi yarattigimiz bir kullanici kontrolunu eklemeyi ogrenmis olacaksiniz. Yaratacagimiz kullanici kontrolu bir menu komponent i olacak. Ekranin en yukarsinda 2-3 tane link bari ndiracak; ve projedeki diger sayfalar surukle birak yontemi ile bu kontrolu kullanacak. Kullanici kontrolu aslinda klasik bir asp.net sayfasidir. Ufa k tefek kurallar disinda, bir asp.net sayfasindan hicbir farki yoktur. Web server kontrolleri gibi sunucu tarafinda cali sirlar, bir kullanici arayuzu sunarlar ve bir takim isleri yaparlar. Bir kullanici kontrolu yaratildiktan sonra ayni web uygulamasinin diger sayfalarinda surukle birak yontemi ile kullanilabilir. Aslinda ben baska cozumde bile kullanmayi basardim ama bu yontemi ilerde anlatirim. Kullanici kontrolleri ( user controls ) .aspx uzantisi yerine .ascx uzantisina sahiptir, ve bir kere yazd iginiz, tasarladiginiz kod parcasini bircok kere kullanmanizi saglar ( copy paste kod yapmiyorsunuz di mi ? bu cok tehlikelidir ). Kullanici kontrolleri ayni web kontrolleri gibi code-behind teknigi kullanarak yaratilabilir, veya bir tex t editor ile yazilabilirler. Derlendikleri icin yuksek performansta cali sirlar, fakat kullanici kontroleri tek baslarina browser istegine yanit vermezler; mutlaka bir baska sayfanin icinde olmalilar. .ascx uzantili bir dosya browserdan cagirilirsa, iis bunu ret ede cektir guvenlik gerekcisi ile. Kullanici kontrollerinde <head>, <body>, <form> html tagleri bulunamaz. Neden ? Cunku bu kontroller baska sayfalara eklenecegi icin; bu tip bir html sayfasinda zaten bulunmasi gereken taglara burada izin verilmez. Bu taglerin kontrolu icinde bari ndiran sayfada olmasi beklenir. Dikkat edilmesi gereken nokta, kullanici kontrolleride bir asp sayfasi oldugu icin, page_load, veya diger tum bari ndirdigi konrollerin eventlerini kontrol eder. Yani hem kullanici kontrolunun page_load eventi vardir; hemde bu kontrolu bari ndiran sayfanin. Kontrolu icinde bari ndiran sayfaya host sayfa denir. Asp.net sayfalarinda @page direktifi ile code-behind sayfasini belirtebiliyoruz; kullanici kontrollerinde ise @page direktigi bulunamaz; bu yuzden bu kontrollerin code-behind sayfasi @control direktifi ile belirtilir. @Control direktifi trace ve aspcompat disinda @Page direktifinin tum ozelliklerini destekler. Web kullanici kontrolleri mutlaka flow layout modunda olur, yani formdaki kontrol elemanlarini enter tusuyla veya space tusu ile konumlandirabilirsiniz. Bu dikkat etmeniz gereken bir noktadir. Neden ? Cunku bu kontrolu daha sonra grid layout tipinde bir forma koyarsaniz; kontrolun yanina koyacaginiz diger elemanlar ust uste gelecektir. Tabii gene en guzeli bir tablo icine koymaktir . Daha oncede bahsettigim gibi kullanici kontrolleri sayesinde bircok kere tekrarlardiginiz bir formu copy paste yapmaktan kurtarmis olacaksiniz; bunun disinda kullanici kontrolunuzu bir dilde yazip baska bir dilde yazilmis diger projenizde kullanabilirsiniz. Klasik asp mantigindaki include dosyalarina benzetebilirsiniz kullanici kontrollerini. Tekrar ozetleyelim : ASP.NET Web Formu ASP.NET Kullanici Kontrolu Uzantisi .aspx Uzantisi .ascx Browserdan direk cagirabilir Browserdan cagiralamaz @Page direktifi @Control direktifi Flow layout veya grid layout Sadece flow layout <html>, <body>,<form> vs bulunabilir <html>,<body>,<form> bulunamaz Ornek cali sma olarak bir yan menuyu kontrol haline getirip, bunu surukle birak yontemi ile diger sayfalarda kullanacagiz, host sayfadan kontrolun bazi ozelliklerini degistirecegiz. Adim adim yapmamiz gerekenler ve video linkleri : Visual Studio 2003 yi baslatin , File/New… seceneginden Blank solution secenegini secin. Direk “New Project” demek yerine bu yontemi sectik cunku, “New Project” ile solution yaratirsak, ilk prorejimizin adi ayni zamanda solution adi olacak ki bu pek istenilen birsey degildir. Solution ismi olarak “slnDemo” ismini girin. Solution explorerda, solution ismine sag klikleyip; Add Project secenegini secin. Project tipi Visual C# projects/ASP.NET Web Form secenegini secin ve projenize “WebSitem” ismini verin. Proje ismine tekrar sag tiklayarak “Add Web User Control” secegini secin. Form ismi olarakta usrMenu.ascx secin. Bu forma ben bir tablo ekledim, buna zorunlu degiliz tabii ki; ama bu kontrolu host ede cek sayfa icin hizalama kolayligi saglar. Eger kontrol sayfasinin html koduna bakarsaniz <html>;<body> gibi taglarin olmadigini; @Page direktifi yerinede @Control direktifi oldugunu goreceksiniz. Tablo icine 2 adet link kontrolu ekleyip bunlari kafaniza gore degistirin. Buraya kadar olan kisim icin kullanici_kontrol1.html (ayri bir pencerede acilir ve 4 mb dir ) dosyasini seyredebilirsiniz. WebForm1.aspx dosyasini acin; ve solution explorerdan; usrMenu.ascx dosyasini surukleyip birakin formun ustune. Su anda formda gri bir dikdortgen kutu goreceksiniz ; sonucu gormek icin webform1.aspx dosyasina sag tiklayip “view in browser” secenegini secin. Bu sayede proje derlenecek ve browser ekraninda sonucu goreceksiniz. Baska bir sayfa daha ekleyin projeye; ve bu sayfayada usrmenu.ascx i surukleyip birakin, ve view in browser secenegi ile menuyu iki sayfada da gorun.. Dikkat ettiyseniz, host sayfadan; kullanici kontrolunun kodunu goremiyorsunuz; degistiremiyorsunuz. Sadece surukle birakla ile kullaniyorsunuz. kullanici_kontrol2.html dosyasini izleyebilirsiniz bu adim icin. Seyrederken birseye dikkat; bir yerde next dugmesine basmaniz gerekiyor Bir kullanici kontrolu yapip, bunu diger sayfalarimizda kullandik; fakat gorduk ki host sayfamizdan; kullanici kontrolunun kodunu degistiremiyoruz. Iyi de ya host sayfasi; kullanici kontrolunu biraz degistirmek isterse; mesela var olan bir linkin adini degistirmek isterse ? Bu durumda kullanici kontrolu hostun erisebilmesi icin property tanimlamalidir. Ornegimizde; diyelimki host sayfalarin ilk link butonunun tex t ozelligini degistirebilmesini istiyoruz. Yap mamiz gereken sey cok basit; usrMenu.asx dosyasini ve code-behind dosyasini acin. Public bir property tanimlamak icin; code-behind dosyasina gidip string tipinde bir degisken tanimlayin. Set ve get fonksiyonlarinda ise; linkin tex t ozellegini degistirin. Ornek kod olarak asagidaki kodu yazabiliriz Public string LinkText{ Get{ return HyperLink1.Text;} Set{ HyperLink1.Text = value; } Yukardaki kod sayesinde bu kontrolu host ede n sayfalar; birinci linkin tex t kismini degistirebilir Iyi ama nasil ? Oncelikle host sayfada; kontrol komponentini temsil ede cek bir degisken tanimlamamiz gerekiyor . Daha sonra page_load eventinde ismi degistiriyoruz. Ismi degistirin ve hem webform1.aspx ; hemde webform2.aspx dosyasina browserdan bakarsaniz; ayni kullanici kontrolu ikisinde de oldugu halde webform1.aspx de degistirdigimiz isim var. Ornek kod soyle bisi olabilir : // once degiskeni ekleyin : protected usrMenu UsrMenu1; ... ... //Daha sonra page_load a sunu ekleyin : UsrMenu1.LinkTest1 = "Deneme yapiyoruz"; Yukardaki kod sayesinde sadece webform1.aspx de 1. linkin tex ti degisecek; ama ayni kontrolu kullanan webform2.aspx de link eskisi gibi kalacak. Bu sayede yarattigimiz kontrolu diger sayfalardada kullandik ama host sayfalarda istedikeri degisiklikleri yapabildi. Bu videoyu izlemek icinde kullanici_kontrol3.html i yukleyin. Peki bu tip kullanici kontrollerini ne tip amaclar icin kullanabilirz ? Ornek olarak burhanmt in web sitesinde gosterdigi gibi bir anket kontrolu hazirlayip diger projelerimizde surukle birakla kullanabiliriz; visual studio.nette macromedia daki templates mantigi olmadigi icin bir nevi onun gorevini ustlendirebiliriz. Volkan Uzun Kaynak : Ceviz.net <------- Asiprens 'in İmzası------->
Serseriyim sokaklar evim, serseriyim adam gibi severim, bana bir adım gelene ben on adım giderim.Dinle cici kız dinle zannedersinki serseri ağlamaz, serseri bi kayboldumu onu kimse bulamaz, şimdi anlıyorsunya, şehirlerin [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] kızı hiç kimse serseri gibi sevipte aşık olamaz... [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] Fikrimin İnce Gülü |
|||||||||||||||||||||||||
|
|
|
![]() |
| Seçenekler | Arama |
| Stil | |
|
|
Benzer Konular
|
||||
| Konu | Konuyu Başlatan | Forum | Cevaplar | Son Mesaj |
| IP Gizleme Hakkında Bilgiler | Code Offending | Püf Noktalar | 4 | 07-20-2008 12:13 PM |
| ModiFiye HaKKında Bazı biLgiLer | |By|_SivasLı | Otomobil & Modifiye Center | 0 | 03-22-2008 08:58 AM |
| Virüsler Hakkında Önemli Bilgiler... | Baymacintosh | Destek Dokümanlar | 3 | 02-12-2008 08:58 PM |
| C++ Temel Bilgiler | Asiprens | C ve C++ | 9 | 02-12-2008 06:33 PM |
| Piramidler hakkında çok şaşırtıcı bilgiler !!!!!! | Baymacintosh | Genel Kültür & İlginç Bilgiler & İlginç Haberler | 1 | 05-29-2007 11:00 PM |
|
|