Daha önceki yazılarımdan da hatırlayabileceğiniz gibi Ironpython'ın pek çok kullanım alanı vardı. Bunlardan Asp.Net entegrasyonunu inceleyeceğiz.
buradan da Asp.net'te IronPython entegresyonu için gerekli olan eklentiyi indirebilirsiniz.
IronPython'ı Asp.net ile kullanmak çok büyük avantajlar elde etmemizi sağlayacak. Bunlardan en önemlisi zaman/performans. Özellikle küçük scriptler için atayacağımız eventları kısa python kodları ile daha hızlı bir şekilde hazırlayabileceğiz.
Solution Explorerde projelerimizde neler var onları inceleyelim şimdi de
IRONPYTHON C#
IronPython projemiz açıldıktan sonra proje klasörümüzde "bin" klasörü "default.aspx" sayfamız "Global.py" dosyamız ve "Web.config" dosyalarımız otomatik olarak oluşturulmakta
"bin" Klasörü
Web uygulumamazın IronPython ile sorunsuzca çalışması için geresinim duyduğu dll kütüphaneleri bulunmakta ve sunucudan bunlardan faydalanarak Asp.net uygulamasını göstermeye yardımcı olur.
Default.aspx
Asp.Net web uygulamamızın anasayfasını oluşturur. Code-Behind şekilde çalıştığı için arka plandaki kodlar Default.aspx.py dosyasında bulunur.
Global.py
Web Uygulamamızın bazı durumlarda sergileyeceği tavırları belirler. İçerisinde aşağıdaki durumlar tanımlıdır.
def Application_Start(): #Uygulama başladığında çalışan kod
' Code that runs on application startup'
pass
def Application_End(): #Uygulama sonlandırıldığında çalışan kod
' Code that runs on application shutdown'
pass
def Application_Error(app, e): #hata oluştuğunda çalışan kod
' Code that runs when an unhandled error occurs'
pass
def Application_BeginRequest(app, e): #istem yapıldığında çalışan kod
' Code that runs at the beginning of each request'
pass
def Application_EndRequest(app, e): #istem sonlandığında çalışan kod
' Code that runs at the end of each request'
pass
web.config
Asp.Net Sayfalarında bulunan ve web uygulamamıza ait tüm özelliklerin ve ayarların bulunduğu sistem dosyasıdır.
C# Asp.Net projesi ile aralarındaki farklar neler?
C# projesinde bulunamayan bin klasörü ve global.py dosyası bulunmakta. DLL. kütüphaneleri ve global.py 'da uygulama kodlarının bulunması dikkat çekiyor
Genellikle yapılır IronPython - C# kod karşılaştırmaları ve C#'ın süslü parantezleri her biri birer satıra yazılarak aralarındaki satır farkından/ kod uzunluğundan bahsedilir fakat benim buradaki örnekleri yazmamda temel amaç kodlar arasındaki farkı görmeniz ve C#'ı bildiğinizi farz edip bu sayede python dilinin yapısını kavramanızı kolaylaştırmak.
Şimdi de basit birer örnekle başlayalım:
Sayfamızda bir label ve bir buttonumuz var ve sayfa yüklenirken buttonun text'i "tikla" diye değişiyor sayfanın başlığı da hangi dilde ise onun deneme başlığını atıyor ve button'a da tıklandığında label'ın text'i "tiklandi" diye değişiyor.
C#
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
Button1.Text = "Tikla";
this.Page.Title = "C# Deneme";
}
protected void Button1_Click(object sender, EventArgs e)
{
Label1.Text = "Tiklandi";
}
}
IronPython
def Page_Load(sender, e):
Button1.Text = 'Tikla'
Page.Title = 'IronPython Deneme'
def Button1_Click(sender, e):
Label1.Text = 'Tiklandi'
Ayrıca IronPython projesinde kodlarda standart kütüphaneleri import etmeye gerek kalmıyor. C#ta hepsini tek tek yazmamız gerekiyor. IronPythonla uğraştıkça daha çok seveceksiniz kod yazmayı. Bu yazımızda Visual Studio 2008'e IronPython nasıl entegre edilir onu gördük ve C# asp.net projesi ile aralarındaki farklar nelerdir onlardan bahsettik. Sormak istediğiniz ve düzeltmek istediğiniz yerleri ibrahim.kivanc@msakademik.net mail adresine iletebilirsiniz.