2012-06-27 35 views
10

Tôi khá mới lập trình với khung Play cũng như Akka, mặc dù tôi đã đọc về chúng một thời gian. Tôi hiện đang bắt đầu một ứng dụng chứng minh-khái niệm trên môi trường Play mặc định/cơ bản. Câu hỏi của tôi xuất phát từ api ứng dụng khách dịch vụ web trong Play (http://www.playframework.org/documentation/2.0.1/ScalaWS).Sử dụng Akka để thực hiện cuộc gọi dịch vụ web từ ứng dụng Play

Ứng dụng này về cơ bản cần phải dàn xếp các cuộc gọi đến dịch vụ web SOAP từ xa ở dạng có thể mở rộng và thực hiện theo cách có thể. Trình duyệt thực hiện cuộc gọi ajax trong JSON, ứng dụng Play cần chuyển đổi chúng thành SOAP/XML và ngược lại trên phản hồi.

Nếu tôi sử dụng ứng dụng khách dịch vụ web chơi trực tiếp thông qua bộ điều khiển, các cuộc gọi này có thể không đồng bộ, tốt hơn cách chúng ta làm bây giờ (chặn). Tuy nhiên, tôi không rõ ràng về cách chính xác này sẽ hành xử dưới tải nặng. Liệu concurrency/thread-management có được để lại cho máy chủ Netty cơ bản không? Tôi có cách nào để điều chỉnh nó không?

Một giải pháp thay thế là sử dụng hệ thống diễn viên Akka từ bộ điều khiển, nơi tôi có thể kiểm soát chính sách định tuyến, kích thước hồ bơi, khả năng chịu lỗi ... Nếu tôi sử dụng phương pháp này, bạn vẫn nên sử dụng async WS của Play khách hàng? Nếu vậy, cách tiếp cận này (của sáng tác tương lai?) Có phải là mô hình được đề nghị không?

Một yếu tố khác khiến cho cách tiếp cận của Akka trở nên hấp dẫn hơn là ứng dụng này sẽ có nhiều trách nhiệm khác, vì vậy chúng tôi có thể kiểm soát/điều chỉnh các tài nguyên được phép cho ActorSystem này và giảm rủi ro của toàn bộ ứng dụng bị kéo xuống Dịch vụ SOAP.

Trả lời

5

Hai tùy chọn bạn đang định chi tiết sẽ làm việc:

  • Sử dụng API chơi cho WS để xử lý yêu cầu/phản ứng không đồng bộ
  • Sử dụng Akka để làm điều tương tự và quản lý cuộc gọi WS của bạn đồng bộ diễn viên của bạn

Đầu tiên, không có giải pháp đúng hay sai.

Phát! Các giải pháp API WS ghép nối dễ dàng nhất để thực hiện và kiểm tra. Nhiều người trong cộng đồng dựa vào nó (tôi làm).

Mặt khác, ngay cả khi giải pháp Akka đường nối nặng hơn (không nhiều) để thiết lập, nó mang đến cho bạn sự linh hoạt hơn trong tương lai. Bạn có thể chỉ cần sử dụng và làm việc với các lời hứa cho tính toán không đồng bộ. Ngoài ra còn có implicit conversions between play promises and akka future. Cuối cùng, để theo dõi các diễn viên của bạn, bạn có thể xem Typesafe console.

Nếu điều lớn là biểu diễn, tối ưu hóa sớm thường dẫn đến sự phức tạp hơn (và không cần thiết). Theo như tôi lo ngại, tôi sẽ bắt đầu với API WS và nếu được yêu cầu trong tương lai, hãy chuyển sang giải pháp Akka.

+2

Thực ra tùy chọn thứ hai mà tôi đã tự hỏi là một loại không đồng bộ đôi. Các diễn viên có thể vẫn sử dụng WS API (hoặc httplient không đồng bộ ning cơ bản) không? – anchormath

+0

Bạn lấy lại lời hứa với các yêu cầu WS. Các diễn viên vẫn có thể sử dụng nó. – iwalktheline

Các vấn đề liên quan