Express Mapper (Hafif,Hızlı ve Kullanımı Kolay)
Bu makalemde sizlere Express Mapper’ı anlatmaya çalışacağım.Bilirsiniz ki piyasada bir çok map’leme tool ları bulunmakta. Bunlardan’da en çok kullanılanı AutoMapper. AutoMapper performans olarak gerçekten zayıftır. Bunun üzerine bir ar-ge yaparak ExpressMapper’ın performans olarak manuel map’lemeye çok yakın olduğunu gördüm ve sizlerle paylaşmak istedim. Ben direk olarak örnekleme ile anlatıma giricem ve sonucunda sizinle performans grafiğini paylaşmış olucam.
Manage NuGet Packages den Expressmapper yazarak Install ediyoruz.
Category isimli sınıfımızı ekledik.
Product isimli sınıfımızı ekledik ve içerisinde Category sınıfını barındırıyor.
Front – End tarafında verilerimizin sadece bir kaçını istiyoruz. Bu yüzden Yeni bir sınıf ekledik ve product sınıfımızı bu sınıfımız ile map leyeceğiz.
Map leme method umuz. Product tipinde değer gönderdiğimde ikisi sınıftada Name property si olduğu için kendisi değerleri set edicek. CategoryName ve TotalPrice değerlerini ise biz set etmiş olucaz.
Uygulamamızı çalıştırdığımızda MapRegistration methodumuz çalıştı ve map leme register edildi. Sonrasında manuel olarak bir Product datası oluşturuldu. Ardından ProductViewModel e map leme yapan GetProduct methodumuzu çağırdık.
Map lenmeden önceki datamız.
Map’lenmeden önceki datamız.
Map’leme yapıldı iki sınıftada aynı olan propertyler otomatik set edildi.Customize ettğimiz propertyler’de istediğimiz gibi set edildi.
Mapleme tool’larının performans olarak grafiksel görüntüleri aşağıdaki gibidir.Manuel maplemeye çok yakın bir performans göstermektedir. GitHub ‘dan açık kaynak olarak ulaşabilirsiniz.
DOWNLOAD PROJECT
Hasan Akpürüm4/21/2016 1:56:13 AM
Merhaba Umut bey, Yardımcı olabilmem için hata aldığınız kodu paylaşırmısınız ?
Umut4/3/2016 4:34:17 PM
Selamlar, bende AutoMapper kullanıyorum projelerimde daha performanslı bir mapleme toolu ararken sizin bloğunuzu okudum. Bilgileriniz için teşekkür ederim. Bir şey soracağım peki ExpressMapper Dictionary map yaparken hata veriyor. Bu konuda bir fikriniz var mı?