Arda Çetinkaya Yazılım ve arada kendim ile ilgili karaladıklarım…

Lüzumsuzsa söndürüyoruz ki, sonra daha çok yanmasın…

Earth Hour 2011 Official Video from WWF on Vimeo.

Uzun süredir, yazılım geliştirme konusunda görsel dersler ile yayın hayatına devam eden NedirTV?.com‘un 5.yıldönümü kapsamında bir etkinlik düzenleniyor. Visual Studio’dan, ASP.NET MVC Framework’e, Enterprise Library’den Sharepoint’e oldukça çeşitli bir içeriğe sahip olan bu etkinlikte ben de elimden geldiğince bir katkı yapmaya çalışacağım. 2 Nisan günü gerçekleşecek bu etkinlikte görüşmek üzere. Etkinlik ile ilgili tüm ayrıntıları ve başvuru formunu NedirTV?.com‘dan takip edebilirsiniz…

Geleneksel hale gelen nedirtv?com’un yıldönümü etkinliklerinin beşincisini 2 Nisan 2011 Cumartesi günü saat 11:00 ile 17:00 arasında Microsoft Türkiye İstanbul Ofisinde gerçekleştiriyoruz. Bu önemli etkinlikte siz nedirtv üyelerini de aramızda görmeyi isteriz. Etkinliğe katılmak için 28 Mart Pazartesi günü açılacak olan etkinlik katılım formunu doldurmanız yeterlidir. Etkinlik programı ve diğer bilgiler aşağıda yer almaktadır.

 

 

Program:
11:00 Sharepoint 2010 Yenilikleri
12:00 Visual Studio 2010 ve Application Lifecyle Management
13:00 ASP.NET MVC 3
14:30 Aspect Oriented Programlama
15:30 Enterprise Library 5.0

Konuşmacılar:
Arda ÇETİNKAYA
Bahadır ARSLAN
Burak BATUR
Selçuk YAVUZ
Uğur UMUTLUOÐLU

Etkinlik tarihi: 2 Nisan 2011 Cumartesi

Yer: Microsoft Türkiye İstanbul Ofisi, Bellevue Residence Levent Mahallesi, Aydın Sokak. No:7 Levent İstanbul

Kroki için tıklayın

Seminerlerde birçok süpriz hediyemiz de sizleri bekliyor.

  • 1 kişiye ücretsiz 30 saatlik SharePoint 2010 Administration eğitimi
  • 1 kişiye ücretsiz 18 saatlik ASP.NET MVC eğitimi
  • 3 kişiye %50 indirimli 18 saatlik ASP.NET MVC eğitimi

Ayrıca birçok kişiye kitap, Visual Studio 2010 ve SQL Server 2008 DVD’leri, tişört gibi süpriz hediyeler dağıtılacaktır.

Eğitim hediyelerimiz için sponsor olan TCM’ye ve diğer hediyelerimiz için Microsoft Türkiye’ye teşekkürlerimizi sunarız.

 

Geliştirdiğimiz uygulamaların performanslarına genellikle, uygulamayı geliştirmeyi bitirdikten sonra dikkat ediyoruz ne yazık ki…Geliştirme bittikten sonra müşteri söylenene kadar çok fazla bazı şeylerin farkında olamıyoruz…Performans ile ilgili konuları bilmemekten çok, daha ziyade geliştirme alışkanlığı olduğunu düşünüyorum bunun…En azından kendi çevremde gözlemlediğim durum bu şekilde.

Performans, yazılımın kalitesini etkileyecek bir etken olabiliyor bazen. Belki ilk geliştirme aşamasında değil ama sonradan kalitesini direk belirleyen bir faktör olabiliyor. Bundan dolayı geliştirme aşamasında uygulamamızın performansını nasıl kontrol eder ve gözlemleriz bunu örneklendirmeye çalışacağım. Tabi ki bunu Visual Studio 2010 ile yapıyor olacağız…

Öncelikle çok basit bir konsol uygulaması yapalım. Performansını gözlemleyeceğimiz uygula olarak bu uygulamayı düşünebiliriz.

    public class DummyClass
    {

        public void DoSomething()
        {
            string s = "";

            for (int i = 0; i < 10000; i++)
            {
                s += "Performance test:" + i;
                s += "\r\n";
            }
            Console.WriteLine(s);
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            DummyClass dummy = new DummyClass();
            dummy.DoSomething();

            Console.ReadLine();

        }
    }

