Skip to content

Latest commit

 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

University Library gRPC Service

Bu proje, bir üniversite kütüphane sistemini gRPC ile Python dili kullanarak uygulamayı amaçlamaktadır. Sunucu (server.py) ve istemci (client.py) uygulamaları, university.proto dosyasında tanımlanan servisler aracılığıyla kitap, öğrenci ve ödünç işlemlerini (loan) yönetmektedir.


🚀 Özellikler

  • Kitap Yönetimi (BookService)

    • Kitap listeleme, detay görüntüleme, ekleme, güncelleme, silme
  • Öğrenci Yönetimi (StudentService)

    • Öğrenci listeleme, detay görüntüleme, ekleme, güncelleme, silme
  • Ödünç İşlemleri (LoanService)

    • Ödünç alma, iade etme, listeleme, detay görüntüleme
  • Protobuf & gRPC

    • university.proto ile mesaj ve servis tanımı
    • grpcio ve grpcio-tools kullanılarak Python stub üretimi

📂 Proje Yapısı

grpc-app/
├── university.proto          # Protobuf tanımı
├── server.py                 # gRPC sunucu uygulaması
├── client.py                 # gRPC istemci uygulaması
├── requirements.txt          # Python paket bağımlılıkları
├── grpcurl-tests.md          # grpcurl ile test komutları ve örnek çıktı
├── README.md                 # Proje açıklamaları ve kullanım

🛠️ Kurulum

  1. Projeyi klonlayın:

    git clone https://github.com/eren-karakus0/gRPCApp.git
    cd gRPCApp
  2. Sanal ortam oluşturun ve aktifleştirin:

    python -m venv venv
    # Windows PowerShell
    .\venv\Scripts\Activate.ps1
    # Unix/macOS
    source venv/bin/activate
  3. Gereksinimleri yükleyin:

    pip install --upgrade pip
    pip install -r requirements.txt
  4. Protobuf stub dosyalarını üretin:

    # Windows için
    py -3 -m grpc_tools.protoc -I. --python_out=. --grpc_python_out=. university.proto
    
    # Unix/macOS için
    python3 -m grpc_tools.protoc -I. --python_out=. --grpc_python_out=. university.proto

📦 Çalıştırma

  1. Sunucu

    python server.py
    • Varsayılan olarak localhost:50051 adresinde çalışır.
  2. İstemci (ayrı bir terminalde)

    python client.py
    • Örnek kitap ve öğrenci işlemlerini demo olarak çalıştırır.

🔍 Test ve Doğrulama

Servislerin endpoint’lerini grpcurl ile test etmek için:

grpcurl -plaintext -d '{"page_size":5,"page_number":1}' localhost:50051 university.BookService/ListBooks

Tüm test komutları ve örnek JSON çıktıları, grpcurl-tests.md dosyasında bulunmaktadır.


📝 .proto Detayları

  • Dosya: university.proto

  • Mesajlar ve Servisler:

    • BookService (5 RPC)
    • StudentService (5 RPC)
    • LoanService (4 RPC)
  • Enum: LoanStatus (ONGOING, RETURNED, LATE)


🎯 Projede Öğrenilenler

  • gRPC ile yüksek performanslı RPC iletişimi
  • Protobuf ile güçlü mesaj tanımlamaları
  • Python’da servis ve istemci uygulamaları oluşturma

📌 Ek Notlar

  • Stub dosyaları GitHub’a eklenmez; protokol güncellemelerinde yeniden üretilir.
  • Mock veri kaynağı olarak Python dict yapısı kullanıldı.
  • Windows ortamında python3 alias’ın çalışmaması nedeniyle py -3 -m tercih edildi.

© 2025 Muhammet Eren Karakuş

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages