Azure Mobile Services Backend ve iOS Frontend

Uzun bir aradan sonra yazmak biraz zor oluyor, yine de yazmadan da olmuyor arkadaşlar. Bu sefer kısa olarak bahsedeceğim ama ileride bol bol, siz sıkılıncaya kadar anlatacağım Azure Mobile Services konusu ile bir Swift iOS Backend olayına bakacağız. Hiç öyle ahım şahım bir olay değil baştan diyeyim hiç heyecan da yapmayın.

Hazır virtual makinem kendini restart ederken size yeni projemden bahsedeyim. Bir iOS app yazmaya çalışıyorum ama nasıl yazıyorum bir anlatabilsem derdimi. Son zamanlarda merakımdan değil, gerçekten bir girişim olabileceğini düşündüğüm için böyle bir şeye atladım diyebilirim.

1- Proje Kısmısı

Proje nedir, ne değildir? Hayatı insana sorgulatan projenin kendisi midir, yoksa sizin bu konudaki eğiliminiz midir? Bir sürü soru var insanın aklında olan prjeyi ortaya çıkarmak sadece. Olası sorunlardan bir tanesini siz daha başlamadan anlatayım; “Projeye o kadar çok yoğunlaşmak ki, projenin amacını unutmak!”

Maalesef start-up ya da kendi projenizi yaparken yaşayacağınız en büyük sorun bu ve bunun da kolay bir kurtuluşu yok. Her gün kendinize Neden bu projeyi yapmayı istedim? gibi bir soru sormanız ve bunu her gün istisnasız yanıtlamanız gerek. Neyse ki kendi projemin “Amaç noktası” bana kendisini her gün tekrar tekrar hatırlatan bir şey olduğundan kendisine odaklanmam bir şekilde mümkün olabildi diyebilirim.

2- Backend Kısmısı (Back-end)

Şimdi bir fikriniz var, ok bunu anladık. Peki bunu nasıl support edeceksiniz? DB1‘niz var mı? Programınızın arayüzü sizin DB ile nasıl haberleşecek? Genel bir API2 mi çıkacaksınız, yoksa WCF3 koyarım yeter ağa mı diyeceksiniz? Hadi WCF koydunuz bunun REST4 API’ye çevrilmesi var. Onu geçtim hani sizin app Asyncronious5 olarak request gönderdiğinde WCF onu destekleyecek mi? Onu da Web API6 ile yaparım diyeceksiniz ama hadi onun da Authentication7 olayı var, Onu nasıl desteklemeyi planlıyorsunuz?

Hepsini boşverin, bu backend olayını tutup da windows bir host içerisine atıp aylık ne kadar para bayılacağınızı hesapladınız mı? Daha proje başalmadan bir de!!

Vay benim başıma kaynar sular dökülsün, daha hayal aşamasında projeyi çöpe atmaya çalışmanızın sebebi, işte böyle şeylerin hesaplanmasıdır arkadaşlar. Bir gecede Facebook, Instagram çıkmıyor tabii. Hele hele hiç scability olaylarına girmiyorum oraya girdiğimde sizinle ayrıca mesajlaşırız :D.

Kişisel olarak bu sorunları Azure Mobile Services ile (REST, Asyncronios, Authenticated) ile çözmeye çalışıyorum.

3- Frontend Kısmısı (Front-end) (iOS APP)

Hadi bir şekilde arka tarafı kotardınız, peki programınızın arayüzü nasıl olacak? Yo yo tasarım demiyorum, ön yüzün arkasındaki programlama dilinden bahsediyorum. Native yani entegre app mı olacak, yoksa bir web sayfası yapıp onu mu gömeceksiniz programın içerisine? Hadi Native oldu, Objective-C mi olacak Swift mi olacak?

Objective-C ve Swift Farkı

Programatik farkları değil başka bir farkı size anlatmak istiyorum. iOS olacak olan app’ın desteklenme arayüzü nasıl olacak? Yani Objective-C olayı yakında sonlanacak ve Apple buna destek vermemeye başlayacak, bunun için zaten geçen yıl Swift dilini ortaya çıkarttılar. Fakat internette azıcık da olsa araştırma yapınca karşınıza Swift ile bir şey çıkmamakta, ne varsa insanlar objective-c kasmış.

Swift dediğimiz dil de iOS 8’den sonra destekmeye başlanan bir dil bunu da belirtelim. Tabii her makinede iOS 8 yok (Bu yılın analizine göre %85 iOS 8 kurulu makinalarda).

Şahsi görüşüm yine burada Swift dilini kullanmak. Çünkü syntax olarak hem kolay, hem de geleceği olan bir dil.

4- Sonuç

Sonuç olarak öyle “Kanka gel de program yazalım”, “Hadi gel start-up olalım”, “Abilerle Mobile App Keyfi” gibi şeyler kolay olmuyor arkadaşlar. Bir hayaliniz olduğunda o hayali mümkün kılmak için gerekli altyapıyı da öğrenmeniz gerek. Ben bu ölçüde şanslı birisiyim ama bu konuda şanslı olmayanlar ne yapabilir? Tabii ki dünyanın sonu değil. Yazılımcı kiralama, ya da projenizi Angel Investor’lara sunma gibi bir yola gidebilirsiniz. Onlar sizin için düzgün teknik yol çizecek ya da çizecek kişileri sizin karşınıza çıkartacaktır.

Yeni bir şeyler üretmekten korkmayın, aksine üretin ve hayatınızda nadiren yaşayacağınız duyguları doay doya yaşayın.

Devamı gelecektir…


  1. Database: Hani şu dataları sakladığımız zımbırtı. 
  2. Application Programming Interface: Kısaca bizim programla esas kodların iletişim kuracağı arayüz. 
  3. Windows Communication Foundation: Çok popüler olan ve bir çok iletişim formatını destekleyen servis programlama altyapısı. 
  4. Representational State Transfer: Kısaca HTTP üzerinden çalışan servis mantığı. 
  5. Programlamada işlemler syncronious (senkronize) ve asyncronious (sırasız) olarak gönderilirler. Sıralı olaylarda önceki bitmeden sonraki işlem yapılmaz. Sırasızlarda aynı anda işlem gönderilir, en kısa sürede biten tamamlanmış olur. 
  6. Web API: Yeni çıkan REST altyapısı ile MVC teknolojisini birleştiren MS servis altyapısı. 
  7. Yetkilendirme: Öyle her şeyi kabul edip de heckırları sisteme davet mi edeceksiniz?