IronPython ASP.NET Entegrasyonu

Pazar, 26 Ekim 2008 01:02 by ikivanc
Daha önceki yazılarımdan da hatırlayabileceğiniz gibi Ironpython'ın pek çok kullanım alanı vardı. Bunlardan Asp.Net entegrasyonunu inceleyeceğiz.
 
Öncelikle http://www.asp.net/downloads/futures/default.aspx adresinden siteye erişerek Asp.net'in eklenebilir özellikleri hakkında buradan bilgi alabilirsiniz.
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.

Tags:   ,
Categories:   Asp.Net | IronPython
Actions:   E-mail | del.icio.us | Permalink | Yorumlar (0) | Comment RSSRSS comment feed

Yorum ekle


 

  Country flag

biuquote
  • Yorum
  • Canlı önizleme
Loading