Program Tip

Scala 미들웨어 선택의 차이점은 무엇입니까?

programtip 2020. 11. 25. 08:24
반응형

Scala 미들웨어 선택의 차이점은 무엇입니까?


참고 : 안타깝게도이 질문은 닫혔지만 다른 사람이 같은 질문을 할 경우 유지하려고합니다.

저는 모바일 장치와 기존 웹 서비스 사이에 위치 할 서비스를 Scala로 개발하기위한 좋은 솔루션을 찾고있었습니다.

현재 실행 가능한 옵션 목록은 다음과 같습니다.

아마도 더 많은 옵션이있을 것입니다. 어떤 것을 사용할 것인지 어떻게 결정합니까? 좋은 Scala 미들웨어 선택의 특징은 무엇입니까 (말장난을 용서하십시오 ;-). 한편으로는 TypeSafe Scala 스택의 일부이기 때문에 Akka를 선택하고 싶지만 다른 한편으로는 Finagle과 같은 라이브러리가 풍부한 라이브러리 세트를 가지고있어 배관 작업을 쉽게 할 수 있습니다. 스프레이는 사용하기 쉽고 멋지게 보입니다.

조언, 통찰력 또는 경험을 주시면 대단히 감사하겠습니다. 나는 누군가가 공유를 꺼려하지 않을 이들 중 일부에 대한 경험이 있어야한다고 확신합니다.

최신 정보:

이 질문이 다시 열리기를 바랍니다. 이 질문에 대한 좋은 대답은 새로운 Scalateers가 관련 함정을 피하는 데 도움이 될 것입니다.

업데이트 2 :

이 질문을 한 이후로 내 자신의 경험입니다.

Finagle- 저는 프로젝트에 Finagle을 사용했는데 견고합니다.

스프레이 -최근 프로젝트에서 스프레이를 사용하고 있는데 매우 행복합니다. 최신 릴리스는 Akka 2에 구축되었으며 웹 서버가 필요없는 Spray-can 라이브러리를 사용하여 직접 실행할 수 있습니다. 스프레이는 프레임 워크가 아니라 라이브러리 세트이며 매우 모듈 식입니다. 에 대한 스프레이 알아보기 : Akka 비디오에 REST는 훌륭한 개요 및 제공 Cakesolutions의에서이 블로그 쇼 정말 좋은 개발 접근 방법과 구조를.

업데이트 3 :

인생은 꽤 빨리 움직입니다. 잠시 멈추지 않고 주위를 둘러 보면 놓칠 수 있습니다. - 페리스 부 엘러

요즘에는 선택이 더 간단 해졌습니다. 내 겸손한 의견으로는 스프레이가 전투에서 승리했습니다. 다음 Akka HTTP가되기 위해 Akka통합되고 있습니다. 저는 현재 여러 프로젝트에서 Spray를 사용하고 있으며, 제가 지금까지 만나 본 소프트웨어 중 가장 훌륭하고 지원되는 소프트웨어라고 솔직히 말할 수 있습니다.

이것은 초기 질문에 대한 답은 아니지만 적어도 대부분의 경우 스프레이가 최선의 선택으로 보이는 이유에 대한 몇 가지 표시를 제공합니다. 매우 유연하고 차단되지 않으며 매우 안정적입니다. 클라이언트 측 및 서버 측 라이브러리와 훌륭한 테스트 키트가 있습니다. 또한 성능에 대한 아이디어를 얻으려면 다음 통계를 살펴보십시오. 웹 프레임 워크 벤치 마크


나는 개인적으로 오래 전에 스프레이로 시작했고 Scala를 위해 거기에 있던 다른 모든 것을 시도했습니다. Scala, spray, akka, shapeless 및 scalaz는 확실히 약간의 학습 곡선을 가지고 있지만 일단 기술을 파헤 치고 실제로 기술을 사용하는 방법을 배우면 이해가되며 특히 종류에 대한 이점을 즉시 보았습니다. 내가 지금하고있는 일의.

개인적으로 나는 서버, 나머지 API, http 클라이언트 및 기타 원하는 것을 구축하기 위해 실제로 스프레이 할 수있는 것은 없다고 생각합니다. 스프레이에 대해 내가 좋아하는 것은 그들이 akka를 염두에두고 지었다는 것입니다. 처음 사용하기 시작했을 때는 정말 초기 프로젝트 였을지 모르지만 아키텍처는 합리적이었습니다. 그 사람들은 행위자 모델을 사용하고 차단 작업이없는 이점을 활용하는 측면에서 자신이 무엇을하고 있는지 알고있었습니다.

배우들이 익숙해지는 데 시간이 좀 걸릴지 모르지만 나는 그들을 좋아합니다. 과거와 같이 견고한 하드웨어가 필요하지 않기 때문에 시스템을 확장 가능하고 실행 비용이 저렴하게 만들었습니다. 또한 스프레이에는 스프레이 라우팅 DSL이 있으므로 규칙을 따르는 한 나머지 API를 만드는 것은 비교적 간단합니다. 차단하지 마십시오. 물론 이는 블로킹 모델로 돌아갈 것이기 때문에 API 또는 액터에서 클라이언트 요청을 만들기 위해 아파치 커먼즈 http 클라이언트를 가져 오지 마십시오.

지금까지 저는 spray, typesafe, akka에 매우 만족합니다. 그들의 모델은 당연히 어떤 일이 일어나야 할 때 자체적으로 복구되는 매우 탄력적 인 시스템을 구축하는 데 적합하며 실패시 빠른 접근 방식을 취합니다. 스프레이와 함께 가지고있는 한 가지 쇠고기 (스프레이의 결함이 아님)는 라우팅 DSL에 대한 IDE 지원입니다. 나는 Eclipse를 절대적으로 경멸하고 항상 IDEA 사용자였습니다. Scala 플러그인을 사용하기 시작했을 때 모든 것이 정상이었습니다. 그런 다음 내 라우팅 dsl은 자연스럽게 더 큰 짐승으로 진화했습니다. IDEA가 해당 코드를 구문 분석하는 방식에 대한 무언가는 스프레이 라우팅 또는 형태가없는 모든 것을 만날 때마다 바지를 똥으로 만듭니다. 사용할 수없는 지점까지입니다 (2 ~ 3 개의 문자를 입력하고 제어권을 되찾기 위해 5 분을 기다려야합니다).

따라서 스프레이 라우팅 또는 무거운 형태없는 코드의 경우 ensime, ensime-sbt 및 scala-mode2로 emacs를 실행합니다. 이제 astyanax 품질의 Cassandra 라이브러리 만 얻을 수 있고 더 비 차단 아키텍처를 사용하여 빌드 할 수 있다면 말입니다.


여기에서 나열한 모든 대안에 대한 간략한 설명과 함께 훌륭한 스칼라 리소스 목록을 찾을 수 있습니다.

내 경험으로 나는 Scalatra를 사용하며 uri 매핑 및 웹 서비스 호출과 같은 작업에 작고 간단하며 효과적입니다.

참고 URL : https://stackoverflow.com/questions/8848058/what-are-the-differences-between-scala-middleware-choices

반응형