High performance TCP server in C#

I am an experienced C# developer, but I have not developed a TCP server application so far. Now I have to develop a highly scalable and high performance server that can handle at least 5-10 thousand concurrent connections: getting -raw byte- data via GPRS from GPS devices.

A common communication process should look like this:

  • GPS device initiates a connection to my server
  • my server answers if I want to get data
  • device send GPS data
  • my server sends report to the device about getting it (sg like checksum)
  • getting new data from GPS, reportm and this happens again and again
  • later GPS DEVICE closes the connection

So, in my server I need

  • trace connected/active clients
  • to close any client from server side
  • catch the event, when a device closes the connection
  • get byte data
  • send data to clients

I started to read about this topic over the internet, but it seems to be a nightmare for me. There are a lot of ways, but I could not find out which is the best.

Async socket methods seems the best for me, but writing code in this async style is terrible and not easy to debug.

So my question is: which do you think the best way to implement a high performance TCP server in C#? Do you know any good open source component to do this? (I tried several ones, but I could not find a good one.)

44
задан Cœur 28 July 2017 в 03:03
поделиться