Rest API Sunucusu için Scala çerçevesi? [kapalı]


105

Rest API Sunucumuzu (Symfony PHP'de web hizmetinin içinde) Scala'ya taşımayı birkaç nedenden dolayı düşünüyoruz: hız, ek yük yok, daha az CPU, daha az kod, ölçeklenebilirlik, vs. günler önce, ancak bugünlerde Scala kitabı ve tüm blog gönderileri ve soruları ile öğrendiklerimin tadını çıkarıyorum (o kadar da çirkin değil!)

Aşağıdaki seçeneklere sahibim:

  • Rest API Sunucusunu sıfırdan oluşturun
  • Scalatra gibi küçük bir Scala web çerçevesi kullanın
  • Kaldırma kullanın

Kullanmam gereken bazı şeyler: HTTP istekleri, JSON çıkışı, MySQL (veri), OAuth, Memcache (önbellek), Günlükler, Dosya yüklemeleri, İstatistikler (belki Redis).

Ne önerirsiniz?

Yanıtlar:


87

Belirli bir sırada değil:


1
Teşekkürler!
AKKA'yı

1
NB Umarım birisi restfulie.caelum.com.br'yi Scala'ya entegre eder veya taşır . Şimdi bir seçenek, Restfulie'yi JRuby'de Scala'nın bir ön ucu olarak kullanmaktır.
oluies

3
+1, yüksek performanslı bir API sunucusuna güç sağlamak için işte Akka'yı kullanıyorum. JAX-RS'yi Akka ile birlikte kullanmanın dezavantajı, JAX-RS'nin saf Scala projesine çok net bir şekilde uymayan bir ton Java özelliğine sahip olmasıdır. Yine de Akka tüm anlaşmaya değiyor.
Maks A.

2
Akka iyi bir seçimdir. JSON'a hizmet veriyorsanız, Lift JSON'a bir göz atın. Karıştırabilir ve eşleştirebilirsiniz, sorun değil.
andyczerwonka

1
@santiagobasult Çal olduğunu söyleyebilirim! 2.0 ve Play-mini! 2.0 oldu
oluies

22

Ben tavsiye edeceğim filtresiz . Bu, işleri "Scala yöntemiyle" yapan ve çok güzel olan deyimsel bir Web çerçevesidir.


15

Xitrum'a bir bakın (ben onun yazarıyım ), listelediğiniz her şeyi sağlar. Dokümanı oldukça kapsamlıdır. README'den:

Xitrum, Netty ve Hazelcast'in üzerinde eşzamansız ve kümelenmiş bir Scala web çerçevesi ve web sunucusudur:

  • Ek açıklama, JAX-RS ruhuna uygun olarak URL yolları için kullanılır. Tüm rotaları tek bir yerde bildirmek zorunda değilsiniz.
  • Netty ruhuyla eşzamansız.
  • Oturumlar çerezlerde veya kümelenmiş Hazelcast'te saklanabilir.
  • İşlem içi ve kümelenmiş önbellek, ayrı önbellek sunucularına ihtiyacınız yoktur.
  • İşlem içi ve kümelenmiş Comet, ayrı bir Comet sunucusuna ihtiyacınız yoktur.

7

İki seçenek daha ekleyeceğim: yerleşik JAX-RS desteğine sahip akka ve doğrudan JAX-RS kullanarak (muhtemelen Jersey uygulaması). Muhtemelen diğerlerine göre daha az "Scala-y" (parametreleri ve yolları bağlamak için ek açıklamalara güvenerek), JAX-RS kullanımı bir zevktir ve minimum ayak izi ile web hizmeti kodlamasının tüm sorunlarını temiz bir şekilde çözer. Bunu akka ile kullanmadım, orada mükemmel olmasını beklerdim, süreklilik tabanlı uygulamasıyla etkileyici bir ölçeklenebilirlik elde ediyordum.


Teşekkürler! AKKA'yı JAX-RS ile @Brent olarak kontrol edeceğim ve dediniz. Gerçekten hızlı gitmek istiyorsanız, bir API için gerçekten önemli olan minimum ayak iziyle çok hafif görünüyor.
fesja

1
Ölçeklenebilirliği elde etmek için JAX-RS 2.0 (şu anda beta) kullanmanız gerekecek, çünkü eski sürümler kötü iş parçacığına dayanıyor (yani iş parçacığı duraklatma ve devam ettirme desteklenmiyor).
Adam Gent

4

Finagle HTTP hizmetleri oluşturmak için bir Scala birleştirici kitaplığı olan Finch'e bir göz atın . Finch, önceden tanımlanmış temel blokların sayısından karmaşık HTTP uç noktaları oluşturmanıza izin verir. Ayrıştırıcı birleştiricilerine benzer şekilde, Finch uç noktalarının yeniden kullanımı, oluşturulması, test edilmesi ve akıl yürütmesi kolaydır.


3

Şimdiye kadar tüm iyi cevaplar. Lift'in lehine olan bir nokta , kısa ve zarif API yöntemleri yazmayı oldukça kolaylaştıran RestHelper'dır . Ek olarak, yapmak istediğiniz diğer tüm şeyler, Lift'te uygulamak için oldukça basit olmalıdır. Bununla birlikte Memcache gerekli olmayabilir.


Teşekkürler! neden memcache'nin gerekli olduğunu düşünmüyorsunuz? Elbette buna göre değişir, ancak sürekli olarak yapılması çok muhtemel olan birkaç sorgumuz var, bu yüzden kazanma zamanımız ve veritabanına daha az yük binmemizin zamanı geldi.
fesja

David Pollak'ın dün söylediklerini gerçekten unutuyorum. Temel olarak, Lift içindeki önbelleğe alma, memcache'nin birçok kullanım durumunu ortadan kaldırır. İşte mesajı ve başlıkta memcache hakkında birkaç başka gönderi daha var: groups.google.com/group/scala-base/msg/4b11cbd357bfecf0
pr1001

2

Sahnede biraz geç ama REST API'leri oluşturmak için kesinlikle Bowler çerçevesini kullanmanızı tavsiye ederim . Küçük, noktaya ve otomatik kasa sınıfı dönüştürme desteği!

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.