MESUT ÇAKIR | İş Çözümleri

C# ile Web Api Get-POST ve JSON Array Sending Ve Postman Google Plugin

 Merhaba Arkadaşlar Web Api Üzerine Json objeleri Javascript, Jquery ile gönderirken sorun yaşamıyoruz fakat C# ile bu tarz bir iş yaparken ufak tefek sorunlar çıkabiliyor. "RestSharp" denen bir libary keşfettim. Nuget aracılığı ile projeme dahil ettim. JSON.stringfy yerine "Newtonsoft.Json.JsonConvert.SerializeObject" ekledim. nuget aracılığı ile onuda eklemeniz gerekmektedir.  

Bu RestSharp en güzel yanı POSTMAN denen chrome extention ile ortak çalışabilmesi, kodlarının otomatik üretilmesi ayrı bir olay. Aşağıdaki resimde çağrıyı hazırlıyoruz ve Generate Code diyerek bu ekrana ulaşıyoruz. Sonrası zaten kodu sisteme dahil etme işi oluyor.

using System;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using System.Collections.Generic;
using RestSharp; 

[TestClass]
    public class SyncController_Test
    {
        [TestMethod]
        public void SyncController_Test_Get()
        {
            var url = "http://localhost:38405/api/Sync/GetJsonObject";
            var client = new RestClient(url);
            var request = new RestRequest(Method.GET); 
            IRestResponse response = client.Execute(request);
            Console.WriteLine(response.Content);
        }

        [TestMethod]
        public void SyncController_Test_Post()
        {
            var client = new RestClient("http://localhost:38405/api/Sync/UploadMaterialSeriLot?id=1");
            var request = new RestRequest(Method.POST);
            request.AddHeader("accept", "application/json");
            request.AddHeader("content-type", "application/json");
            var jsonObject = Newtonsoft.Json.JsonConvert.SerializeObject(new{ Name="Test",SurName="Test"});           
            request.AddParameter("application/json", jsonObject, ParameterType.RequestBody);
            IRestResponse response = client.Execute(request);
            Console.WriteLine(response.Content);
        }
    }

 

iTextSharp Image Kaybolma, Sayfaya Sığmama !

PDF dosyama eklemiş olduğum html içerisinde bulunan <img /> için boyut kontrollerinin sağlanıp sayfa boyutunu aşma koşuluna göre yeniden boyutlandırılmasının sağlanması için gerekli Provider aşağıdaki gibidir. Eksikleri olabilir ama şuanlık iş görür durumdadır. Tam bir örnek için file aşağıdaki linkte verilmiştir. Kod parçacığı ise hızlıca ulaşım için aşağıda yer almaktadır.

PdfTestControllerFile.cs (11,25 kb)

    public class CustomImageProvider : AbstractImageProvider
    {
        public override string GetImageRootPath()
        {
            return ToString();
        }

        public override Image Retrieve(string src)
        {
            if (src.StartsWith("data:image/", StringComparison.InvariantCultureIgnoreCase))
            {
                var base64Data = src.Substring(src.IndexOf(",", StringComparison.Ordinal) + 1);
                var imagedata = Convert.FromBase64String(base64Data);
                var image = Image.GetInstance(imagedata);
                image.Alignment = Element.ALIGN_CENTER;
                return image;
            }
            else if (!src.Contains("http"))
            {
                var imageT = System.Drawing.Image.FromFile(HttpContext.Current.Server.MapPath(src));
              
                var pic = Image.GetInstance(imageT, BaseColor.WHITE);
                if (pic.Height > pic.Width)
                {
                    //Maximum height is 800 pixels.
                    float percentage = 0.0f;
                    percentage = 700 / pic.Height;
                    pic.ScalePercent(percentage * 100);
                }
                else
                {
                    //Maximum width is 600 pixels.
                    float percentage = 0.0f;
                    percentage = 540 / pic.Width;
                    pic.ScalePercent(percentage * 100);
                }

                //pic.Border = iTextSharp.text.Rectangle.BOX;
                //pic.BorderColor = iTextSharp.text.BaseColor.BLACK;
                //pic.BorderWidth = 3f;
                return pic;
            }
            return base.Retrieve(src);
        }
    }

 

