I have some business objects and some very similar corresponding data contract objects for getting data across the wire via WCF service.

What mechanism should I use to get populated data contract objects from business objects?

In an ideal world, should the data contract layer know about the business layer?

or

Should the business layer know about the data contract layer?

or

Should there be another mapping layer that has static methods like GetDataContractFromBusinessObject?