I’m doing a little research in developing a simple socket server that will run as a windows service. I’m going to write this in C#, but I’ve been made aware that .Net sockets are slllooooowwwww. For the initial roll out using the .Net Networking classes will be fine, but I’m wondering if anyone has experience with a high performance (and hopefully free) socket library. I’m thinking probably something written in c++ that I can use as a com object in .net.
I’ve used indy sockets before, but it doesn’t look like there is any active development going on with the project anymore. I’ve done some googling and I’ve found a few libraries, but I was hoping to get feedback from someone who has actually used a socket library with good success.
Any help appreciated. Thanks.
I would revisit your initial assumption – I don’t believe it’s accurate.
In my experience, the overhead of using .NET’s framework socket libraries is not high – they perform quite well. The main cause of very slow socket code, that I’ve seen, is when people try to port non-C# code into C# directly, in particular, trying to port synchronous C++ socket code. The sockets in .NET’s BCL are all designed to be used asynchronously. If you try to force them into a synchronous model, you’ll end up adding quite a bit of blocking, which definitely causes very slow code.
Try using the socket classes the way they were designed – I think you’ll be very happy with the performance, as well as the usability.