Herkese merhaba. Bu yazıda gerçek zamanlı uygulama geliştirmek için kullanılan kütüphanelerden birisi olan SignalR kütüphanesini inceleyeceğiz. Gerçek zamanlı web, mobil uygulamaları artık günlük hayatımızın büyük bir kısmını oluşturmakta. Bu yüzden gerçek zamanlı uygulamaların teknoloji sektöründeki popülerliği hala devam ediyor. Anlık mesajlaşma, döviz takip, maç sonucu takip uygulamaları ve oyunlar gibi pek çok farklı sektörde kullanılan bu mekanizma aslında WebSocket ve RPC teknolojisine dayanmaktadır. Bu nedenle öncelikle WebSocket ve RPC yapılarına ardından da SignalR konusuna geçiş yapalım.
Herkese merhaba. Bu yazıda yazılım dünyasında oldukça sık kullanılan terimlerden biri olan Design Patterns (Tasarım Kalıpları) konusunu inceleyeceğiz. Design pattern’lar genellikle yazılım geliştirme sürecinde sıkça karşılaştığımız sorunlara karşı geliştirilen çözümlerdir. Pattern’ler kodun okunabilirliğini arttırır ve tekrar tekrar kullanılabilir olmasını sağlar. Pattern kavramı ilk olarak Cristopher Alexander’ın “A Pattern Language: Towns, Buildings, Construction” kitabında tanımlanmıştır. Kitap içerisinde kentsel çevreyi tasarlamak için kullanılan bir “dil” anlatılmaktadır. Kullanılan bu dilin birimlerini ise pattern’ler oluşturur. Bir binanın penceresinin yüksekliği, kaç kata sahip olması gerektiği gibi birim kurallar pattern’ler ile açıklanmaktadır. Daha sonra 1994’te Gang of Four (GoF) olarak bilinen 4 arkadaşın “Design Patterns – Elements of Reusable Object-Oriented Software” kitabı ile yazılım dünyası da pattern’ler ile tanışır.
Herkese merhaba. Bu yazıda kullanıcı etkileşimli programlama yaparken oldukça sık karşımıza çıkan delegate ve event konularını inceleyeceğiz. Bu ders için hazırladığım örnekleri Windows Forms projesi ile hazırladım. Daha öncesinde LINQ kullandıysanız Where() ya da Select() gibi metotların içerisine yazdığımız lambda expressionların da delegate yapısını kullandığını görmüşsünüzdür. İlerleyen yazılarda o konulara da değineceğiz. Daha fazla kafa karıştırmadan konuyu incelemeye başlayalım. Yazıda bulunan örneklere github hesabımdan ulaşabilirsiniz.
Herkese merhaba. Bu yazıda pek çok gelişmiş programlama dilinde bulunan bir konuyu, generic tipler konusunu ele alacağız. C# içerisinde kullanabileceğimiz tiplerin üzerine kendi oluşturduğumuz tipleri ekleyebileceğimizi nesne yönelimli programlamada görmüştük. Kendi oluşturduğuğumuz farklı tipleri ortak bir metot için kullanmak istiyorsak, metot parametresine object tipi verebiliriz. Bu yöntem kısa vadede sorunlarımızı çözüyor gibi görünse de uzun vadede bazı sıkıntılara yol açıyor. Yazıda bulunan örneklere github hesabımdan ulaşabilirsiniz.
Herkese merhaba. Bir önceki yazımda değer ve referans tipleri anlatmıştım. Bu yazıda da static class yapısını inceleyeceğiz. C# içerisinde nesne yönelimli programlamada static class’ları kullanarak daha fonksiyonel bir programlama yapabiliriz. Genellikle tek bir tane üretmek istediğimiz nesnelerde static yapısını tercih ederiz. Örneklere github hesabımdan ulaşabilirsiniz.
Herkese merhaba. C# üzerinde bool, integer, string gibi pek çok değişken türü sayabiliriz. Bu değişken türleri aslında değer (value) ya da referans (reference) tip dediğimiz veri tiplerinden türerler. Değer ve referans tipler bellekte farklı bölgelerde tutulmaktadır. .NET Framework bellek yönetimini önemli ölçüde kendisi yapar. Biz de tanımladığımız değişkenin hangi bölgede yer almasını istiyorsak bellek yönetimini belli ölçülerde kendimiz ayarlamış oluruz. C# üzerindeki bellek bölgelerini inceleyerek konumuza giriş yapalım. Örneklere github hesabımdan ulaşabilirsiniz.
Herkese merhaba. Bir önceki yazımda abstraction konusunu detaylı bir şekilde anlatmıştım. Bu yazıda, abstract class ve interface arasındaki farkları inceleyeceğiz. İki yöntem de kullanım açısından açısından benzer olsa da aralarında bazı farklılıklar bulunmaktadır. İki yöntemi de ayrı ayrı başlıklar altında inceleyelim. Örneklere github hesabımdan ulaşabilirsiniz.
Herkese merhaba. Nesne yönelimli programlamanın son konusu olan soyutlama (abstraction) konusunu inceleyeceğiz. Soyutlama projedeki karmaşıklığı azaltmayı sağlar. Birden fazla sınıfa kalıtım verecek olan en temel nesneler soyutlama yöntemiyle oluştulur. Üretimde kullanılmayacak ama diğer tasarımların kalıtım aldığı bir temel kurulur. Ancak kendisi somut olarak proje içerisinde yer almaz. Örneklere github reposundan ulaşabilirsiniz.
Herkese merhaba. Nesne yönelimli programlamanın ana başlıklarından biri olan polymorphism konusunu inceleyeceğiz. Bazen içeride farklı işlemler yapılsa bile aynı sonucu döndüren metotlara ihtiyacımız olur. Aynı kodu tekrar tekrar yazmak bir süre sonra projenin inanılmaz boyutlara ulaşmasına neden olur. Nesne yönelimli programa metodolojisinde de bu sorunu çözmek için çok biçimlilikten faydalanırız. Çok biçimlilik, temelde aynı tür olan metotların farklı davranması gerektiğinde kullanıldığımız bir yöntemdir. Örneklere github reposundan ulaşabilirsiniz.
Herkese merhaba. Bu yazımda biraz daha teorik bir konu ile ilgili bildiklerimi sizlere aktarmaya çalışacağım. Son dönemlerde özellikle büyük uygulamalar içerisinde sıkça duyduğumuz Mikroservis mimarisi nedir, karakteristik özellikleri nelerdir bunları inceleyeceğiz. Bu yazımı oluştururken özellikle Martin Fowler‘ın yazısından faydalandım, sizin de incelemenizi tavsiye ederim. Mikroservis mimariye giriş yapmadan önce karşıtı olan monolitik uygulama nedir onu bir inceleyelim.