ASP.NET (Etkin Sunucu Sayfaları .NET (Active Server Pages .NET)), Microsoft tarafından geliştirilen bir uygulama geliştirme teknolojisidir. Dinamik Web sayfaları, Web uygulamaları, XML tabanlı Web hizmetleri ve mobil uygulamalar için kolay, güvenli ve büyütülebilir sunucu taraflı (server side) yazılım geliştirme imkanı sağlayan bir teknolojidir. Yine, Microsoft tarafından geliştirilen .Net çatısı (.Net framework) tarafından desteklenen tüm programlama dilleri, ASP.NET uygulamaları geliştirmek için kullanılabilir. ASP.NET uygulamaları .NET'in en önemli bileşenlerinden biri olan Ortak Dil Çalışma Zamanı (Common Language Runtime) altyapısına dayalı olarak çalışır. CLR, .NET dilleri ile yazılmış olan program kodlarını yöneten ve ortak bir dile çevrilmesini sağlayan sanal bir katmandır.
CSharp (C#) ve VB.NET dilleri Ortak Dil Çalışma Zamanı tarafından yönetilen dillerin en çok kullanılanlarıdır. Özellikle C# tam anlamıyla nesne yönelimli olarak doğan ve çağımızın programlama yaklaşımı olan nesne yönelimli programlamayı destekleyen güçlü ve verimli bir dildir. Bunun yanı sıra ASP.NET uygulaması geliştirirken COBOL, APL, PASCAL, EIFFEL, ML, PERL, PYTHON, SCHEME, SMALTALK gibi diller de kullanılabilir.
ASP.NET'i, ASP'nin devamı şeklinde değil de yeni bir teknoloji olarak düşünmek mümkündür. Çünkü yepyeni bir mantıkla hazırlanmış, .NET'in sağladığı hemen hemen tüm özellikleri kullanabilen ve ASP'ye oranla büyük değişiklikler içeren yeni bir platformdur. ASP'nin işleyiş şekli, html sayfalarının dinamik olarak yüklenen kısımlarının aralarına asp kodu eklemektir. Uygulama, bazı editörler yardımı ile <% %> işaretleri arasındaki kısımların sunucu tarafında çalışan kodlar olduğunu anlar ve html kodlarından ayırt eder. Ancak zamanla projeler büyüdükçe ve çalışan sayısı arttıkça, içiçe geçmiş sunucu ve istemci kodlarını anlamak ve yazmak zorlaştığı için ASP.NET'e ihtiyaç duyuldu ve Microsoft, ASP.NET teknolojisini oluşturdu.
ASP.NET Versiyonları ile Gelen Yenilikler
Zamanla duyulan ihtiyaçlara paralel olarak, Microsoft firması tarafından ASP.NET geliştirilmeye devam edildi ve değişen özelliklere bağlı olarak ASP.NET 'in yeni versiyonları türetildi. Aşağıda ilk sürüm olan ASP.NET 1.0 ve diğer sürümlerle birlikte gelen yenilikler belirtilmiştir:
ASP.NET 1.0 ile Gelen Yenilikler
- Büyük projelerde çalışan programcı veya tasarımcılar ASP.NET sayesinde tamamen birbirlerinden bağımsız ve kendi geliştirdikleri kodlar üzerinde çalışabilirler. Kimse bir diğerinin yaptığı iş nedeniyle engellenmez.
- İçeriğin, program kodundan ayrılması Arka Planda Kod İçeren Sayfalar (Code Behind Programming) ile uygulama geliştiriciler kendilerine en uygun geliştirme aracını ve programlama dilini kullanabilirler. Görsel içeriği hazırlayan ekip de istediği tasarım programı veya editörü kullanarak sayfalar üzerinde değişiklikler yapabilir. Bu konuda aşağıdaki uygulamalı anlatım incelenebilir.
- .Net çatısı altındaki bütün dilleri kullanabilmesi önemli bir çeşitlilik sağlar. VBscript diline olan ihtiyaç ASP.NET ile iyice azalmıştır.
- Nesne yönelimli özellikler taşıyan kontroller programcıya daha hızlı ve kolay kod yazmada yardımcı olur. Bu kontrollerin bir kısmı, html kontrollerinin ASP.NET için yeniden yapılandırılmış halidir.
- Kullanıcı hakları seviyelendirmesi ve yönetimi ASP'ye oranla daha az kodla otomatik olarak yapılabilir.
- Birden fazla sunucu üzerinde çalışması gereken yüksek ölçekli projeler için ASP.NET, dağınık Web uygulama modelini çok daha iyi bir şekilde destekler.
- Microsoft testlerine göre ASP.Net projeleri, ASP ile hazırlanmış projelere oranla 2-3 kat daha hızlı çalışır.
- ASP.NET, projeleri çalışma zamanı (run time) kontrolleriyle sınar. Bu sayede programcı, kod yazarken eş zamanlı olarak hatalara karşı uyarılır.
- ASP.NET güncellemelerin daha kolay yapılmasına olanak sağlar. Güncelleme yapmak için yeni düzenlenen dosyanın sunucuya yüklenmesi (upload) yeterli olacaktır.
- ASP Web sunucusuna gelen istekleri kullanıcıya yollamadan önce bir dll (dinamik bağlantı kütüphanesi(dynamic link library)) kullanarak yorum (interpret) yollar. ASP.NET'te ise kodlar ilk çalıştığında derlenir ve sonra gelen her istek için bu derlenmiş dosya kullanıcıya yollanır. Eğer derlenmiş sayfanın kodunda bir değişiklik yapılırsa .NET tarafından bu algılanıp sayfa güncellenecektir, derlenmiş kod daha hızlı çalışacaktır.
- ASP.NET ile ASP tam olarak uyumlu olmamakla birlikte aynı sunucuda ASP ve ASP.NET dosyaları birlikte çalışabilir.
ASP.NET 1.1 ile Gelen Yenilikler
- Mobil kontroller (Mobile controls) çeşitli mobile araçlarla mobil Web uygulamaları geliştirebilmeyi sağlamıştır.
- Otomatik giriş onaylaması (Automatic input validation) ile yanlış veya eksik girilen veriye karşı koruma sağlanmıştır.
ASP.NET 2.0 ile Gelen Yenilikler
- ASP.NET ile gelen en büyük yeniliklerden biri olan Sağlayıcı (Provider) model, sunucu ile veri kaynağı arasında belirli fonksiyonları sağlayan modüldür. Kodları veri kaynağından bağımsız kılan bu model, veri kaynaklarının esnek ve geliştirilebilir bir yapıya kavuşmasını sağlar.
- GridView, FormView, DetailsView gibi programcı için büyük kolaylıklar sağlayan yeni kontroller eklendi.
- SqlDataSource, ObjectDataSource, XmlDataSource kontrolleriyle veri tabanı bağlantısında yeni teknikler getirmiştir.
- Ana sayfa (Master Page) özelliği, uygulanan sayfaların nasıl göründüğünü belirleyen bir şablondur. ContentPlaceHolder bileşeni ile de Master Page uygulanan sayfaların içeriğini belirlemek mümkündür.
- Bir aspx sayfasında yer alan form verilerini başka sayfalara gönderme özelliği sağlanmıştır (Çapraz Sayfa Atanması (Cross-Page Posting)).
- Login (Bağlantı) sayfası oluşturmak için kullanılan LoginView kontrolü sayesinde, Web sayfası kullanıcılarına sayfaya bağlanmaya çalıştığında bir takım mesajlar gösterilebilmektedir.
- WebPart adı verilen özellik istenirse kolay bir şekilde kişiselleştirilebilir (personalizable) web kontrolleri yazabilme olanağı sağlar.
- Temalar (Themes) özelliği ile Web sayfalarının renk, font gibi görsel öğelerinin çeşitli seviyelerde uygulanması sağlanabilmektedir. Makine seviyesinde, Web uygulaması seviyesinde, sayfa seviyesinde, sunucu kontrolü seviyesinde temalar uygulanabilmektedir.
ASP.NET 3.5 ile Gelen Yenilikler
- ListView, DataPager gibi programcı için büyük kolaylıklar sağlayan yeni kontroller eklendi.
- Yeni LinqDataSource kontrolü sayesinde LINQ özelliğini destekler.
Arka Planda Kod İçeren Sayfalar (Code Behind Programming)
ASP'de program kodlarıyla html kodları aynı sayfada yer alır (satıriçi kodu (inline code)). Sayfalara yeni özellikler eklemek veya hataları düzeltmek programcı için zor olabilir ve bu durum karışıklığa yol açabilir. ASP.NET ile Web uygulamaları bu yöntemle yazılabileceği gibi "code behind" yöntemi olarak geçen arka plandaki kodların kullanılması da mümkündür. Bu yöntem tasarım ile kodlamayı birbirinden ayırır ve böylelikle daha hızlı Web uygulamaları geliştirmenin yanında kodun bakımında ve yeni versiyonlarını üretmede de daha hızlı ve etkin çözümler üretilmesine olanak sağlar. Bu tarz Web programlamaya arka planda kod içerme (code behind programming) adı verilir.
Bu yöntemin iki şekilde kullanımı mevcuttur:
- Program kodu üretilen sayfa aspx.cs sayfası iken html kodlarının tutulduğu sayfa aspx uzantılıdır. aspx.cs sayfasına aspx sayfasından referans verilir ve kod çalışma anında MSIL (Microsoft Ara Dili(Microsoft Intermediate Language))'de derlenir.
- Program kodu dll olarak derlenir ve aspx sayfasında direk olarak derlenen dll'e referans verilir.
Aşağıda basit bir uygulama yer almaktadır. İlk olarak oluşturulan sayfa, html kodlarının ve ASP.NET kontrollerinden TextBox, Label ve Button kontrollerinin yer aldığı aspx uzantılı sayfadır:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="CodeBehind.aspx.cs" Inherits="CodeBehind" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Uygulama Sayfası</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:TextBox ID="TextBox" runat="server"></asp:TextBox>
<asp:Label ID="Label" runat="server" Text="" ></asp:Label><br />
<asp:Button ID="Button" runat="server" Text="Button" onclick="Button_Click" />
</div>
</form>
</body>
</html>
CodeFile="CodeBehind.aspx.cs" denilerek aspx.cs sayfasına referans verilmiş olur.
Diğer sayfa da program kodlarının yer aldığı aspx.cs sayfasıdır:
using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
public partial class CodeBehind : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button_Click(object sender, EventArgs e)
{
Label.Text = "Merhaba" + " " + TextBox.Text;
}
}
Proje çalıştırıldığında ilk olarak aşağıdaki gibi bir sayfa açılır:
TextBox'ın içi doldurulup Button'a basıldığında ise dinamik olarak aşağıdaki sayfa gelir: