3

2 years ago, I wrote a RTSP communication stack with server, listener and client implementations. It worked asynchronous using the asynchronous event pattern (EAP, Begin/End-callbacks), was fast and more or less robust. However, it was a real PITA to design the socket both scalable as well as stable with such an 'open' protocol (look, the protocol looks like this, but if this happens, a message may look like this and oh yeah, the server can send requests to the client when this and this...)

Because I (obviously!) did so well, I was honored with the task of writing a SIP communication stack. And you know what? The protocol looks nearly the same, but has hundreds of other unspecified or open rules (or exceptions).

Before I quit my job and apply somewhere as a gardener, I would like to ask if any of you guys know a mature and stable socket/network framework that fills (hopefully most of) those requirements:

  • Asynchronous using the task-based pattern (TAP, async await..)
  • Robust (a server/client shouldn't crash when the socket ungracefully aborts)
  • Adapting DI patterns
  • Has packet analysis features

I don't mind implementing all kinds of protocols on top of it myself, but I need a robust foundation. The System.Net.Sockets namespace is just an inconsistent, legacy and compatibility crippled piece of crap.

Thanks for your time!

Acrotygma
  • 2,531
  • 3
  • 27
  • 54
  • Would SignalR work for what you are describing? http://signalr.net/ – Zach M. Feb 27 '14 at 21:45
  • There are many *different* concepts in play here - even if this wasn't "asking for an existing library", it would be too broad. – user2864740 Feb 27 '14 at 21:46
  • @ZachM Isn't SignalR just a javascript-aligned WebSocket framework? Or does it have low level application protocol features? – Acrotygma Feb 27 '14 at 21:47
  • @user2864740 Coming to application layer protocols like RTSP, RTP, SIP, HTTP.. no. They all work in the same or similar manner, just differ in methods and certain functionalities. – Acrotygma Feb 27 '14 at 21:49
  • 1
    I'm the author of Griffin.Networking (http://github.com/jgauffin/griffin.networking). My new stack is quite stable: https://github.com/jgauffin/Griffin.Framework/tree/master/src/Griffin.Framework/Griffin.Core/Net, it works the same as old one but more robust. Read more here: http://blog.gauffin.org/tag/griffin-networking/ – jgauffin Feb 27 '14 at 21:53
  • @Acrotygma Yeh, I don't think SignalR is what you are looking for at all. It is certainly not a streaming protocol. See this for example: http://stackoverflow.com/questions/13016894/it-is-possible-to-stream-video-with-signalr – AaronLS Feb 27 '14 at 21:57
  • @jgauffin Wow! Your stack is absolutely great. I also looked at SuperSocket, but their network stack is only for the server part. Thank you! – Acrotygma Feb 28 '14 at 11:43
  • @AaronLS Except RTP, none of them are streaming, but signaling protocols. But on a lower layer, they all are either UDP or TCP hence run over a socket. :) – Acrotygma Feb 28 '14 at 11:44
  • @Acrotygma You mentioned RTSP as one of the capabilities you needed, and I was just letting you know you can rule SignalR out for that reason. SignalR is not low enough level to serve your needs AFAI can tell. But you are welcome to pursue that path if you want. – AaronLS Feb 28 '14 at 20:29

0 Answers0