I'm trying to expose a fairly complicated class library as a service, I think WCF, but am pretty green and am struggling to understand what I can and cannot do architecturally. If my clients are to be .NET as well (let's say WinForms, WPF, and/or ASP.NET MVC3), it seems like overkill to write a bunch of contracts to re-expose public classes, or to serialize complex objects. It's hard to know from the many tutorials out there, because so many of them only work with value/primitive types.
Is WCF the way to go? If so, which flavor is the simplest to implement if the class library will manage all aspects of data and expose only objects?
A simple analogy: a HumanBody
class that needed to be exposed as a service allowing for multiple users, always on, etc. If I have a .NET Applause client, and I want to do something like
ServiceName.HumanBody myBody = new HumanBody();
myBody.Parts.Hands.Clap();
I'd have to turn those objects into interfaces and write a bunch of wrapper methods, but the objects are "complete" as they exist--this is why it feels like overkill to me. (I know I'm not thinking about this correctly--that's the reason for the question. If these questions are too vague, I will refine on comment/answer.)
(Also, please note that I am not asking how to accomplish this practically--there are many versions of that question already on SO, with a couple notable good answers here and here. There's also a very useful tutorial on how to build your own WCF architecture without the VS auto-added clutter here. I am working through the construction on my own.)