• Anasayfa
  • Hakkımızda
  • Etkinlikler
  • Destek Verin
  • Site Haritası
  • Giriş Yap
  • Üye Ol
  • Facebook
  • Twitter
  • RSS
Yazılım Dilleri
  • Soru - Cevap
  • EĞİTİM SETİ
  • KATEGORİ
  • DUYURU
  • TEKNOLOJİ HABERLERİ

Son Sorular

  • 23.04.2016 00:55:33C programlama 2 oyun
  • 20.04.2016 16:34:41Local Database
  • 15.04.2016 14:26:15Fatura kayıt işlemi
  • 21.03.2016 01:55:30C# problem

Popüler Sorular

  • 27.05.2012 05:49:50Asp.Net ile Date time alana veri ekleyemiiyorum ?
  • 2.04.2012 00:45:18.exe uzantılı dosya için dijital imza nerde nasıl alınır.
  • 12.05.2012 08:44:49Acil Yardım
  • 27.05.2012 13:46:51veri tabanı bağlantısı
  • .Net Framework
  • 8085 Assembly
  • Active Directory
  • ADO.NET
  • Android
  • Apple IOS
  • Arduino
  • ASP.NET
  • ASP.NET MVC
  • Blackberry
  • C#.Net
  • C++
  • CCG Framework
  • CISCO
  • CSS
  • Diğer
  • Dreamweaver
  • Entity Framework
  • Exchange Server
  • Gömülü Sistemler
  • GSM Programlama
  • Güncel
  • Güvenlik
  • HTML5
  • Java
  • Javascript / JQuery
  • Jira
  • Kariyer ve İş Yaşamı
  • LINQ
  • LibreOffice
  • Linux
  • Matlab
  • Microsoft Dynamics CRM
  • Mobil Uygulama Geliştirme
  • MySQL
  • NoSQL
  • Oracle
  • OWIN
  • PFSense
  • PHP
  • Powershell
  • Python
  • Sanallastirma
  • SAP-ABAP
  • SCOM 2012
  • SEO
  • Sharepoint 2010
  • Sharepoint 2013
  • Silverlight
  • Sistem Analiz ve Tasarımı
  • SQL Server
  • Symantec
  • TFS
  • T-SQL
  • Ubuntu
  • VB.NET
  • Veritabanı Yönetim Sistemleri
  • Visual Studio
  • VMware
  • WCF
  • Web Hosting
  • Windows 8
  • Windows Azure
  • Windows Phone 7.1
  • Windows Phone 8
  • Windows Server
  • Wordpress
  • WPF
  • Xamarin
  • XNA
  • Yazılım Mühendisliği
  • Yöneylem Araştırması
  • ASP.NET MVC
  • Entity Framework
  • Javascript / JQuery
  • LINQ
  • PHP

Son Duyurular

IPhone 6 ve IPhone 6 Plus Teknik Özellikleri ve Fiyatı

IPhone 6 ve IPhone 6 Plus Teknik Özellikleri ve Fiyatı

DELL'in Yeni Projesi: USB Bilgisayar (Project Ophelia)

DELL'in Yeni Projesi: USB Bilgisayar (Project Ophelia)

Windows Phone Youtube Uygulaması Google ve Microsoft ile Yeniden Yapılıyor

Windows Phone Youtube Uygulaması Google ve Microsoft ile Yeniden Yapılıyor

Android ve Apple IOS Telefonlar için Blackberry Messenger (BBM)

Android ve Apple IOS Telefonlar için Blackberry Messenger (BBM)

Nokia Lumia 925 Teknik Özellikleri, Lumia 928 ve 920 ile Karşılaştırması

Nokia Lumia 925 Teknik Özellikleri, Lumia 928 ve 920 ile Karşılaştırması

LG Optimus G Pro Özellikleri ve Gözle Video Oynatma Teknolojisi

LG Optimus G Pro Özellikleri ve Gözle Video Oynatma Teknolojisi

WorldBank, OData ve ASP.Net Web API HttpClient Kullanımı

