2016-07-18 21 views
5

Tôi đã thực hiện nghiên cứu về điều này và tôi biết rằng RXJava đang sử dụng mẫu có thể quan sát được và Bolts dựa vào một người thực thi. Framework nào sẽ là tốt cho việc xử lý các nhiệm vụ cần phải được thực hiện theo trình tự?sự khác biệt giữa RxJava và Bu lông là gì?

Tôi đã nghe nói về việc sử dụng singleExecutors, hàng đợi, chuỗi asynctask và hai khung công tác này. Tôi đã nhìn thấy nhiều người sử dụng bu lông so với rxjava nhưng tôi tò mò muốn nghe về những trải nghiệm của mọi người giữa hai người.

Cảm ơn!

Trả lời

13

Tôi đã sử dụng cả hai trong các dự án khác nhau và đã thực hiện di chuyển từ Bu lông sang RxJava. Câu trả lời đơn giản cho câu hỏi của bạn

Điều gì sẽ là tốt cho việc xử lý các tác vụ cần thực hiện theo trình tự?

Có phải bạn có thể dễ dàng sử dụng cả hai khuôn khổ để thực hiện việc này. Cả hai đều:

  • Allow nhiệm vụ cần xích cái khác
  • Enable người thi hành, vv để được chỉ định cho mỗi công việc
  • Allow lỗi để được chụp và xử lý tại một thời điểm thuận tiện

Tuy nhiên đó là nơi mà chức năng Bolts kết thúc khá nhiều trong khi RxJava chỉ tiếp tục cho. Sức mạnh thực sự của RxJava nằm trong các toán tử của nó, trong số những thứ khác cho phép bạn chuyển đổi, kết hợp dữ liệu bộ lọc &.

Đường cong học tập cho cả hai khung là dốc, RxJava dốc hơn ... nhưng nó mạnh hơn đáng kể.

Là một sang một bên đếm phương pháp cho hai thư viện là

RxJava - 4605 
Bolts - 479 
+0

Cảm ơn !! nó là một sự chuyển đổi dễ dàng từ bu lông sang rxjava? bất kỳ cạm bẫy tôi có thể chạy vào? – reidisaki

+0

Có rất nhiều cạm bẫy bạn sẽ gặp phải trong rx-java. Nó rất mạnh mẽ và biểu cảm. Cá nhân toán tử 'cache' không làm chính xác những gì tôi mong đợi. Ngoài ra, thật khó để viết 'Nhà quan sát 'và' Nhà điều hành 'tôn trọng áp lực ngược. – Andy

7

Jahnold đã đưa ra một tổng quan tuyệt vời và tôi chỉ muốn thêm một chút biết thêm:

Trước hết, cả hai Bu lông và RxJava là Triển khai Java của các mô hình lập trình không đồng bộ của Microsoft: Bu lông = Thư viện song song nhiệm vụ và RxJava = Phần mở rộng phản ứng. Cả hai đều cho phép chuỗi và chuyển đổi chuỗi rất dễ dàng (nền < -> chủ đề chính).

Cách tốt nhất để so sánh Bu lông/TPL với RxJava/Rx là Bu lông dành cho các giá trị đơn không đồng bộ (lời hứa) và RxJava dành cho danh sách giá trị không đồng bộ (luồng).

  • Vì vậy, Bu lông sẽ tốt cho công việc nền mà trả về một giá trị duy nhất chẳng hạn như yêu cầu mạng chung, đọc file ra đĩa, vv và
  • RxJava sẽ là tốt cho những thứ mà trả về nhiều giá trị như đăng ký tọa độ GPS, onClick sự kiện, vv

vì vậy, để trả lời câu hỏi của bạn tốt hơn:

khuôn khổ Điều gì sẽ là tốt để xử lý các nhiệm vụ tha t cần phải được thực hiện theo trình tự?

Tôi phải hỏi một câu hỏi khác: bạn có dự định cho công việc của bạn là kết quả đơn lẻ hay nhiều kết quả không?

+0

nó sẽ là kết quả duy nhất cho một số yêu cầu và nhiều cho người khác ... xin lỗi tôi biết rằng không giúp đỡ. – reidisaki

+0

Không có lý do gì khiến bạn không thể sử dụng cả hai! –

+0

@GrantlandChew Mặc dù câu trả lời của bạn không thiên vị đối với Bu lông, nhưng sẽ tốt hơn nếu viết một dòng tuyên bố từ chối trách nhiệm. (Rất tốt trả lời btw. Tôi đã cùng nghi ngờ và sẽ đi với Bu lông). –

0

Hai thư viện này giải quyết hai vấn đề khác nhau.

Bu lông

Bu lông đơn giản hoá lập trình không đồng bộ bằng cách minh bạch đẩy mã để một sợi nền. Bu lông cũng dành một lượng lớn nỗ lực cố gắng giảm bớt việc lồng mã khó coi tạo ra một kim tự tháp lồng nhau như định dạng.

Do đó, nếu bạn đang tìm cách giải quyết các vấn đề không đồng bộ (đa luồng), thì Bolts là một trong các giải pháp mạnh mẽ hơn. Bu lông cũng có hiệu quả trong việc giảm mã làm tổ và gọi lại bản mẫu và có lẽ là một giải pháp tuyệt vời cho việc cố gắng giảm các vấn đề gọi lại.

RxJava

RxJava được thiết kế đặc biệt để hỗ trợ một mô hình lập trình phản ứng. Lập trình phản ứng là một thay thế cho lập trình bắt buộc trong Java. Bạn có thể chọn chuyển sang mô hình lập trình phản ứng vì nhiều lý do - trong đó có nhiều lý do. Nếu bạn muốn di trú mã của mình sang mô hình lập trình phản ứng, hoặc bạn muốn sử dụng phản ứng trong các dự án greenfield của bạn, hãy xem xét sử dụng RxJava - tiêu chuẩn phản ứng thực tế trong thế giới Java.

Phản ứng cũng giải quyết được vấn đề lập trình không đồng bộ, cũng như giảm bớt bản mẫu gọi lại qua generics. Nhưng nó không nên được sử dụng chỉ để giải quyết những vấn đề đó. Ví dụ, khả năng Bolts để giải quyết cấu trúc mã kim tự tháp lồng nhau làm cho nó trở thành một giải pháp khả thi hơn cho lập trình không đồng bộ. Mặt khác, nếu bạn đang sử dụng phản ứng thông qua RxJava, các vấn đề không đồng bộ đã được giải quyết, do đó, không có điểm đưa vào Bu lông.

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