Skip to content

APIs are synchronous #19

@sergeybykov

Description

@sergeybykov

The main issue I see with the APIs is that they are synchronous - methods return void. This makes it pretty much incompatible with IO operations, distributed computing, and limits the applicability to in memory operations only. Unless you put queues between every producer and consumer, I don't understand how you can achieve "asynchronously passing elements between components" with synchronous APIs.

I understand that you ported a solution that was defined for the environments with poor support for async operations. But .NET happened to have the powerful async/await constructs that enable truly asynchronous reactive programming.

For comparison, in Orleans Streams similar APIs are completely async - http://dotnet.github.io/orleans/Orleans-Streams/. In fact, the whole programming model of Orleans is based on async methods. This enables building of efficient high throughput applications that can make IO and remote calls without blocking threads, so that the latency of those calls doesn't impact throughput.

Please correct me if I misunderstood something from reading just the readme.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions