arşiv

0, 2017 için arşiv

C# Caller Information

Cuma, 26 May 2017 yorum yok
namespace CallerInfo
{
    public class CallerInfoExample
    {
        public void Log(String logMessage, [CallerMemberName] string callerName="", 
                                           [CallerLineNumber] int lineNumber=0, 
                                           [CallerFilePath] string filePath="")
        {
            Console.WriteLine("Çağrıldığı Dosya=" + filePath);   
            Console.WriteLine("Çağıran Metod="+callerName);
            Console.WriteLine("Çağrıldığı Satır Numarası=" + lineNumber); 
        }        
    }
}

namespace CallerInfo
{
    class Test
    {
        static void Main()
        {
            CallerInfoExample callerInfo = new CallerInfoExample();
            callerInfo.Log("Caller Info Test");
        }
    }
}

 

Categories: C# Tags:

Export To Excell Helper

Cuma, 26 May 2017 yorum yok
public static void GridExportToExcel(string fileName, object dataTable)
{
    var grid = new GridView();
    grid.DataSource = dataTable;
    grid.DataBind();

    HttpContext.Current.Response.ClearContent();
    HttpContext.Current.Response.AddHeader("content-disposition", string.Format("attachment; filename={0}-{1}.xls", fileName, DateTime.Now.ToShortDateString().Replace(".", "")));
    HttpContext.Current.Response.ContentType = "application/ms-excel";
    HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.Unicode;
    HttpContext.Current.Response.BinaryWrite(System.Text.Encoding.Unicode.GetPreamble());

    StringWriter sw = new StringWriter();
    HtmlTextWriter htw = new HtmlTextWriter(sw);
    grid.RenderControl(htw);

    HttpContext.Current.Response.Write(sw.ToString());
    HttpContext.Current.Response.End();
}

 

Categories: Genel Tags:

REST Apilerde Dönülen HTTP Status Kodları (Yaygın Kullanılanlar)

Salı, 09 May 2017 yorum yok

200 OK: Genelde veri listeleme sonuçları 200 ile dönüş yapılır.
201 CREATED: Veri eklendiği zaman verinin kendisi ile 201 dönülüyor.
204 NO CONTENT: Veri silindiği zaman 204 dönülüyor. 
400 BAD REQUEST: Genel olarak kayıt ekleme ya da güncelleme isteklerinde gönderilen veri validasyondan geçemediyse neden geçemediği hakkında bilgiyle beraber 400 http statusuyla dönülür.
403 Forbidden: Yetkiye dayalı bir işlem yapılıyorsa bu api uç noktasında işlem yapmaya çalışan kişinin bu işlemi yapmaya yetkisi yoksa 403 status kodu döndürülür.
401 Unauthorized: Api ucunuzda bu işlemi yapmak için login olmak zorunlu ise ve apiye istek yapan kullanıcı login değil ise bu http status ile cevap verilir. Örneğin kullanıcının kendi bilgilerinin güncellemesi denilebilir. 
404 Not Found: Bu http status  kullanıcının istek yaptığı url yok ise ya da url deki veri geçersiz ise bu hatayı alırız. örneğin şöyle bir url miz olsun /api/v1/account/bahattincinic sondaki bölüm kullanıcı adı. Buraya sistemimizde olmayan bir kullanıcı girersek 404 alırız.
405 Method Not Allowed: Bu http status u istek yapılan api uç noktası gönderilen methodu implemente etmemiş ise bu http status unu alırız. Örneğin login olması için token verdiğimiz bir api ucumuz var ve bu uçta sadece post isteğini kabul ediyor. Kullanıcı bu api urline GET isteği yaparsa bu hatayı alır.
429 Too Many Requests: Bu http statusunu saatlik ya da dakikaklık kısıtlanan sınırdan fazla istek yaparsak bu http statusunu alırız. Örnek olarak yukarıdaki Twitter örneğini vermiştik.

Bu konuyla alakalı güzel bir site 🙂
http://ruffledcrow.com/2012/03/06/http-status-cats/

HTTP statuslarını gruplayacak olursak;
Bilgilendirme – 1xx
Başarılı İşlem – 2xx
Yönlendirmek – 3xx
Kullanıcı Taraflı hata – 4xx
Server Taraflı hata – 5xx

şeklinde gruplandırabiliriz. (örneğin 2xx: 2 ile başlayan http statusları)

Kaynak: http://bahattincinic.com/post/89047254349/kim-korkar-rest-den

Categories: WebApi Tags: ,

Mapper kütüphaneleri Performans Testi

Pazartesi, 08 May 2017 yorum yok

Aşağıdaki yazının sonuç kısmını paylaşmak istedim.

4 Farklı renklere ayrılma sebebi 1,10,100 ve 1000 kayıt üzerinde yapılan işlemler sonucunda hangi Mapper türünün ne kadar sürdüğünü ayırtedebilmek için. 4 farklı değerdeki parametre sonucunda mapper türlerinin performans testi sıralamasının bozulmadığını görüyoruz. En performanslı çalışan yöntem Linq Select metodudur. Fakat her dto nesnesi için oluşacak mappingleri kendiniz manuel yapacağınız için bu mapping türünü gözardı edebiliriz bu işi Source, Target eşleşmesi yardımıyla otomatik yapan diğer 4 Mapper kütüphanesine bakacak olursak TinyMapper’in Linq’dan sonra en performanlı Mapper yöntemi olduğu görüyoruz. TinyMapper’i AutoMapper ve Onuda ExpressMapper takip ediyor. Kendi yöntemimiz olan Reflector ile mapper yerlerde sürünüyor smiley Ona hiç bakmaya gerek yok.

Yazıya göre en başarılı olan http://tinymapper.net/ gözüküyor.

http://www.muratoner.net/csharp/mapper-kutuphaneleri-performans-testi

Categories: C# Tags: