Skip to content
This repository was archived by the owner on Dec 21, 2022. It is now read-only.
This repository was archived by the owner on Dec 21, 2022. It is now read-only.

Determine xPC Options #16

Description

@Rjvs

Message Passing / Communications Queues

Use cases

Use cases separated by distance/medium or route.

Threaded “inproc" Queue

  • i.e. between threads within a single application
  • Not sure we need anything beyond what C# provides (but we need .Net 2 & 6)

Inter-process IPC

  • i.e. between process within a single machine
  • Lots of data, zero/low-allocation provides significant performance
  • Available across multiple languages (wider the better)
  • Lightweight, single-threaded library
  • Authentication of some kind (might be at application level)
  • Critical use. e.g. Transformer/Pipeline, Pipeline/xSpace

Cluster Procedure Call aka Local RPC

  • i.e. between machines within a local network
  • Shouldn’t have to deal with firewalls
  • Encryption option necessary
  • Optimised for low latency over reliable network
  • Would be beneficial. e.g. Transformer/Pipeline, Pipeline/xSpace

RPC

  • i.e. between machines, over the Internet
  • Lots of data but have to negotiate firewalls and unreliable networks
  • Encryption mandatory
  • Heavier protocol weight may be required to provide connectivity and deal with problems
  • Critical use. e.g. Pipeline/SpaceTimeVault

Event Broker (Game Server)

  • i.e. communication between clients, moderated by server
  • Broker receives game state and forwards to interested clients
  • Requires QoS, data packing & optimisation
  • Must negotiate firewalls and unreliable networks
  • Encryption capability mandatory
  • Must not require TCP pseudo-reliable network; drop slow packets and incorporate pertinent information in new packets (if it’s still valid and important)
  • Critical use.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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