Ví dụ điển hình về Sử dụng tiện ích mở rộng phản ứng [đã đóng]


81

Tôi hiểu những điều cơ bản về Rx. Nơi tôi đang đấu tranh là làm thế nào bạn thực sự sẽ sử dụng điều này ngoài các ví dụ học thuật? Một số tình huống phổ biến, đơn giản trong thế giới thực trong đó Rx là giải pháp tốt hơn nhiều so với những gì chúng ta có ngày nay trong .NET là gì?


3
Tôi đã viết bản demo tìm kiếm Bing trong WPF với Rx: blog.andrei.rinea.ro/2013/06/01/…
Andrei Rînea

2
Tôi trả lời chính xác câu hỏi này trong một loạt các bài viết trên blog của tôi: rehansaeed.co.uk/reactive-extensions-part1-replacing-events
Muhammad Rehan Saeed

1
Vui lòng xem tại github.com/AdaptiveConsults/ReactiveTraderCloud . Tôi nghĩ đó là một ví dụ điển hình vì họ đã sử dụng rất nhiều Reactive Extension cho mẫu của họ. Chúc mừng!
thangchung 29/12/16

Câu trả lời:


40

Để có một loạt các ví dụ điển hình, hãy xem wiki 101 Mẫu Rx


13
Cảm ơn các liên kết. Có một số mẫu khá tốt ở đó. Vẫn không hoàn toàn nhìn thấy người tát đầu đó - "ồ đó là vấn đề kinh điển mà mẫu này giải quyết". Sau đó, một lần nữa, chỉ có thể là tôi chậm trong việc tiếp thu.
Keith Hill,

9
Hem ... mặc dù có điểm cao, câu trả lời này vẫn là "liên kết chỉ". Bạn có thể làm thịt nó ra một chút?
tưng bừng

họ không phải là học thuật ?
Lei Yang,

28

Rx cho phép bạn viết mã sắp xếp các sự kiện đồng thời với nhau. Nếu bạn đã từng sử dụng TPL (tức là Tác vụ), sau đó phải thực hiện các thao tác lộn ngược phức tạp để cố gắng ContinueWith hoặc WaitAll vào những điều phù hợp, Rx là dành cho bạn.

Ví dụ: quy trình làm việc "Đối với mỗi mục trong mảng này, hãy gọi một dịch vụ web và khi tất cả các yêu cầu đó quay lại, hãy làm điều gì đó khác. Nếu bất kỳ mục nào trong số đó không thành công, hãy thất bại toàn bộ".

Tiết lộ, Shameless cắm phía trước: Cuốn sách mà Jesse Liberty và tôi đã viết về Rx được thiết kế để giải quyết chính xác câu hỏi này, "Làm cách nào để sử dụng Rx trong công việc hàng ngày?"; "Tôi có thể làm gì với cái này?"


Điều này chỉ nói rõ tôi cần hay muốn Rx
frostymarvelous

25

Trước hết, IObservable là một sự kiện . Vì vậy, ở bất kỳ nơi nào bạn sử dụng các sự kiện trong nội bộ, bạn có thể sử dụng IObservable - và nếu sau này bạn cần áp dụng LINQ cho sự kiện này, bạn có thể thực hiện mà không cần cấu trúc lại.

Thứ hai, RX phù hợp cho mọi tình huống khi bạn cần chạy mã không đồng bộ . Ví dụ: gọi một dịch vụ web hoặc tải một hình ảnh lớn.

Nhưng khi nó thực sự bắt đầu tỏa sáng - nếu chương trình của bạn đạt đến một số "khối lượng quan trọng" của việc sử dụng IObservable và bạn bắt đầu kết hợp các thiết bị quan sát khác nhau, bạn sẽ ngạc nhiên một số nhiệm vụ trở nên dễ dàng như thế nào .


5
  • Phép đo thiết bị
  • Dữ liệu đến qua một bus tin nhắn

Trong cả hai trường hợp bây giờ, cách tiêu chuẩn để nhận dữ liệu là thông qua các sự kiện, nhưng nếu tôi muốn cú pháp hoặc thành phần truy vấn, thì RX sẽ cung cấp cho tôi ở những nơi không có sự kiện.


2

Rx rất chung chung nên nó có tiện ích không giới hạn, giống như IEnumerable / IEnumerator có tiện ích không giới hạn. IE kéo giá trị, IO đẩy giá trị.

Foreach là một ví dụ cụ thể về nơi IEnumerables có ích, nhưng điều đó không giải thích được IEnumerable, hay lợi nhuận hay bất cứ thứ gì. Tương tự với Rx.

Việc có thể xem xét thứ gì đó từ quan điểm kéo hoặc quan điểm đẩy và có thể kiểm soát hướng hoặc phương tiện, là rất mạnh mẽ, bởi vì giờ đây bạn có thể đẩy và kéo các tính toán xung quanh theo ý muốn, sử dụng truy vấn LINQ toán tử "miễn phí", chống lại IO, vì nó là phép toán kép của IE.


0

Tôi vừa có cái nhìn đầu tiên về Rx, nhưng một dự án thú vị mà tôi sẽ sử dụng nó là tạo tiện ích Silverlight hiển thị hoạt động trong ứng dụng web ASP.NET MVC của chúng tôi (phương thức hành động nào được gọi, người dùng nào, v.v.) . Có vẻ như Rx có thể giúp rất nhiều thứ trong dự án này, chẳng hạn như quản lý đồng thời và Điều chỉnh.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.