I have been developing in MS technologies longer than I remember at this stage. When .NET arrived on the scene, I thought that they hit the nail on the head, and with each iteration and version I thought that their technologies were becoming stronger and stronger and were looking forward to every release.
However, working with WCF last year, I have to say that it is very difficult for me to work with the technology and understand it. Initially, this is pretty attractive, but when you start to delve into this, the configuration is a nightmare that should redefine the behavior for message sizes, the number of objects contained in messages, the complexity of the security model, utilization of proxy servers on failure, and finally returning to the definition interfaces in code, not in XML.
It just doesn't work out of the box, and I think this should happen. We found all of the above problems, testing ourselves or when our products were in place.
I understand the meaning of this, but, of course, they could find a simpler implementation mechanism.
I guess I ask
- Am I looking at WCF incorrectly?
- What strengths does this have alternatives?
- Under what circumstances should I choose to use WCF?
OK. People, sorry for the delay in the answer, the work has an unpleasant habit sometimes interfere :)
Some clarifications My main point of paint with WCF, I suppose, falls into the following areas While it works out of the box, your left is with some serious surprises under the hood. As stated above, the main things are limited until they are redefined.
- The size of the line that can be transmitted cannot exceed 8K
- The number of objects that can be transmitted in one message is limited
- Proxies do not automatically recover from crashes
- The scope of the configuration, while there is a good thing, but everyone understands and what to use what, and under what circumstances, can be difficult to understand. Especially when deploying software on a site with various security requirements, etc. When we talk about configuration, we had to hide many of them in the internal database, since security and network users in place tried to change the situation in the configuration files without understanding it.
- Saving the configuration of interfaces in code, rather than moving to explicitly defined interfaces in XML that can be published and used by almost everyone. I know that we can export XML from the assembly, but it is full of garbage, and some code generators overwhelmed it.
I know that the world is moving on, I have moved to the last several times (the 22-year-old scheme I was developing) and I am actively using WCF, so don’t get me wrong, I understand what it is for and where it heads.
I just think that there should be simpler configuration / deployment options, easier setup, and better management for the configuration (perhaps the SQL configuration provider, not just the web.config / app.config files).