WorldBank, OData ve ASP.Net Web API HttpClient Kullanımı

23.08.2012

Yazar: Burak Selim Şenyurt (Google+)

Kategori: ASP.NET

3202

 Merhaba Arkadaşlar,

1999 yılında girdiğim yüksek lisans(MBA-Master of Business Administrator)programını tamamlarken, bitirme projemde“Türkiye’ nin Dünya Bankası borçlanmalarını” ele almaya çalışmıştım. Haliyle o dönemlerde ve geçmişte, ülkemizin Worldbank üzerinden yaptığı borçlanmalara ait istatistiki bilgilere oldukça fazla ihtiyacım vardı. O kütüphane bu kütüphane gezmek dışında, dünya bankası internet sitesinden yayınlanan istatistik bazlı raporları da değerlendirmeye alıyordum. Yaklaşık olarak 60 sayfalık bir döküman oluşturmayı başarmıştım. Sunumumu yaptım, vardığım sonuçları değerli hocalarım ile paylaştımWink

Zaman hızla geçti tabi ki. Bir baktım Microsoft .Net teknolojileri ile uğraşıyor ve yazılım geliştirici olarak kariyerimi devam ettiriyorum. Zaman hızla geçiyordu geçmesine ancak ondan daha hızlı hareket etmek isteyen de bir teknoloji vardı ortada. .Net Framework platformunun gelişmesine ayak uydurabilmek gerçekten zorlaşıyordu. Ama tabi hepimiz için ortaya kullanışlı ve vizyonumuzu geliştiren ürünler çıkarttıkları da bir gerçekti.

Bugüne baktığımızda pek çok dünya firmasının dışarıya açık kaynaklı veri sunarken(özellike OData-Open Data Protocol formatında), Microsoft’ un da bu veri sunumlarını etkin bir şekilde ele almamız için getirdiği yeniliklerini görmekteyiz. Şöyle bir kaç sene geriye gidelim dilerseniz Wink

Microsoft önce servis odaklı yaklaşımını değiştirerek Windows Communication Foundationaltyapısını duyurdu. Hemen ardından WCF hızla gelişti ve pek çok Microsoft ürününün servis uç noktalarında yerini almaya başladı. Derken WCF’ e Web programlama modeli(Web Programming Model) için destekler eklendi. Artık REST(Representational State Transefer) odaklı servisleri yayınlamak ve hatta kullanmak mümkün hale gelmeye başladı. Çok basit anlamda HTTPprotokolünün GET,POST,PUT,DELETE gibi metodlarına göre hizmet verebilen ve bu nedenle bir proxy ihtiyacını ortadan kaldırıp platform bağımsızlığı getiren servis yayınlama modeline destek söz konusu idi. Söz konusu model daha da geliştirildi. Özellikle Code Plex tarafında WCF Rest Service API’ si duyuruldu ve programlama modeli Astoria kod adlı WCF Data Service’ lerinde çekirdek yapı taşı haline geldi.

Söz konusu web programlama modeli odaklı WCF servisleri o kadar popüler olmaya başladı ki, onuAsp.Net MVC gibi data-centric uygulamalarda daha sık görmeye başladık. Hal böyle olunca WCFtakımı, WCF Web API isimli bir kütüphaneyi kullanıma sundu. Şu an geldiğimiz noktada ise bu yapı isim değiştirerek(ASP.NET Web API) doğrudan ASP.NET MVC 4.0 Beta sürümüne entegre edildi. Artık .Net Framework 4.5 sürümünde ASP.NET Web API gömülü olarak gelecek ve 2012sonundan itibaren WCF Web API’ ye olan destek kalkacak.

İster WCF Web API olsun, ister gündemimize yeni yeni giren ASP.NET Web API olsun, birbirlerinden ayrıldıkarı yönler olduğu kadar, ortak noktalarıda bulunmakta. Örneğin, OData, XML, JSON gibi çıktı üretimleri sunan REST servislerinin daha kolay kullanımı için geliştirilmiş olanHttpClient tipi Wink

