Posts Tagged With 'C#'

  • Dec
  • 07
  • 2011

Nedirtv.com Aralık ayı webinerleri…

Tags: , , | View: 198 | Comments:

Kasım ayı ile uzun sessizliğini bozan Nedirtv.com etkinlik serisi, Aralık ayında daha fazla konu ile devam ediyor. Aralık ayının kesinleşen programı aşağıdaki gibi…İlgilendiğiniz konuları kaçırmayın derim…

Konu: Entity Framework ile Gerçek Hayat Örnekleri-1
Tarih: 12 Aralık 2011 Pazartesi – 21:00
Link: https://www.livemeeting.com/cc/mvp/join?id=Z3THGT&role=attend
Konuşmacı: Burak Selim ŞENYURT

Konu: Entity Framework ile Gerçek Hayat Örnekleri-2
Tarih: 13 Aralık 2011 Salı – 21:00
Link: https://www.livemeeting.com/cc/mvp/join?id=8FPTD6&role=attend
Konuşmacı: Burak Selim ŞENYURT

Konu: CRM 2011 Programlama Teknikleri
Tarih: 19 Aralık 2011 Pazartesi – 21:00
Link: https://www.livemeeting.com/cc/mvp/join?id=9N5553&role=attend
Konuşmacı: Barış KANLICA

Konu: Cambaz Debugger – C# Uygulamalarında Hata Ayıklama
Tarih: 24 Aralık 2011 Cumartesi – 21:00
Link: https://www.livemeeting.com/cc/mvp/join?id=SP7FZ9&role=attend&pw=5%2BK7Hd5cW
Konuşmacı: Fatih BOY

Konu: C#’ın Geleceğine Bir Bakış
Tarih: 26 Aralık 2011 Pazartesi – 21:00
Link: https://www.livemeeting.com/cc/mvp/join?id=NJD5T2&role=attend&pw=3%229Z%3CTp%2CW
Konuşmacı: Fatih BOY

  • Oct
  • 28
  • 2011

MEF 2.0 Preview 4 yayınlandı…

Tags: , , | View: 172 | Comments:

MEF’in(Managed Extensibility Framework) geliştirmesi devam eden 2.0 sürümünün Preview 4′ü yayınlandı. Diğer Preview’lara nazaran büyük yenilikler içeren bu yeni sürümü, MEF ile ciddi anlamda uğraşan kişilere tavsiye ederim. İndirmek için bu adrese gitmeniz yeterli.

