Kerangka kerja web Scala apa yang tersedia? [Tutup]


195

Saya baru saja mulai belajar Scala, dan hal pertama yang akan saya terapkan adalah aplikasi web kecil. Saya telah menggunakan Erlang selama setahun terakhir untuk mengimplementasikan perangkat lunak sisi server, tetapi saya belum pernah menulis aplikasi web sebelumnya. Itu akan menjadi pengalaman hebat.

Apakah ada kerangka kerja web untuk Scala kecuali untuk Lift ?

Jangan salah paham, Lift terlihat keren. Saya hanya ingin tahu berapa banyak kerangka kerja sehingga saya bisa memilih di antara mereka. Itu selalu baik untuk memiliki pilihan, tetapi saya satu-satunya hal yang saya temukan adalah Angkat.

Jawaban:


77

Saya sangat tertarik dengan Scala, tapi saya belum menggunakannya, jadi dengan peringatan itu, kerangka kerja yang saya ketahui tidak disebutkan dalam jawaban HRJ (Lift, Sweet, Slinky) adalah:


3
Menarik. Sejauh ini lift adalah yang paling banyak dipublikasikan: sangat mengherankan bahwa Anda tidak mengenalnya.
mcherm

13
Catatan pernyataan "... Saya sadar dan tidak disebutkan oleh HRJ ..." HRJ sudah menyebutkan Angkat. Terima kasih
bn.

6
bermain memiliki versi scala juga
islon

1
/ Aku menghela nafas. <rant> Langkah adalah nama yang sangat bagus, mengapa beralih ke Scalatra? Express.js tidak disebut Nodatra. Labu (tidak persis sama tetapi dekat) tidak disebut Pythatra. </rant>
Dave Jensen

1
@ djensen47 Anda selalu bebas untuk mengembangkan sendiri;)
BAR

45

Saya menulis posting blog tentang ini.

Untuk meringkas, beberapa opsi adalah:

  1. Mengangkat
  2. Manis
  3. Slinky

Saya akhirnya menemukan bahwa tidak ada yang cocok untuk saya, dan mengembangkan "kerangka" kecil saya sendiri. (Ini belum open-source).


35

Saya suka Angkat ;-)

Play adalah pilihan kedua saya untuk kerangka kerja web yang ramah-Scala.

Gawang adalah pilihan ketiga saya.


46
David, bagaimana kamu mendengar tentang Lift? ;-)
Derek Mahar

6
@Derek Mahar Di dalam pekerjaan saya percaya ;-)

5
Tampaknya Anda berafiliasi dengan Lift. Harap perhatikan bahwa kebijakan promosi diri kami mengharuskan Anda untuk mengungkapkan informasi ini dalam jawaban seperti ini.
josliber

35

Berikut ini adalah tumpukan kerangka kerja. Itu tidak berarti saya benar-benar menggunakannya:

  • Coeus . Kerangka kerja web MVC tradisional untuk Scala.

  • Tanpa filter . Toolkit untuk melayani permintaan HTTP di Scala.

  • Granit Uniscala .

  • Gardel

  • Mondo

  • Amore . Port Scala dari kerangka web Ruby Sinatra

  • Timbangan XML . Pendekatan fleksibel untuk penanganan XML dan cara berinteraksi yang disederhanakan dengan XML.

  • Sabuk . Antarmuka seperti rak untuk aplikasi web yang dibangun di atas Scalaz-HTTP

  • Frank . Aplikasi web DSL dibangun di atas Scalaz / Belt

  • MixedBits . Kerangka kerja untuk bahasa pemrograman Scala untuk membantu membangun situs web

  • Circumflex . Menyatukan beberapa proyek open source mandiri untuk pengembangan aplikasi menggunakan bahasa pemrograman Scala.

  • Scala Webmachine . Webmachine Port of Basho di Scala, sistem berbasis REST untuk membangun aplikasi web

  • Bowler . Kerangka kerja web Scala siap-TENANG multi-saluran


1
Unfiltered memiliki tayangan slide yang baik di sini: tautan
Rick-777

Saya menambahkan bowlerframework (baru ditemukan di web).
Adam Gent



