Nedir bu ServiceStack ?
WCF ve Web API ye alternatif olarak cross-platform olarak kullanabileceğimiz open-source bir web service framework.
Eğer .Net Framework çatısı altında çalışıyorsanız WCF kullanabilirsiniz fakat web servislerinizi Windows dışındaki platformlara da dağıtmak istiyorsanız ServiceStack ideal bir seçenektir.
WCF client ve server arasındaki iletişimi sağlayabilmek için data contracts (veri sözleşmeleri) kullanır.
ServiceStack bu bakımdan biraz da WCF ‘e benzer.
Daha fazla bilgi için: servicestack.net
Neden ServiceStack ?
- Kolay olması
- Hızlı olması
- Bizi karmaşık XML configrasyonlarıyla uğraştırmaması
- En önemlisi de cross-platform bir hizmet verebilmemizi sağlıyor olması
gibi avantajları olduğu için tercih edilir.
ServiceStack Any, GET, POST, DELETE, PUT gibi eylemleri destekler. Any hem GET hem de POST istekleri tarafından çağrılabileceği anlamına gelir.
ServiceStack web servisimizi RESTful web servise dönüştürmek için Web request tanımlarken sınıfımızı
[Route(...)]
attribute ile uygun şekilde işaretlememiz yeterli.
Ufak bir örnek ile gösterelim.
NuGet package manager ‘da ServiceStack framework ‘unu buluyoruz ve projemize ekliyoruz.
Burada basitçe Name parametresi alan bir HelloService oluşturduk. Geriye gördüğünüz üzere "Hello, $Name"
şeklinde parametreyi döndürüyor.
HelloRequest sınıfına neden IReturn<HelloResponse>
arayüzünü giydirdiğimizi birazdan açıklayacağım.
AppHost ‘umuzu AppSelfHostBase sınıfından türetiyoruz. Ve constructor ‘ında ilgili parametreleri veriyoruz.
Hostumuzu bu şekilde oluşturup başlatıyoruz.
Test projemize aynı şekilde NuGet package manager ‘dan bu kez ServiceStack.HttpClient referansını ekliyoruz.
HelloRequest sınıfına IReturn<HelloResponse>
arayüzünü giydirmeseydik kodda yorum satırı olarak geçen:
string response = client.Get(new HelloRequest { Name = "SERKAN" }).Result;
şeklinde bir kullanım yapamazdık. Çünki client.Get()
fonksiyonun aldığı parametrelerden biri IRequest<T>
.
Bu yazımızda buraya kadar.
Detaylı dokümantasyon için docs.servicestack.net adresine göz atabilirsin.