30 Nisan 2026 Perşembe

Session Nedir? Neden İhtiyacım Var?

HTTP nedir? HTTP, yani Hypertext Transfer Protocol, web tarayıcıları ile web sunucuları arasında veri alışverişini sağlayan internetin temel iletişim protokolüdür.

HTTP nasıl çalışır? Tarayıcı bir URL’ye istek gönderir. Sunucu bu isteği alır ve yanıt döner. Yanıtın içinde durum kodu (örneğin 200 OK veya 404 Not Found) ve içerik bulunur.

HTTP’nin özellikleri nelerdir?

  • HTTP stateless yani durumsuzdur. Sunucu önceki istekleri hatırlamaz, her istek bağımsızdır.

  • Metin tabanlıdır, yani istek ve yanıtlar okunabilir formatta iletilir.

  • Genişletilebilir bir yapıya sahiptir. HTTP/1.1, HTTP/2 ve HTTP/3 gibi sürümleri vardır.

Peki güvenlik açısından durum nedir? HTTP’de veriler şifrelenmeden iletilir, bu yüzden güvenli değildir. HTTPS ise HTTP’nin güvenli versiyonudur. TLS/SSL ile veriler şifrelenir ve üçüncü kişiler tarafından okunamaz.

HTTP ile HTTPS arasındaki farklara bakalım:

  • HTTP’de güvenlik yok, HTTPS’de şifreleme vardır.

  • HTTP basit sayfalarda kullanılır, HTTPS ise bankacılık, e-ticaret gibi güvenliğin önemli olduğu alanlarda.

  • Tarayıcıda HTTP http:// olarak görünür, HTTPS ise https:// ve yanında kilit simgesiyle.

Garson Örneği

HTTP’nin stateless olmasını bir örnekle açıklayalım: Bir restoranda garsondan sipariş verdiğinizi düşünün. Garson siparişi alır, mutfağa iletir ve yemek gelir. Ama garson sizin önceki siparişinizi hatırlamaz. Her sipariş bağımsızdır.

İşte HTTP de böyle çalışır. Sunucu, önceki isteği hatırlamaz. Peki kullanıcıya ait bilgileri nasıl hatırlatırız? İşte burada session devreye girer. Garsonun bir defteri olduğunu hayal edin. Siparişinizi deftere yazar, sonraki siparişte deftere bakarak sizin önceki siparişinizi hatırlar. Session da aynı şekilde çalışır: Kullanıcıya özel bilgileri saklar ve sonraki isteklerde hatırlatır.

Session Nedir?

Session, kullanıcı ile sunucu arasında geçici veri saklama yöntemidir. Kullanıcı siteyi ziyaret ettiğinde ona özel bir session kimliği (ID) oluşturulur. Bu kimlik ile kullanıcıya ait veriler sunucuda saklanır.

Session’ın kullanım amaçları:

  • Kullanıcı oturum bilgilerini tutmak (örneğin giriş bilgileri, alışveriş sepeti).

  • Kısa süreli işlemler için geçici veri saklamak (örneğin form bilgileri).

ASP.NET Core’da Session Kullanımı

ASP.NET Core’da session’u kullanmak için önce services.AddSession() ile servisi ekleriz, sonra app.UseSession() ile pipeline’a dahil ederiz. Ayrıca session süresini IdleTimeout ile ayarlayabiliriz.

Örnek:

csharp
builder.Services.AddSession(options =>
{
    options.IdleTimeout = TimeSpan.FromMinutes(30);
    options.Cookie.HttpOnly = true;
    options.Cookie.IsEssential = true;
});

Session’a Veri Ekleme ve Alma

  • String veri:

csharp
HttpContext.Session.SetString("MyText", "Merhaba ASP.NET Core!");
var value = HttpContext.Session.GetString("MyText");
  • Int veri:

csharp
HttpContext.Session.SetInt32("MyNumber", 42);
int? value = HttpContext.Session.GetInt32("MyNumber");
  • Nesne veri (JSON ile):

csharp
var user = new UserInfo { Name = "Ahmet", Age = 25 };
HttpContext.Session.SetString("UserInfo", JsonSerializer.Serialize(user));

var jsonData = HttpContext.Session.GetString("UserInfo");
var userObj = JsonSerializer.Deserialize<UserInfo>(jsonData);

Örnek Senaryo