8

Saya menemukan Unfiltered https://github.com/unfiltered/unfiltered sangat menarik .

Itu disebutkan dalam daftar IttayD.

Berikut adalah presentasi tentang hal itu http://unfiltered.lessis.me/#0 dan video http://code.technically.us/post/942531598/doug-tangren-presents-the-unfiltered-toolkit-for

Juga di sini ada artikel dengan info lebih lanjut http://code.technically.us/post/998251172/holding-the-parameter


1
Tanpa filter sangat, sangat keren. Ini benar-benar bersih & fungsional tetapi tidak terlalu rumit.
thatismatt

8

Harus dicatat bahwa ada minat yang cukup besar pada Wicket dan Scala . Wicket sangat cocok untuk Scala. Jika Anda ingin mengambil keuntungan dari proyek Wicket yang sangat matang dan ekosistemnya (ekstensi) plus sintaksis ringkas dan keunggulan produktivitas Scala, yang satu ini mungkin cocok untuk Anda!

Lihat juga:

  1. Beberapa prosa

  2. Presentasi

  3. Beberapa pengalaman dengan Wicket dan Scala

  4. Pengumuman dengan mengacu pada proyek untuk kode lem untuk mengikat penutupan Scala ke model


7

Bermain itu cukup manis.

Sekarang sudah siap produksi. Ini mencakup: kerangka templat keren, memuat ulang otomatis file sumber setelah aman, sistem tindakan yang dapat dikomposisikan, kedahsyatan akka, dll.

Itu bagian dari Stack Typeafe .

Setelah menggunakannya untuk dua proyek, saya dapat mengatakan bahwa itu bekerja dengan cukup lancar dan itu harus menjadi sesuatu untuk dipertimbangkan lain kali jika Anda ingin mempelajari kerangka kerja web baru.


5

Saya cenderung menggunakan JAX-RS menggunakan Jersey (Anda dapat menulis sumber daya yang bagus di Scala, Java atau Groovy) untuk menulis aplikasi web RESTul. Kemudian saya menggunakan Scalate untuk rendering tampilan menggunakan salah satu dari berbagai bahasa template ( JADE , Scaml , Ssp (Scala Server Pages), Kumis , dll.).


Saya tertarik untuk mengetahui IDE apa yang Anda gunakan untuk mengembangkan proyek Scalate?
Ali Shakiba

1
Saya menggunakan IntelliJ untuk semua perkembangan saya
James Strachan

4

Ada kerangka kerja web baru, yang disebut Scala Web Pages . Dari situs:

Target Pemirsa

Kerangka kerja web Scala Pages cenderung menarik bagi programmer web yang berasal dari latar belakang Java dan ingin memprogram aplikasi web di Scala. Penekanannya adalah pada OOP daripada pemrograman fungsional.

Karakteristik dan Fitur

  • Mengikuti paradigma model-view-controller
  • Mesin template berbasis teks
  • Sintaks sederhana: $variable dan<?scp-instruction?>
  • Encoding / deteksi konten, mampu menangani penyandian teks internasional
  • Cuplikan bukan tag khusus
  • Penulisan Ulang URL

4

Prikrutil, saya pikir kita berada di kapal yang sama. Saya juga datang ke Scala dari Erlang. Saya suka Nitrogen jadi saya memutuskan untuk membuat kerangka kerja web Scala yang terinspirasi olehnya.

Lihatlah Xitrum . Dok nya cukup luas. Dari README:

Xitrum adalah kerangka kerja web dan server web Scala async dan berkerumun di atas Netty dan Hazelcast:

  • Ini mengisi celah antara Scalatra dan Lift: lebih kuat dari Scalatra dan lebih mudah digunakan daripada Lift. Anda dapat dengan mudah membuat RESTful APIs dan postbacks. Xitrum adalah controller-first seperti Scalatra, bukan view-first seperti Lift.
  • Anotasi digunakan untuk rute URL, sesuai semangat JAX-RS. Anda tidak harus mendeklarasikan semua rute di satu tempat.
  • Typafe, dalam semangat Scala.
  • Async, dalam semangat Netty.
  • Sesi dapat disimpan dalam cookie atau Hazelcast yang dikelompokkan.
  • Validasi jQuery terintegrasi untuk sisi browser dan validasi sisi server. i18n menggunakan GNU gettext, yang artinya tidak seperti kebanyakan solusi lain, baik bentuk tunggal maupun jamak didukung.
  • GET bersyarat menggunakan ETag.