Şimdi buraya kadar yazdıklarımızı bir toparlayalım. Dünya bankası artık verilerini OData formatında olacak şekilde dış dünyaya sunmakta. Bu anlamda Developer’ lar için bir web sayfaları bile bulunuyor(Developer’ lar için kaynak http://data.worldbank.org/node/209) Bu sayfada söz konusuWorldbank Data API’ sinin nasıl kullanılacağı ve hatta URL bazlı sorguların nasıl gönderileceği anlatılmakta. Eee, elimizde bu servisin verisini kullanabilmek için ASP.NET Web API ile de gelenHttpClient tipi var. Daha ne bekliyoruz öyleyse Wink Gelin bir kaç dünya bankası verisini .Netkodlarımız ile sorgulayalım.

Önce örnek bir kaç sorguyu tarayıcı uygulama üzerinden göndermeye çalışalım. Örneğinilk 50 ülkenin bilgilerini çekelim. Bunun için aşağıdaki sorguyu kullanmamız yeterli olacaktır.

http://api.worldbank.org/countries

işte sonuç,

worldb_8

Görüldüğü üzere XML tabanlı olarak ilk 50 ülkenin bilgilerine ulaşmış durumdayız. page, per_pagegibi nitelikleri de sorgulara parametre olarak katarak sayfalar arasında gezinebiliriz de (Örneğin 2nci sayfaya gitmeyi ve her sayfada 25 ülke göstermeyi bir deneyin Wink )

Tabi istersek bu sorguyu JSON(JavaScript Object Notation) formatında da ele alabiliriz.

http://api.worldbank.org/countries?format=json

Bu durumda daha küçük boyutlu bir içeriğe ulaşmış oluruz.

worldb_7

Teori gördüğünüz gibi oldukça basit. HTTP Get metoduna göre gönderdiğimiz sorgular sonucundaXML veya JSON formatında içeriklere ulaşabiliyoruz. Peki bunu kod tarafında nasıl kullanabiliriz?

Bu amaçla örnek bir Solution üzerinden hareket edeceğiz. Solution içerisinde temel sorgu fonksiyonellikleri ile POCO(Plain Old CLR Object) tiplerini barındıran bir kütüphane ile bunu kullanan bir Windows Forms uygulaması olması yeterli olacaktır. Sınıf kütüphanesine NuGet aracı ile veya dışarıdan harici olarak ilgili referansları da eklememiz gerekmektedir. Bu referanslar aşağıdaki şekilde görüldüğü gibidir.

worldb_9

WorldbankLib isimli sınıf kütüphanemizin içeriğini aşağıdaki sınıf diagramı(Class Diagram) ve kod parçalarında olduğu gibi geliştirebiliriz.

worldb_1

Country sınıf;

namespace WorldBankLib 
{ 
    /// <summary> 
    /// Ülke bilgilerini taşır 
    /// </summary> 
    public class Country 
    { 
        /// <summary> 
        /// ülkenin adı 
        /// </summary> 
        public string Name { get; set; } 
        /// <summary> 
        /// ülkenin başkenti 
        /// </summary> 
        public string CapitalCity { get; set; } 
        /// <summary> 
        /// Enlem 
        /// </summary> 
        public string Latitude { get; set; } 
        /// <summary> 
        /// Boylam 
        /// </summary> 
        public string Longtitude { get; set; }

        public override string ToString() 
        { 
            return string.Format("{0}\t\t{1}\t\t({2};{3})" 
                , Name 
                , CapitalCity 
                , Latitude 
                , Longtitude 
                ); 
        } 
    } 
}

CountryIncome sınıfı;

namespace WorldBankLib 
{ 
    /// <summary> 
    /// Gelir düzeyi bilgilerini içerir 
    /// </summary> 
    public class CountryIncome 
    { 
        /// <summary> 
        /// Ülkenin adı 
        /// </summary> 
        public string Name { get; set; } 
        /// <summary> 
        /// Gelir düzeyi seviyesi 
        /// </summary> 
        public string IncomeLevel { get; set; } 
        /// <summary> 
        /// Bağlı bulunulan bölge 
        /// </summary> 
        public string Region { get; set; } 
    } 
}

Topic sınıfı;

namespace WorldBankLib 
{ 
    /// <summary> 
    /// Topic bilgilerini verir 
    /// </summary> 
    public class Topic 
    { 
        /// <summary> 
        /// Topiğin adı 
        /// </summary> 
        public string Name { get; set; } 
        /// <summary> 
        /// Kaynak bilgisi(Education gibi) 
        /// </summary> 
        public string Source { get; set; } 
        /// <summary> 
        /// Kaynağa ait bir açıklama bilgisi 
        /// </summary> 
        public string SourceNote { get; set; } 
    } 
}

ve asıl fonksiyonellikleri üstlenen CommonQueries sınıfı;

using System.Collections.Generic; 
using System.Json; 
using System.Net.Http;

namespace WorldBankLib 
{ 
    /// <summary> 
    /// Worldbank OData servisi için genel sorguları içerir 
    /// </summary> 
    public static class CommonQueries 
    { 
        #region Temel sorgularımız

        // İlk 50 ülkenin bilgilerini JSON formatında verir 
        private static string _first50Countries = "http://api.worldbank.org/countries?format=json"; 
        //{0} yerine gelen ülkenin bilgisini JSON formatında verir. Bu bilgi BR gibi ülke kodu şeklindedir 
        private static string _specificCountry = "http://api.worldbank.org/countries/{0}?format=json"; 
        //ilk 50 ülkenin gelir düzeyi durumları JSON formatında verilir 
        private static string _incomeLevels = "http://api.worldbank.org/countries?incomeLevels&format=json"; 
        // {0} yerine(Örneğin Education için 4) gelen konuya ait olacak şekilde bazı topic bilgileri json formatında çekilir. 
        private static string _Topic = "http://api.worldbank.org/topics/{0}/indicators?format=json";

        #endregion

        /// <summary> 
        /// Http Get taleplerini göndermemizde devreye giren yardımcı tipimiz 
        /// </summary> 
        private static HttpClient _client = new HttpClient();

        /// <summary> 
        /// İlk 50 ülkenin ad, başkent, enlem ve boylam bilgilerini bulur 
        /// </summary> 
        /// <returns>ülke listesi döner</returns> 
        public static List<Country> GetFirst50Countries() 
        { 
            List<Country> countries = new List<Country>();

            _client.GetAsync(_first50Countries) 
                .ContinueWith((r) => 
                { 
                    HttpResponseMessage responseMessage = r.Result; 
                    responseMessage.EnsureSuccessStatusCode();

                    responseMessage.Content.ReadAsAsync<JsonArray>(). 
                        ContinueWith((rt) => 
                                        { 
                                            foreach (var country in rt.Result[1]) 
                                            { 
                                                countries.Add( 
                                                    new Country() 
                                                        { 
                                                            Name = country.Value["name"].ToString(), 
                                                            CapitalCity =country.Value["capitalCity"].ToString(), 
                                                            Latitude =country.Value["latitude"].ToString(), 
                                                            Longtitude =country.Value["longitude"].ToString() 
                                                        } 
                                                    ); 
                                            } 
                                        }); 
                }).Wait(); 
            return countries; 
        }

        /// <summary> 
        /// Belirli bir ülkeye ait isim, başkent, enlem ve boylam bilgilerini verir 
        /// </summary> 
        /// <param name="countryCode">Ülke kodu(brazilya için BR gibi)</param> 
        /// <returns>ülke bilgisi</returns> 
        public static Country GetCountry(string countryCode) 
        { 
            Country resultCountry=null;

            _client.GetAsync(string.Format(_specificCountry,countryCode)) 
                .ContinueWith((r) => 
                { 
                    HttpResponseMessage responseMessage = r.Result; 
                    responseMessage.EnsureSuccessStatusCode();

                    responseMessage.Content.ReadAsAsync<JsonArray>(). 
                        ContinueWith((rt) => 
                                         { 
                                             var cntry = rt.Result[1]; 
                                             resultCountry = new Country() 
                                                           { 
                                                               Name = cntry[0]["name"].ToString(), 
                                                               CapitalCity = cntry[0]["capitalCity"].ToString(), 
                                                               Latitude = cntry[0]["latitude"].ToString(), 
                                                               Longtitude = cntry[0]["longitude"].ToString() 
                                                           }; 
                                         }); 
                }).Wait(); 
            return resultCountry; 
        }

        /// <summary> 
        /// İlk 50 ülkenin Gelir düzeyi bilgilerini döndürür 
        /// </summary> 
        /// <returns>Gelir düzeyi bilgileri</returns> 
        public static List<CountryIncome> GetCountryIncomeLevels() 
        { 
            List<CountryIncome> countries = new List<CountryIncome>();

            _client.GetAsync(_incomeLevels) 
                .ContinueWith((r) => 
                { 
                    HttpResponseMessage responseMessage = r.Result; 
                    responseMessage.EnsureSuccessStatusCode();

                    responseMessage.Content.ReadAsAsync<JsonArray>(). 
                        ContinueWith((rt) => 
                        { 
                            foreach (var country in rt.Result[1]) 
                            { 
                                countries.Add( 
                                    new CountryIncome() 
                                    { 
                                        Name = country.Value["name"].ToString(), 
                                        IncomeLevel = country.Value["incomeLevel"]["value"].ToString(), 
                                        Region = country.Value["region"]["value"].ToString() 
                                    } 
                                    ); 
                            } 
                        }); 
                }).Wait(); 
            return countries; 
        }

        /// <summary> 
        /// Topic(Education) bazlı rapor bilgilerini döndürür 
        /// </summary> 
        /// <param name="topicCode">Topic kodu(Education=4 gibi)</param> 
        /// <returns>Topic içeriği</returns> 
        public static List<Topic> GetTopics(string topicCode) 
        { 
            List<Topic> topics = new List<Topic>();

            _client.GetAsync(string.Format(_Topic,topicCode)) 
                .ContinueWith((r) => 
                { 
                    HttpResponseMessage responseMessage = r.Result; 
                    responseMessage.EnsureSuccessStatusCode();

                    responseMessage.Content.ReadAsAsync<JsonArray>(). 
                        ContinueWith((rt) => 
                        { 
                            foreach (var topic in rt.Result[1]) 
                            {

                                topics.Add( 
                                    new Topic() 
                                    { 
                                        Name = topic.Value["name"].ToString(), 
                                        Source = topic.Value["source"]["value"].ToString(), 
                                        SourceNote = topic.Value["sourceNote"].ToString() 
                                    } 
                                    ); 
                            } 
                        }); 
                }).Wait(); 
            return topics; 
        } 
    } 
}

CommonQueries sınıfı içerisinde HttpClient tipinin kullanıldığı çeşitli metodlar söz konusudur. Her metod Worldbank OData servisine doğru bir sorgu göndermekte, gelen içeriği JSONformatında olacak şekilde ele almaktadır.

Çok doğal olarak veri çekme işlemi uzun sürebilir. Bu nedenle HttpClient tipinin GetAsyncmetodundan yararlanılmaktadır. Bu metoda olan çağrı asenkron olarak verinin çekilmesi noktasında devreye girmektedir. Yanlız dikkat edilmesi gereken hususlardan birisi, bu metodları kullanan uygulamaların söz konusu asenkron çalışmaların sonucunu beklemeden sonlanmasını engellemeye çalışmaktır.

Bir Windows Forms uygulaması söz konusu olacağından, client’ ı uyarmak adına Waitmetodundan yararlanılmış ve buradaki metodlardan ancak sonuçlar alındığında çıkılması garanti edilmiştir. Tabi Windows Forms tarafında bu duraksatmaların ekranı dondurması da engellenmeli ve kullanıcının eş zamanlı başka işlemler yapabilmesine de izin verilmelidir. Bunun için Formstarafında BackgroundWorker kontrolünden yararlanıyor olacağız. Örnek Windows Formstasarımımızı ve kod içeriğini aşağıdaki gibi geliştirebiliriz.

worldb_2

ve kod içeriğimiz

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Windows.Forms; 
using WorldBankLib;

namespace WinClientApp 
{ 
    public partial class Form1 : Form 
    { 
        private List<Country> countries = null; 
        private Country brazil = null;

        public Form1() 
        { 
            InitializeComponent(); 
        }

        private void btnGetFirst50Countries_Click(object sender, EventArgs e) 
        { 
            bgwGetFirst50Countries.RunWorkerAsync(); 
        }

        private void bgwGetFirst50Countries_DoWork(object sender, DoWorkEventArgs e) 
        { 
            e.Result = CommonQueries.GetFirst50Countries(); 
        }

        private void bgwGetFirst50Countries_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) 
        { 
            if(!e.Cancelled || e.Error==null) 
                dgvResult.DataSource = (List<Country>)e.Result; 
        }

        private void bgwGetBrazil_DoWork(object sender, DoWorkEventArgs e) 
        { 
            e.Result = CommonQueries.GetCountry("br"); 
        }

        private void bgwGetBrazil_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) 
        { 
            if (!e.Cancelled || e.Error == null) 
            { 
                var country=e.Result as Country; 
                if(country!=null) 
                    MessageBox.Show(country.ToString()); 
            } 
        }

        private void btnGetBrazil_Click(object sender, EventArgs e) 
        { 
            bgwGetBrazil.RunWorkerAsync(); 
        }

        private void btnGetIncomeLevels_Click(object sender, EventArgs e) 
        { 
            bgwGetIncomeLevels.RunWorkerAsync(); 
        }

        private void bgwGetIncomeLevels_DoWork(object sender, DoWorkEventArgs e) 
        { 
            e.Result = CommonQueries.GetCountryIncomeLevels(); 
        }

        private void bgwGetIncomeLevels_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) 
        { 
            if (!e.Cancelled || e.Error == null) 
            { 
                dgvResult.DataSource=(List<CountryIncome>)e.Result; 
            } 
        }

        private void btnGetEducationTopics_Click(object sender, EventArgs e) 
        { 
            bgwGetEducationTopics.RunWorkerAsync(); 
        }

        private void bgwGetEducationTopics_DoWork(object sender, DoWorkEventArgs e) 
        { 
            e.Result = CommonQueries.GetTopics("4"); 
        }

        private void bgwGetEducationTopics_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) 
        { 
            if (!e.Cancelled || e.Error == null) 
            { 
                dgvResult.DataSource = (List<Topic>)e.Result; 
            } 
        } 
    } 
}

