Azure Mobile Services JS Backend - Data

Azure Mobile Services yaratırken JS backend seçtik ve devam ediyoruz. Bu yazıda mobile uygulamadan Azure'a nasıl veri gönderilir ve bu veriler nasıl bir yapıda kayıt edilirden bahsedeceğim.

   

SQL veya daha farklı veritabanı yapıları bilen arkadaşlar lütfen bu yazıyı okumaya başlarken tüm bilgilerini unutsunlar çünkü hiç bir SQL veya benzer bir bilgiye ihtiyaç duymacağız.

   

Tablo Oluşturmak

   

İlk olarak daha önce yarattığımız mobile servisimizin içine giriyoruz ve yukarıdaki tab'lardan DATA sekmesine tıklıyoruz. Açılan sayfada hiç tablomuz olmadığını söylüyor ve "Add a table"'a tıklayarak yeni bir tablo oluşturuyoruz. Bu tablo için karşımıza aşağıdaki popup çıkıyor.

   

Create a new table

   

Tablomuza bir isim veriyoruz ve ardından aşağıdaki ayarları değiştirmeden sağ altta bulunan butona basarak tablomuzu oluşturuyoruz. Peki bu ayarlar ne işe yarar? Gördüğünüz gibi 4 farklı permission (yetki) mevcut bunlar ile tablodu operation'lari kimin yapabileceğine karar veriyoruz bydefault tüm ayarlar "Anybody with the Application Key" olarak geliyor yani Mobile Service URL ve Key'ini bilen kişiler veya client'lar sadece bu işlemleri yapabilir. Eğer sadece URL'I bilen herkes bu işlemi yapsın isterseniz bunu değiştirmeniz mümkün. Buradaki tüm seçenekler aşağıda beliritilmiştir:

  1. Anybody with the Application Key: URL ve Key'leri bilen tüm client'lar işlem yapabilir.
  2. Only Authenticated Users: Sadece Mobile Service aracılığı ile login olmuş(twitter, google, facebook, ms account vb.) kullanıcılar işlem yapabilir. Bu işlem için URL, Key ve Login gereklidir.
  3. Only Scripts and Admins: Bu seçenek ile sadece server tarafında çalışan scriptler ve admin kullanıcılar işlem yapabilir.

   

Enable Soft Delete açıklamalı checkbox ile SoftDelete aktif olup olmayacağına karar veriyorz. (SoftDelete: datayı sildiğiniz aslında tablodan silinmez ancak ileriki sorgularda karşınıza çıkmaz böylece silinen dataları görebilme imkanına sahip olursunuz.)

   

Ben şimdi Kisiler adında bir tablo yaratacağım ve bu tablo içerisinde Adi, Soyadi, Yasi gibi bilgileri saklayacağım. Yukarıdaki pencereye Kisiler yazıp Ok'e basarak ilerleyebilirsiniz.

   

Kisiler Tablosu

   

Yukarıda gördüğünüz gibi tablo yaratıldı ve artık mobile services tarafındaki işlerimiz bitti. Daha fazla tablo oluşturmak isterseniz aşağı ortada bulunan + butonu ile yeni tablo yaratmanız mümkün.

   

Dikkat ederseniz tabloda hangi kolonların olacağını mobile services'a söylemedik.

   

Insert & Update & Read & Delete işlemleri için diğer yazıları okuyabilirsiniz.

   

   

   

Azure Service Bus: Topic Subscription

Azure üzerinde ServiceBus adında bir hizmet olduğunu duymuşunuzdur diye tahmin ediyorum. Aslında Serbice Bus oldukça geniş ve çok işlevli bir konu ben bu yazıda sadece Topic & Subscription bölümünü kısaca özetleyeceğim.

   

Bu arada service bus sadace Azure üzerinde olan bir hizmet değil, kendi on-prem serveriniz üzerine kurup kullanabilirsiniz. Private cloud kavramıyla bu konuyuda inceleyebilirsiniz. Deneme fırsatım oldu, oldukca kolay bir kurulumu var.

   

Topic Nedir?

Sonuç olarak ingilizce bir terimden bahsediyoruz ve türkçesini düşünecek olursak: "KONU".

   

Subscription Nedir?

Aynı mantık ile üyelik diye biliriz.

   

Peki nedir bunlar? Konu çok basit aslında. Bir Topic olduğunu düşünün ve adı "Günlük Haberler" olsun. Birde subscriber olsun, ve bu topic'e subscribe olsun. Yani örneğin subscriber "Günlük Haberler" topic'ine üye oldu. Bu sayede "Günlük Haberler" topic'i içine giren her mesajdan subscriber haberdar olacaktır ve topic'e konulan mesajları okuyabilecektir.

   

Bir yada birden fazla üreticimiz var, topic'lerin içerisinde BrokeredMessage koyuyorlar.

Bir yada birden fazla subscriber(üye ?)'imiz var bunlarda topic'leri takip ediyor ve topic içine konulan mesajları okuyorlar konu bukadar basit.

   

Bahsettimiz işler Queue ilede yapılabilir mi? Şimdiye kadar evet diyebiliriz. Ancak Topic & Subscription mekanizmasında Topic ve Subscriptionlar var. Topic içine konulan her mesaj, belirlenen Topic'e subscribe etmiş tüm subscriberlara iletilmeyi garantiler. Queue'da ise mesaj queue'ya girer ve ilk alan consumer'in elinde kalır, ikinci vb. consumerlar o mesaja ulaşamazlar. Ama Subscription'da Topic'e giren her mesaj tüm subscriberlara iletilmeyi garanti eder.

   

Filtre

Subscriber topic'e subscribe olurken hangi mesajları almak istediğini filtreleyebilir. Bu işi şu şekilde yaparız, gelen mesajın propertylerinden biri veya bir kaçı belirtilen değerlerde ise mesaj ulaşsın. Bu yapı için SqlFilter class'indan yaralanıyoruz.

   

Connection String (config dosyasında olmalı)

   

<ConfigurationSettings>
<Setting name="Microsoft.ServiceBus.ConnectionString" value="Endpoint=sb://[SERVICEBUSNAME].servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedSecretValue=KEY" />
</ConfigurationSettings>

   

Yeni Topic Yaratmak, C#

   

Topic'i Silmek, C#

   

Mesaj Göndermek, C#

   

Subscription Oluşturmak ve Mesajı Okumak

   

Receive methodu ile mesajları alabilirsiniz. Eğer geri dönen instance null ise topic içerisinde mesaj olmadığını anlayabilirsiniz.

   

   

   

OnMessage, C#

OnMessage() methodu ile yukarida kurduğumuz yapının otomatik olarak oluşmasını sağlayabilirsiniz ve verdiğiniz action mesaj geldiğinde çalışır. Böylece sizin while() gibi bir loop ile kontrol etmenize gerek kalmaz, mesaj geldiğinde verdiğiniz action call edilir.

   

   

   

Daha detaylı bilgi için,

   

http://azure.microsoft.com/en-us/documentation/articles/service-bus-dotnet-how-to-use-topics-subscriptions/#configuring-your-connection-string-when-using-websites-or-virtual-machines

   

http://www.4sln.com/Articles/microsoft-azure-service-bus-queue-topic-subscription