Hazelcast juga memberikan:

  • Dalam proses dan cache berkelompok, Anda tidak perlu server cache terpisah.
  • Dalam-proses dan Komet berkerumun, Anda dapat skala Komet ke beberapa server web.

Ikuti tutorial untuk memulai cepat.


3

Ada juga Pinky, yang dulu menggunakan bitbucket tetapi dipindahkan ke github .

Ngomong-ngomong, github adalah tempat yang bagus untuk mencari proyek Scala, karena ada banyak yang ditempatkan di sana.


3

Saya ingin menambahkan upaya saya sendiri ke daftar ini. Anda dapat menemukan informasi lebih lanjut di sini:

kerangka kerja brzy

Ini dalam pengembangan awal dan saya masih mengusahakannya secara agresif. Ini termasuk fitur-fitur seperti:

  • Fokus pada kesederhanaan dan ekstensibilitas.
  • Alat bangun terintegrasi.
  • Desain modular; beberapa modul awal termasuk dukungan untuk skalate, email, jms, jpa, squeryl, cassandra, layanan cron dan banyak lagi.
  • Kontrol dan tindakan sederhana yang tenang.

Setiap dan semua umpan balik sangat dihargai.

UPDATE: 2011-09-078, saya baru saja mengirim pembaruan besar ke versi 0.9.1. Ada lebih banyak info di http://brzy.org yang mencakup screencast.


1

Baik Sweet dan Slinky tampaknya tidak dirawat selama sekitar satu tahun. Sweet Maven repo sweetsoftwaredesign.com sudah mati sehingga bahkan tidak ada cara untuk mengunduh dependensi.


1

Catatan: Spiffy sudah usang.

< plug >

Spiffy :

  • ditulis dalam Scala
  • menggunakan perpustakaan dan aktor Akka yang fantastis untuk mengukur
  • menggunakan servlet API 3.0 untuk penanganan permintaan tidak sinkron
  • bersifat modular (komponen pengganti lurus ke depan)
  • menggunakan DSL untuk mengurangi kode di tempat yang tidak Anda inginkan
  • mendukung Scalate dan Freemarker untuk templating

Spiffy adalah kerangka kerja web menggunakan Scala, Akka (implementasi aktor Scala), dan Java Servlet 3.0 API. Itu menggunakan antarmuka async dan bertujuan untuk menyediakan lingkungan paralel dan berskala besar untuk aplikasi web. Berbagai komponen Spiffy semuanya didasarkan pada gagasan bahwa mereka perlu menjadi modul minimalis independen yang melakukan pekerjaan dalam jumlah kecil dengan sangat cepat dan menyerahkan permintaan ke komponen berikutnya dalam pipa. Setelah komponen terakhir selesai memproses permintaan, ia memberi sinyal wadah servlet dengan "menyelesaikan" permintaan dan mengirimkannya kembali ke klien.

https://github.com/mardambey/spiffy

< / colok >


0

Anda juga dapat mencoba Konteks . Itu dirancang untuk menjadi kerangka Java tetapi saya telah berhasil menggunakannya dengan Scala juga tanpa kesulitan. Ini adalah kerangka kerja berbasis komponen dan memiliki sifat yang mirip dengan Lift atau Permadani.


0

Saya telah menemukan pertanyaan Anda beberapa minggu yang lalu, tetapi sejak itu juga belajar tentang Circumflex . Ini adalah kerangka kerja yang bagus dan minimal sehingga mudah dipelajari, dan memiliki dokumentasi yang cukup bagus.

Selain minimnya, ia juga mengklaim dapat bekerja dengan baik dengan perpustakaan lain dan memungkinkan Anda menggunakan implementasi Anda sendiri saat Anda membutuhkannya.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.