PC, Mobil Oyun ve Aplikasyonlar için REST & Webservis Alt Yapısı

Mobil veya PC oyunlarında RESTful kurgusu ile webservis alt yapısı kurmadan önce düşünmemiz ve sormamız gereken noktalar olabilir. Az sonra okuyacaklarınız sadece oyunlar için değil, güvenli bir platform üzerinden araya farklı kişilerin/uygulamaların dahil olmayacağı veri alışverişi yapması gereken her şey için kurgulanabilir. Aplikasyon geliştirme, oyun geliştirme, ödeme sistemleri, veri-alışverişi yapması gereken sistemler vs…

  • Webservis alt yapısı nasıl kurulur, veri alışverişi nasıl yapılır?
  • Bu kurguya nereden başlanmalı?
  • Alt yapı mimarisi nasıl olmalı? (MVC, OOP, Multiple Servers)
  • Performans önemli mi? (Cache sistemleri, gereksiz verilerin tutulmaması)
  • Ne tür güvenlik önemleri alınabilir? (Additional Headers, Resource Methods, Token Systems)
  • Veri akışı ve büyüklüğü ne olmalı gibi konular üzerine biraz tecrübe aktarımı niteliğinde bilgiler paylaşacağım.

Bildiğiniz üzere mobil ve PC oyunlarında veya çeşitli aplikasyonlarda verilerin kaydedilmesi ve verilerin tekrar talep edilmesi (okunması) için güvenli bir alt yapı oluşturulmalıdır. Bu alt yapı kurulurken tabiri caizse düz PHP kullanmak yerine MVC ve OOP tabanlı bir yapı kurulması hem hızlı çalışması ve optimizasyon için hem de ileriye dönük bir sistem olması açısından önemli olacaktır.

Webservis alt yapısı nasıl kurulur, veri alışverişi nasıl yapılır?

Öncelikle, Class yapısı ile yazacağınız ana senaryoyu hazırlamamız gerekiyor. Temeli oluşturan önemli soruları en başta kendinize sormalısınız. Webservis üzerinden nasıl ve ne tür bilgiler gelecek, hangi method’lar ile gönderilecek (POST, GET, PUT, DELETE), output json mı olacak xml yapısı mı olacak, izinli IP erişimi olacak mı, authentication method’larını nasıl kurgulamak daha mantıklı olur, veritabanları master/slave yapısı ile mi olacak, farklı veritabanlarından read/write işlemleri yapılacak mı, memcache veya redis benzeri ram tabanlı önbellek (cache) sistemleri kullanılacak mı ve bunlar farklı sunucularda mı olacak gibi soruların cevaplarını belirleyerek öncelikle kafanıza bir yapı oluşturmalısınız. Zaten bu soruların hepsine cevabınız evet ise, webservis işlemlerine başlamadan önce bu yapıları kurmanız gerekiyor. Bu yapıların nasıl kurulduğunu başka bir yazı da anlatacağım.

Bu makalede örnek ile ilerlemek gerekirse; varsayalım ki sipariş temelli mobil restaurant uygulaması geliştireceksiniz. Uygulamaya girildiğinde kategori bazlı ürünlerin açıldığını düşünelim. 

KAHVALTILAR

Kahvaltı Tabağı 1, Kahvaltı Tabağı 2

ANA YEMEKLERLER

Yemek 1, Yemek 2, Yemek 3

Ana menüye tıklandığında (Kahvaltı) altındaki tüm ürünler açılacak, ürüne tıklandığında ise ürünün detay sayfası açılacak ve burada porsiyon/adet seçerek sepete ekleyecek.

Şu ana kadar okuduklarınızda 3 fonksiyon çıktığını görüyorsunuzdur. (Fonksiyonları yazıyı yazarken anlamlı olarak isimlendirdim)

  1. MainPageListByCategory($showFeatured=1)
  2. ShowProductDetails($productId)
  3. AddToCart($productId=0, $userId=0, $options=array())

Yazının devamı gelecektir….