Bir e‑ticaret sitesinde kullanıcı sepete ürün ekledi. HTTP stateless olduğu için sunucu, sonraki istekte bu kullanıcının sepetinde ürün olduğunu hatırlamaz. İşte burada session devreye girer: Kullanıcının sepet bilgisi session’da saklanır ve sonraki isteklerde session ID üzerinden hatırlanır.

 

 

 

 


19 Nisan 2026 Pazar

Dockerlandık !!!

 Merhabalar,

Yazılım geliştirme dünyasında “benim bilgisayarımda çalışıyordu” cümlesi neredeyse tarih oldu. Nasıl mı dediğinizi duyuyorum. Hepsi Docker ile :) 

 

 

   







     Docker sayesinde developerlar artık sadece kod yazabilirler. Sunucudaki kurulum sorunlarıyla 
uğraşmak yerine doğrudan kodlarına odaklanabilir; ekipler ise aynı projeyi farklı ortamlarda sorunsuz bir şekilde çalıştırabilir. Kısacası Docker, geliştirme ile üretim ortamı arasındaki farkları ortadan kaldırarak süreci hem daha hızlı hem de daha güvenilir hale getirir.

 

İyi de nasıl yapacağız? 

        Alttaki gibi minik bir algoritmayı sırayla yaparak dockerlanabiliriz :) Haydi vakit kaybetmeden başlayalım...

 

Dockerlanma Algoritması

1. Çalıştığımız bilgisayara Docker kurarak başlayalım.  Uygun versiyon için tıklayınız.

2. Kurulum sonrasında Docker'ı çalıştırmamız gerekecek. Masaüstüne kısayolu gelmiştir. Çift tıklayıp açabilirsiniz.

3. Sol menüdeki builds sekmesine tıklayarak daha eski zamanda çalışmış olanları görebiliriz.

4. komut satırından docker testi yapmak için alttaki kodu yazalım.

 docker info

5. docker çalıştırma testi  komut satırına docker run hello-world yaz

Hello, World!

6. Projeyi açarken Docker seçelim. Açıldıktan sonra projeye sağ tıklayıp Add->Docker Support diyelim.

 

 

7. dockerfile içerisindeki kodları alttaki gibi düzenledim.

 # See https://aka.ms/customizecontainer to learn how to customize your debug container and how Visual Studio uses this Dockerfile to build your images for faster debugging.

# This stage is used when running from VS in fast mode (Default for Debug configuration)
FROM mcr.microsoft.com/dotnet/runtime:9.0-bookworm-slim AS base
USER $APP_UID
WORKDIR /app


# This stage is used to build the service project
FROM mcr.microsoft.com/dotnet/sdk:9.0-bookworm-slim AS build
ARG BUILD_CONFIGURATION=Release
WORKDIR /src
COPY ["helloworld.csproj", "./"]
RUN dotnet restore "./helloworld.csproj"
COPY . .
WORKDIR "/src"
RUN dotnet build "./helloworld.csproj" -c $BUILD_CONFIGURATION -o /app/build

# This stage is used to publish the service project to be copied to the final stage
FROM build AS publish
ARG BUILD_CONFIGURATION=Release
RUN dotnet publish "helloworld.csproj" -c $BUILD_CONFIGURATION -o /app/publish /p:UseAppHost=false

# This stage is used in production or when running from VS in regular mode (Default when not using the Debug configuration)
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "helloworld.dll"]

 

8. kodu docker üzerinde çalıştıralım. Projeyi çalıştırma kısmında Container yazacak.

9. docker build -t helloworld . bunu yaz komut satırına build edildiğini ve hata almadığını gör.

10. docker run helloworld komut satırına bunu yaz kodlarını gör. Çıktıyı aynı ekranda kod olarak ne yazmışsan görüyor olman lazımdı.
Hello, World!
nagihan 

 

Kodda değişiklik olması durumunda 9-10 basamaklarını tekrardan sırayla yap ve sonucu kontrol et :)  

Böylece docker tarafında projemizi yayınlamış olduk. Bundan sonraki aşamada  real-life aşaması olabilir.

 

  • Azure / AWS / DigitalOcean
  • Docker image upload (Docker Hub)
  • production ortamında çalıştırma
  •  

     

     

     

     

     

     

     

     

    Session Nedir? Neden İhtiyacım Var?

    HTTP nedir? HTTP, yani Hypertext Transfer Protocol , web tarayıcıları ile web sunucuları arasında veri alışverişini sağlayan internetin t...