-
Notifications
You must be signed in to change notification settings - Fork 0
FAQ
Use Rambla when the state changes more quickly than the UI can show it, and when the intermediate values have no importance. Examples are market data, telemetry, dashboards, monitor applications, game state and applications that a WebSocket drives. Refer to Philosophy.
- Forms and settings pages. The values change one time. Rambla gives only additional cost.
- Streams in which each value has importance, such as trades, fills and log lines. Rambla removes the intermediate values. Use a queue or a stream.
- A flush that touches thousands of different properties one time each. Rambla cannot coalesce these mutations. Refer to Benchmarks.
No. Use Rambla together with them. Use CommunityToolkit.Mvvm for
ObservableObject, ReactiveUI for reactive composition, and DynamicData for
change sets. Rambla does only the boundary between the background threads and the
UI at a high update rate.
No. One Rambla setter is more slow, because it adds synchronization and it marks the property. Rambla is more quick in total, because it does not raise the notifications that the UI cannot show. If the subscriber does no work, the usual setter is more quick. Refer to Benchmarks.
BeginUpdate() gives notification coherence. No observer sees a batch in a
partial condition. It does not give state atomicity. A reader on a different
thread can see a new Bid together with an old Ask before the batch closes.
For state atomicity, publish an immutable object. Refer to
Core Semantics.
The order is not specified. Rambla notifies each dirty property one time in each flush. Do not write code that needs a specific order.
WPF (Rambla.Wpf) and Avalonia (Rambla.Avalonia). The core has no UI framework,
thus an adapter is only an IStateScheduler. An adapter for WinUI is not
available. Refer to the Roadmap.
The core and the Avalonia adapter are netstandard2.0. Thus they operate with
many versions of .NET. The WPF adapter is net10.0-windows. The repository builds
with .NET 10.
Put your scheduler in a ThrottlingStateScheduler, or call
InstallThrottledAsDefault. RamblaOptions.Default.MaxRefreshRate gives the
default limit of 60 flushes in one second. Refer to Schedulers.
It makes one observable property for each field that has the attribute. The
property uses SetField. The generator removes the first underscore and makes
the first letter uppercase (_bid gives Bid). It makes no other member. V1 has
no [DependsOn] attribute and no validation. The errors RMB001 to RMB005 show
incorrect use.
It makes an AsyncStateCommand, a busy property, an error property and a cancel
command. The errors RMB006 to RMB009 show incorrect use. Refer to
Async Commands.
No. A read gives the visible contents, which agree with the notifications that Rambla raised. The new item is in the collection after the next flush. Refer to Collections.
No. A session is an observer. The notification order, the coalescing, the coherence and the error behavior stay the same. Refer to Diagnostics.
Rambla — state for real-time .NET desktop applications · MIT · github.com/nicoseijas/Rambla · This wiki follows ASD-STE100.
Use Rambla
Reference