Dikkat edileceği üzere test düğmelerine basıldıkça ilgli BackgroundWorker nesne örneği çalıştırılmaktadır. Bu BackgroundWorker tiplerine ait DoWork ve RunWorkerCompleted olay metodlarında ise, çalıştırma ve işlem sonuçlarının ele alınması işlemleri sağlanmaktadır. Örneğimizi test ettiğimizde aşağıdakilere benzer sonuçlar elde ederiz.

İlk 50 ülke bilgisinin çekilmesi;

worldb_3

Brezilyaya ait bilginin çekilmesi sonucu;

worldb_6

Gelir düzeyi bilgilerinin elde edilmesi;

worldb_4 

Eğitim odaklı verilerin elde edilmesi;

worldb_5

Gördüğünüz gibi gayet kolay Wink Tabi örneğimizin pek çok noktasında hata bulunmaktadır. (Biraz acele ile yazdığımdan dolayı) Örneğin Exception Handling mekanizması eksiktir ve hattaDataGridView kontrolü bazı noktalarda index hatası vermektedir. Diğer yandan daha fazla sorgu da işin içerisine katılabilir. Ben kapıyı gösteren kişi olarak yazımı burada sonlandırıyorum Smile ArtıkWorldbank verilerinin ASP.NET Web API(ve tabi WCF Web API) ile gelen HttpClient tipi yardımıyla ve özellikle JSON formatında nasıl ele alabileceğinizi öğrendiniz. Bunun geliştirmek tamamen sizlerin elinde. Tekrardan görüşünceye dek hepinize mutlu günler dilerim.