Fark etmiş olduğunuz üzere çok komplike bir yapı yok…10.000 kere çalışan bir döngü içerisinde bir string değişkenine değer atıyoruz…Şimdi bu yazdığımız kodun performansını gözlemleyelim. Bunun için Visual Studio’nun Analyze menüsünden Launch Performance Wizard… seçeneğini seçmemiz gerekte.

Devam…

Malum son zamanlarda nükleer enerji yine konuşulur oldu…Doğanın büyük tokatını yiyen Japonya’daki nükleer tesislerden dolayı…Zaten bir şey olmasaydı konuşulacağı yoktu ya…Neyse…Aslında nükleer enerjiye  karşı bir insan değilim…Ama insanoğlunun daha atomların parçalanmasına hazır olduğunu düşünmüyorum…Doğanın hele hiç…Bir ara üşenmezsem bende yazacağım bu nükleotik kaos ile ilgili bir şeyler…Çok biliyorum ya ondan…Neyse akşam akşam şu videoyu izleyin de uykunuz kaçsın…

Hatırlayacak olursanız son bir kaç yazıdır AOP hakkında bir şeyler paylaşıyordum. İlk iki yazı teorik, son yazı ise biraz daha uygulamaya yönelik olmuştu. Bu yazıda ise, bir önceki yazıda başlamış olduğum örneği biraz daha geliştirip, AOP’ı daha iyi anlamaya çalışacağız. Ama isterseniz önceki yazıları bir hatırlayalım…

  1. ‘Aspect Oriented’ programlama mı…Nedir ki?
  2. Peki ama neden ‘Aspect Oriented’ programlama…
  3. ‘Aspect Oriented’ programlamaya başlıyoruz…Bölüm I

Bu yazıda bir önceki kod alt yapısını üzerinden giderek, AOP kavramında ki Aspect’leri yaratıyor olacağız. Özellikle “Aspect” şeklinde belirtmek istiyorum ki, yarattığımız bazı örnek sınıfları bu şekilde düşünmeye çalışmak, konunun bütününü anlamak adına yardımcı olacaktır. Hatırlarsanız bir önceki yazıda Person diye bir sınıf oluşturmuştuk örnek olarak ve bu sınıfı bir tane konsol uygulamasında kullanarak methodlarını çağırmadan önce nasıl araya girebileceğimize değinmiştim. Yine aynı sınıf üzerinden, onu biraz daha geliştirerek gidiyor olacağız. Bunun için sınıfımızı aşağıdaki gibi yenilememiz yeterli olacaktır şimdilik. Yeni bir özellik ve metod dışında aslında fazla bir şey de yok.

    [Controller]
    public class Person : ContextBoundObject
    {
        private int _age = 0;
        private string _name = "";

        public string Name { get { return _name; } }

        public Person(string name) : base() { _name = name; }

        public int Age
        {

            get
            {
                return _age;
            }
            set
            {
                _age = value;
            }
        }

        public string DoSomething()
        {

            string logMessage = "Person sınıfının DoSomething() methodu çalıştı";
            Console.WriteLine(logMessage);

            return "";
        }
        public void DoAnotherThing(int parameter1, string parameter2)
        {
            Console.WriteLine("Person sınıfının DoAnotherThing() methodu çalıştı");
        }

    }

AOP, yazılımda ki kesişen ilgileri ayırmak için kullanabileceğimiz bir yöntemdi demiştik. Bu ilgiler her yazılım ürününde bir şekilde olan Logging,Exception Handling gibi kavramlar olabileceği gibi, iş kuralları ve bu kuralların işletildiği methodlar da olabilir. Ama genellikle bir biri ile çakışan ilgiler Logging,Exception Handling, Security gibi kavramlar için daha karmaşık olur. Oluşan Exception için uygun kaydı tutmak, ya da bir metod çalıştığında bu metodun çalışmasına dair bazı bilgileri kayıt altına alabilmek bir çok kavramın iç içe girmesine sebep olur. Bu yazıda bu ilgilere biraz daha yer vererek, bu ilgileri AOP yaklaşımı ile nasıl ayırabileceğimizi anlamaya çalışacağız. Örnek olabilecek bir kaç ilgiyi oluşturup, bunu Person sınıfımızda kullanacağız. Bu ilgileri .NET Framework’ünde bulunan Attribute‘lar ile yaratıp, nesnelerimize,metodlarımıza ve nesnelerin özelliklerine bağlayacağız. Aşağıdaki gibi bir kaç nesne, örnek olması adına yeterli olacaktır diye düşünüyorum.

Devam…