-
Notifications
You must be signed in to change notification settings - Fork 19
Features
Dave Sexton edited this page Jul 23, 2016
·
9 revisions
- Works immediately with pre-built transport providers.
- TCP with binary serialization is provided by the optional Qactive.Providers.Tcp package on NuGet.
- Extensible so that any kind of custom transport can be used, although it's not trivial. The serialization mechanism can also be overridden, and it's surprisingly difficult to get right as well. It generally requires an expression visitor to rewrite compiler-generated methods and closures, and object references must be preserved. For this reason, I recommend using the built-in providers and serialization support.
- Simple server factory methods for hosting a Qbservable service.
- Supports hosting any
IObservable<T>
query as a service (hot or cold). - Supports hosting any
IQbservable<T>
query as a service.
- Supports hosting any
- Simple client factory methods for acquiring a Qbservable service.
- You must only specify the end point address and the expected return type. The result is an
IQbservable<T>
that you can query andSubscribe
. - All Qbservable Rx operators are supported.
- You must only specify the end point address and the expected return type. The result is an
- Automatically serialized Expression trees.
- Dynamic expressions and debug info expressions are not supported. All other types of expressions are supported.
- Automatically serialized anonymous types.
- Immediate evaluation of local members and closures (optional; default behavior)
- Compiler-generated methods are executed locally and replaced with their return values before the expression is transmitted to the server. This includes iterator blocks, which are serialized as
List<T>
. - Evaluation assumes that local methods are never executed for their side-effects. Actions (void-returning methods) cause an exception. Do not depend upon the order in which members are invoked.
- Compiler-generated methods are executed locally and replaced with their return values before the expression is transmitted to the server. This includes iterator blocks, which are serialized as
- Full duplex communication (optional; default behavior for
IObservable<T>
closures)- Must opt-in on server.
- May opt-in on client for full duplex communication of all local members; automatic for
IObservable<T>
closures. - Duplex communication automatically supports iterator blocks.
- Designed with extensibility in mind; e.g., supports custom Qbservable service providers, protocols and sinks.
- Extensive tracing for logging and diagnostics.