Kısaca benim neler en çok hoşuma gitti onlardan bahsetmek isterim, belki daha cazip gelir bu haber bu sayede (:

Benim en çok hoşuma giden yenilik MEF Part’larını belirtmek için kullandığımız attribute’ları yeni gelen RegistrationBuilder ile sayesinde farklı bir şekilde belirtebiliyor olmamız. Mesela belli bir sınıfta belirtilen Part’larımızdan türüyen export edilecek diğer sınıflarımız için [Export] attribute’unu tanımlamak gerekmekteydi. Hem kendini tekrarlayan bir yapı oluşmasıns sebep olan hem de bazen unutulabilen ve  runtime’da fark edilebilen bir durum oluyordu. Yeni gelen RegistrationBuilder ile aşağıdaki gibi Export edilecek Part’larımı daha kolay ve anlaşılır bir şekilde tanımlayabiliyoruz.

 //ForTypesDerivedFrom() metodu ile BaseModule gibi kendi sınıfımızdan
 //türümiş tüm objelerin export edilebileceğini söylüyoruz.
 var builder = new RegistrationBuilder();
 builder.ForTypesDerivedFrom().Export();

//MEF kataloglarına da RegistrationBuilder objemizi verebiliyoruz
 var catalog = new AssemblyCatalog(System.Reflection.Assembly.GetExecutingAssembly(), builder);
 

Generic olan sınıfları artık Export edebiliyoruz. Yani IGenericType<T> gibi bir arayüzümüz olduğunda ve bundan türeyen sınıflarımızı Export etmek istediğimiz de [Export(IGenericType<>)] şeklinde attribute’u güncellemek yeterli olacak.

Ayrıca Exception mesajlarında ki iyileştirmeler de Run-time’da alınan hataları biraz daha açıklayıcı hala getiriyor. Bu da hata tespiti için çok can kurtaracak.

Bu arada MEF 2.0 versiyonu, .NET Framework 4.5′ün içinde de geliyor olacak. Ama tabi ondan önce çıkar mı bilemiyorum…Çıkarsa ne ala…Neyse şimdilik bu kadar…

 

 

 

 

  • Oct
  • 24
  • 2011

IObserver ve IObservable ile biri bizi gözetliyor…

Tags: , , | View: 317 | Comments:

Çok uzun bir ara vermiştim fark etmiş olduğunuz üzere…Ama şimdi kaldığım yerden devam ediyor ve fazla uzatmadan hemen bu yazının konusuna geliyorum… .NET Framework 4.0 ile gelen iki yeni arayüzü kısaca anlatmaya çalışacağım.

IObservable<T> ve IObserver<T> yeni gelen arayüzlerimizden…Bu arayüzler “push-based notifications” diye literatürde yer alan sistemler oluşturmamız için faydalanabileceğimiz arayüzler. “push-based notifications” nedir ile başlasak sanırım daha kolay olacak bazı şeyler. Artık bir çok kişinin kullandığı sosyal paylaşım sitelerinden örnekler verebiliriz daha iyi anlamak için. Facebook’da örneğin, sayfa ile her hangi bir etkileşim olmadan zaman zaman sağdan soldan “1 tane mesajınız var”, “X kişisi Y’nin fotoğrafını beğendi” gibi bildirimler alıyoruz. Bu tarz bildirimlere “push-based notifications” diyoruz. Türkçeleştirmek için kasamadım açıkcası ama basitçe bir nesnenin, kendisine bağlanan ya da üye olan parçalara bildirimler göndererek, kendinde olan değişimleri bildirmesi olarak açıklayabiliriz. Gözlemci ve gözlenen olarak düşünürsek biraz daha netleşebilir sanırım. Bütün bu kavramlar aslında mevcut event yaklaşımı ile üstü kapalı olarak bize sunulmakta tüm yazılım geliştirme dillerinde. Ayrıca “Observer” tasarım kalıbı şeklinde de literatürde yerini uzun süredir korumakta.

  • Oct
  • 19
  • 2011

Microsoft “Roslyn” CTP’si sonunda çıktı…

Tags: , , | View: 287 | Comments:

Uzun süredir beklediğim Roslyn’nin CTP versiyonu bügun itibari ile çıkmış bulunmakta…Peki nedir bu Roslyn diyecek olursanız, kısaca açıklamaya çalışim. Hangi platform olursa olsun compiler’lar kara kutudur genellikle…İçerisinde neler oluyor, neler bitiyor uygulama geliştiriciler tarafından hiç bilinmez. Roslyn ile bu biraz değişiyor işte. Rosyln sayesinde compiler’ların çalışma şekillerini kontrol edebileceğiz. Roslyn’nin sunduğu API’ler ile belki kendi managed programlama dilimizi bile yazabileceğiz. Kodu daha iyi analiz edebilecek yöntemler üretebileceğiz. Bütün bunların amacı aslında Microsoft’un ‘compiler as a service’(CaaS) yaklaşımından ortaya çıkıyor aslında…Önümüzdeki günlerde blog’u tekrardan canlandıracak konular ile Roslyn’e daha fazla değineceğim…

CTP versiyonu bu adresten indirebilirsiniz…

  • Mar
  • 23
  • 2011

Visual Studio 2010 ve performans analizi…

Tags: , | View: 772 | Comments:

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.

  • Mar
  • 22
  • 2011

‘Aspect Oriented’ programlamaya başlıyoruz…Bölüm II

Tags: , , | View: 444 | Comments:

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.

  • Jan
  • 03
  • 2011

Bakmakta fayda var VOL. III

Tags: , , , | View: 332 | Comments:

Bildiğiniz üzere, yazılım ile ilgili Türkçe kaynak bulmak bazen zor olabiliyor…Hele ki şu son zamanlarda sağlam kaynak üreten kişilerin azalması işi daha da zorlaştırıyor…Neyse bu konuya girmeden, “Bakmakta fayda var” serisinin 3.sü ile, cidden bakmanızda faydası olacağını düşündüğüm bir kaç yazıyı paylaşıyorum…Buyrun buradan yakın…

  • Nov
  • 29
  • 2010

Bakmakta fayda var VOL. II

Tags: , , , | View: 444 | Comments:

Daha önce “Bakmakta fayda var” yazısı ile başlamaya niyet ettiğim link paylaşımlarının yenisi ile bu niyetimi biraz daha ciddileştirmiş oluyorum… .Net teknolojileri ile haşır neşir olanlara bir kaç güzel Türkçe kaynak…Mutlaka takip edin, okuyun derim…

  • May
  • 15
  • 2010

Asp.Net MVC Framework’de MEF ile Controller eklentileri…

Tags: , , , | View: 1,000 | Comments:

Yine bir MEF yazısı…Bu sefer MEF’in kullanım alanlarını inceleyerek MEF’in gerçekten faydalı olabileceğini biraz daha net bir şekilde kavramaya çalışacağız. Bir önceki yazımda, Asp.Net MVC Framework’de “Controller” kavramını basitçe özetleyerek kendi çapımda anlatmaya çalışmıştım. Ne kadar faydalı oldu bilemeyeceğim ama bu sefer de, Asp.Net MVC Framework’de MEF’i nasıl uygulayabiliriz bunu anlatmaya çalışacağım.

Başlıyoruz…

Asp.Net MVC uygulaması olarak, Visual Studio’da proje olarak gelen Asp.Net MVC projesini kullanıyor olacağız. Baştan bir MVC uygulaması yazmaya şimdi gerek yok, hazır yazılmışı olduğunu farz ederek bu proje şimdilik işimizi görecektir.

Aşağıdaki gibi bir proje yapımız olduğuna göre, tam olarak ne yapacağız buna geçelim. Amacımız MEF’in esnekliğini kullanarak Asp.Net MVC uygulamamızı esnetmek. Yani takıp çıkarabileceğimiz, bir birinden bağımsız bileşenler ile uygulamamıza genişletebilir bir yapı yapmak. Bu noktada takıp çıkarabileceğimiz bileşenler derken bunların “Controller”lar olduğunu belirtmekte fayda var sanırım.

“Controller”ların takıp çıkarılması olayını biraz daha açıp, “Controller”ların ayrı *.dll’ler şeklinde Asp.Net MVC uygulamamıza entegre olabilen bileşenler demek sanırım daha açık olacaktır.

Önce “Controller”ımızı yapalım…

Takıp çıkarılabilen bir “Controller” için Visual Studio’da yeni bir “Class Library” projesi yapmamız gerekmekte. Bu projenin çıktısı bizim MVC uygulamamıza dışardan ekleyebileceğimiz “Controller”ımız olacak. Projemizin aşağıdaki gibi bir yapısı olması gerekmekte. (Not: Poll ismini bu örnekte anket yaptığımızı farz ederek koydum)

Index.asp’miz View tarafımız *.cs dosyamız ise “Controller”ımız olacak. Aşağıdaki kod örneği de şimdilik yeterli olacaktır.

using System.Text;
using System.Web.Mvc;
using System.ComponentModel.Composition;
using Common;

namespace Plugins.Poll
{
    [Export("MVCController",typeof(IController))]
    [PluginMetadata("Poll", "1.0", "Arda")]
    [PartCreationPolicy(CreationPolicy.NonShared)]
    public class Poll : Controller
    {
        public ActionResult Index()
        {
            return View("~/Plugins/Views/Poll/Index.aspx");
        }
    }

}
  • May
  • 06
  • 2010

Bakmakta fayda var…

Tags: , , , , | View: 610 | Comments:

Her ne kadar yazılım ile uğraşan bizlerin az biraz ingilizcesi olsa da, bazen türkçe kaynak okuyor olmak, bazı şeyleri daha iyi anlamaya yardımcı olabiliyor. Ne yazık ki bu noktada da biraz kıtlık çekiyoruz…Bu kıtlık ortamında beğendiğim ve paylaşmak istediğim bazı yazıları paylaşmak istedim. Bir kuplesini aşağıda bulabilirsiniz. Boş zamanlarınızda mutlaka göz atmanınızı öneririm.

Zaman zaman bu tarz link paylaşımlarında bulunuyor olacağım. Tabi her zaman teknik konular içeren linkler de olmayacak (: