I've got a couple mobile projects that need to provide communications services to a centralized server. Over the past year or so, I've been getting to know WCF a little better and the more I learn, the more I think this is the one by far that in all the latest Microsoft technologies, that you should invest your time in learning. Saying that, it would seem logical to think about using WCF as the technology to communicate on our mobile devices. I'm not sure the answer is clear to me yet on this one.
First, what do I LOVE about WCF, if I had to sum it up, I would say three things,
- The formality of defining and implementing contacts for our communications
- The ability to configure and for the most part not worry about the transport details when coding your service
- The ability to do duplex messaging, I still need to spend some time to see how this works under the hood from a scalability implication, but the concept in general seems powerful.
Saying that, we can make the following assumptions about the current state of mobile devices and applications:
- In most cases the device is going to be a client on the client/server side of the equation
- Our computing horsepower just isn't the same
- Based upon my experience in both worlds (desktop/web AND mobile devices) I would say you can crank out 3-5 lines of desktop/web code in the same time it takes to get one line of mobile code into production
- Code on mobile devices can't easily be updated so it really has to be right the first time
- As good as our mobile platforms are these days, there are still a few quirks that are beyond our control and device specific
Therefore, most of the benefits of going with WCF really aren't that great in a mobile device. And if a technology really doesn't provide much value, it may make more sense to keep it simplest technology with the fewest moving parts. I think as with anything new, one needs to implement and analyze the results. As I mentioned earlier, I don't have answers here yet, but wanted to start capturing thoughts.