WorldBank.zip (88,93 kb

Yazar Hakkında

Burak Selim Şenyurt

Burak Selim Şenyurt

buraksenyurt.com

Yıldız Teknik Üniversitesi Matematik Mühendisliği mezunu olan Şenyurt, 1999 yılında profesyonel olarak adım attığı yazılım dünyasında, 2003 yılından beri Microsoft .Net teknolojileri ile ilgilenmektedir. Yazılım hayatına Assist Line isimli Call Center firmasında Delphi programcısı olarak başlayan Şenyurt sonrasında, sırasıyla Bizitek(Junior Developer), Netron(Master Trainer), Citibank(Outsource Senior Software Developer), Innova(Application Development Consultant), ve TCM(Software Architect) firmalarında görev almıştır. Su anda ING Bank bünyesinde Kıdemli Yazılım Danışmanı olarak görev yapmaktadir. 2006, 2007 yıllarında C#, 2008,2009,2010 yıllarında ise Connected System Developer kategorisinde Microsoft MVP seçilen Şenyurt, evli ve 1 çocuk babasıdır. C# diline olan düşkünlüğü, oğluna S(h)arp adının verilmesinde önemli bir etken olmustur.

Sosyal Medya

ORANLAR

  • 3202izleme

Arkadaşlarınla Paylaş

  • Tweet

0 Yorum

Yorum Yaz / Soru Sor

Lütfen yorum yazmak veya soru sormak için üye girişi yapınız.

Son Yorumlar

  • Böyle bir sayfalama ağ trafiğini hafifleti...
  • Merhaba, ellerinize sağlık çok yardımcı ol...
  • Merhaba Bu uygulama örneğinden ASP.net ...
  • Hocam Link başka sayfaya yönlendiriyor.
  • merhaba benim merak ettiğim bir konu var y...

En Güncel Sorular

  • Bilgilendirme maili (C#.Net)
  • Power Pivot (Sharepoint 2010)
  • BigInteger, BigDecimal (Asp.Net ve Asp.Net MVC)
  • visual C# ile asp nette veritabanı islemleri (Asp.Net ve Asp.Net MVC)
  • Share Point ile Dosya Arşiv Yönetim Sistemi yapılabilir mi ? (Sharepoint 2010)

En Son Cevap Verilen Sorular

  • Bilgilendirme maili
  • BigInteger, BigDecimal
  • visual C# ile asp nette veritabanı islemleri
  • Share Point ile Dosya Arşiv Yönetim Sistemi yapılabilir mi ?
  • txt dosyasına veri yazma

Twitter

Takip et: @yazilim_dilleri

En Çok Okunanlar

Elif BAYRAKDAR

C# ile SQL Server Bağlantısı, Insert, Update ve Delete Sorguları

23.05.2013

  • 122492
  • 0
Hakan Keskin

C# ile Windows Service Projesi Oluşturma, Debug Etme ve Setup Hazırlama

17.12.2013

  • 68937
  • 0
batuhan avlayan

Php - Mail Gönderme (İletişim Formu)

02.09.2013

  • 50330
  • 0

Sponsorlar

KODLAB
Pluralsight
Exchange server is
Office 365
YAZILIM DİLLERİ
Yukarı Çık
  • Hakkımızda
  • Facebook
  • Twitter
  • RSS

© Yazılım Dillerinin Buluşma Noktası | Kaynak belirtildiği sürece makaleler kopyalanabilir.
YazilimDilleri.Net sitesinde yer alan kullanıcıların oluşturduğu tüm içeriklerin yayınlanması ile ilgili yasal yükümlülükler içeriği oluşturan kullanıcıya aittir, YazilimDilleri.Net hiçbir şekilde sorumlu değildir.

Kapat

Giriş Yap

Kullanıcı Adı

Şifre

Şifremi Unuttum

KULLANICI GİRİŞİ