Add fast TCP endpoint
Add the most efficient remote endpoint for consuming ServiceStack services.
Ideas: use https://github.com/nanomsg/nanomsg (by author and successor to ZeroMQ in C).
Advantages: Abstracts IPC/TPC/InMemory for picking the most efficient transport. Can easily interoperate with other NanoMsg clients on other platforms. C is nice to embed than C++.
Disadvantages: Still in Alpha, unclear when it will be stable/safe to use. Still native, requires effort to use 32/64 bit architectures and cross-platform on Mono.
Alternative: Build endpoint on raw TCP sockets in C# using something like Redis wire protocol for efficient transfer of message payloads. Could imitate operation on redis-server for interoperability with other redis clients or mask itself as a LUA operation for greater flexibility.
gRPC offers a number of efficient communication channels over a persistent multi-plexed HTTP/2 connection using compact/efficient protocol buffers which would superseed most of the value a custom TCP channel would offer now that ServiceStack gRPC has been released:
https://docs.servicestack.net/grpc
C# / F# / VB.NET Apps can also take advantage of our smart generic service clients to offer the simplest and richest development UX:
https://docs.servicestack.net/grpc-generic
-
Scott Mackay commented
nanomsg possibly dead - http://sealedabstract.com/rants/nanomsg-postmortem-and-other-stories/
Still would love to see a fast TCP endpoint for SS so perhaps RESP would be a good fit
http://redis.io/topics/protocol -
Bennie Kloosteman commented
Something like binaryXML net.tcp in WCF is ideal because unlike protobuffers it is not tightly coupled / versioned.