Skip to content

Ozdal97/shared-memory-bridge

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 

Repository files navigation

shared-memory-bridge

.NET ve Python arasında RAM üzerinden doğrudan veri paylaşımı. Disk yok, network yok, database yok. Sadece RAM.

Ne bu?

Redis gibi düşün ama ortada bir sunucu yok. İki farklı dilde yazılmış iki process, aynı RAM bölgesini okuyup yazıyor. Sıfır overhead.

Windows'un Memory-Mapped File (MMF) mekanizmasını kullanarak:

  • .NET tarafı RAM'e JSON yazıyor
  • Python tarafı aynı RAM'den JSON okuyor

Arada broker yok, serialization katmanı yok, TCP/IP yok. İki process aynı bellek adresine bakıyor.

Nasıl çalışıyor?

┌─────────────────┐          RAM (4096 byte)          ┌─────────────────┐
│                  │    ┌─────────────────────────┐    │                 │
│  .NET 10 Writer  │───▶│     MySharedMemory       │◀───│  Python Reader  │
│  (Program.cs)    │    │  {"time":"...","random":  │    │  (main.py)      │
│                  │    │   42,"message":"Hello"}   │    │                 │
└─────────────────┘    └─────────────────────────┘    └─────────────────┘
      YAZAR                   PAYLAŞIMLI BELLEK                OKUR

.NET her saniye şu JSON'u RAM'e yazıyor:

{
  "time": "2026-02-05T12:00:00.0000000Z",
  "random": 42069,
  "message": "Hello from .NET 10"
}

Python her saniye aynı alanı okuyup parse ediyor:

[TIME] -> 2026-02-05T12:00:00.0000000Z | RANDOM -> 42069 | MESSAGE -> Hello from .NET 10

Redis ile karşılaştırma

Redis shared-memory-bridge
Aracı sunucu ✅ Redis server gerekli ❌ Yok
Network ✅ TCP bağlantısı ❌ Yok
Latency ~0.1ms (loopback) ~0.001ms (direkt RAM)
Kurulum Redis kurulumu gerekli Hiçbir şey gerekmiyor
Cross-machine ✅ Evet ❌ Sadece aynı makine
Persistence ✅ Opsiyonel ❌ Yok, RAM'de kalır

Kısacası: Aynı makinede iki process arası ultra-hızlı veri paylaşımı istiyorsan, Redis overkill. Bu yeterli.

Gereksinimler

Çalıştırma

Terminal 1 — Writer'ı başlat:

cd DotnetMemoryWriter
dotnet run

Terminal 2 — Reader'ı başlat:

cd PythonMemoryReader
python main.py

Proje yapısı

shared-memory-bridge/
├── DotnetMemoryWriter/
│   ├── DotnetMemoryWriter.csproj
│   ├── Program.cs
│   └── README.md
├── PythonMemoryReader/
│   ├── main.py
│   └── README.md
└── README.md

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors