My project is split into a service tier project and an implementation tier project. Both are written in C# using Visual Studio 2010. The service tier accepts a request object and passes it to the implementation tier. The implementation tier manipulates this object and passes it to an external web service. The result of the external web service is then passed back to a client via the implementation and service tiers.

The same request and response objects are used across each tier.

Is there a way I can use a shared reference across both tiers, and use the same reference to communicate with the external web service? If not, what would be the neatest approach?

I'd prefer to avoid having to maintain project specific service references and instead use a single data contract dll. When I use this approach however, I find I need to use Webservice.Request rather than DataContract.Request when communicating with the external web service method.