Front End Developer Tarifini Beğendiğim Bir Güzel Yazı Mutlaka Okumalısınız...

Front-end Web Developer, CSS Developer, Front-end JavaScript Developer, Front-end Software Developer, Front-end JavaScript Application Developer, Web/Front-end user Interface Developer, Mobile/Tablet Front-end Developer, Front-end SEO Expert, Front-end Accessibility Expert, Front-end Testing/QA

Yukarıda yazdığım terimler ile ilgili açıklayıcı bir yazı olmuş, güzel bir harita olabilir diye düşündüm. Çünkü buradaki deneyim paylaşımları çok önemli detaylar içermektedir.

Bu yazı için Metin Yılmaz'a teşekkür ederim.


ASP.NET Web Sitenizin Hızı Yavaş Mı ?

Web sitenizin hızını arttırabilmek için yapabileceğimiz çok şey ama basitçe aklıma gelenleri hızlıca yazıp uzatmadan kapatcam konuyu.

  1. JS, Css dosyalarınızı sıkıştırın ve tek dosya halinde getirin. Örnek 30 adet js ve css dosyanız var. Bunları 15 js, 15 css düşünün. Sunucunuza ayrı ayrı 30 çağrı atılmasındansa tek dosya olacak şekilde ScriptFiles.js ve StyleFiles.css olarak iki çağrı atacaktır. Dosya boyutlarınız büyüyecektir fakat bu sorunuda StaticFile Caching ile çözebilirsiniz. Bu konu ile ilgili araştırma yapacağınız anahtar kelime grupları şöyle; Bundle And Minification ayrıca bu link içerisinde anlatılanları eksiksiz yapın derin çok faydalı oluyor. Ayrıca Javascript dosyalarınızı kesinlikle body'nin sonuna koyun head içerisinde olduğunda sayfa açılma beklemesini etkiyor.
  2. Server Gücü, İnternet Hızı ve Server Region Seçimi; Bu konuda da Amazon Web Server(AWS) kullandığımız için en ucuz server olan OREGON Serverlarını tercih ettim fakat Türkiye'deki bir sunucu 1 kb dosyayı 10-30ms civarında getirebilirken ABD(Oregon) sunucusu 230ms ve üzerinde cevap veriyordu. 
  3. Web Sitenizi klasik mantıktan kurtarın en azından Yönetim Paneli için söyleyebileceklerim şu yönde;
    Her sayfa açılışında en az 1-2 MB scriptiniz ve yönetim panelini kullanan kişiler size küfür ediyorlar :) Çok yavaş diye. Burada çözüm ilk açılışta Scriptler yüklendikten sonra sayfa geçişlerini Ajax ile Bir div içerisinde gerçekleştiriyor olmak. bu bize ne kadar diye düşünelim. 
    2 MB Script, 400kb Style, Sayfanın normal açılma hızı 500ms olsun. 1mbps internet hızı olan birisi server iyi durumdaysa bunu 3-5 saniyede indirebilecek ve düşünün kü bir rapor sayfası Sayfa açılma hızı 2-3 saniye üzerine çıkmaya başladıkça üzerinde birde 3-5 saniye binecek. Eğer dediğim şekilde bir yöntem tercih edersiniz. sayfa geçiş hızınız 500ms olacak. 5 saniye yerine... Konu ile ilgili AngularJS Routing veya SammyJS önerebilirim. Bence performans için ve maliyetleri düşürmek için önemli büyük bir bandwith bu sayede ortadan kalkıyor.
Bu konu ile ilgili aklıma gelenler şimdilik bu kadar sorularınız olursa müsait olduğum zamanlar yazarım onlarıda...