3 ms·
I just finished re-writing a wcf service using a home made async socket server over TCP. WCF is just way to complex to get right. By default, out of the box i
by pragmatic 16y ago
I just finished re-writing a wcf service using a home made async socket server over TCP. WCF is just way to complex to get right. By default, out of the box is it scaled down and slow. You have to do all kinds of config magic to get it to perform or send large amounts of data.
It took me a couple days of coding to have an async socket server (using .net async IO) up and running. It was so much easier.
Contrast that with several weeks spent learning WCF and then searching through blog posts to find the correct config example to handle problem after problem.
Caveat: I don't need to switch between different providers, manage security, etc, etc which WCF can do out of the box. I just needed a way to get data from a long running server to a web page. I just wanted some simple IPC, which WCF is not.
I need to write up a full post-mortem on this at some point, but I just needed to get that off my chest.
- MichaelGG 16y agoI know what you're talking about. WCF config doesn't come across as easy - sometimes you just wanna say "listen on port 1234 for these messages". The complex capabilities combined with some stupid default settings makes it much more daunting than it should be. That said, after you get a few basics down, it really is rather straightforward. The gain for me is not having to manually write code to deal with security/encoding/serialization/exceptions. I mean, you define an interface, slap some attributes on, add 5 lines of config, another 5 to start the server, and that's pretty much it.
- runevault 16y agoYeah the impression I've gotten is unless you need most/all of the tools WCF supplies you shouldn't use it because it's so painful. And how often do you really need a majority of the stuff it supplies?
- mythz 16y agoYou should consider the powerful messaging features in Redis if you want fast IPC. Here's an article with an example using my C# Redis Client: https://github.com/ServiceStack/ServiceStack.Redis/wiki/RedisPubSub https://github.com/ServiceStack/ServiceStack.Redis/wiki/Redi...