The front end is a access layer assembly, which in turn is consumed by a Smart Client app.
The access layer handles the data access to and from the web service. It also handles most of the validation, so that very little logic is handled by the UI, incase we ever decide to re-write it as a web app.
When I say Manually tweaked, I mean, we have to go into the reference.cs file for the Web Reference, and fully qualify the custom object.
The proxy generator writes the proxy like this:
public CustomClassName someMethod(yada...)
and we change it to:
public RootNamespace.Framework.Common.CustomClassname someMethod(yada...)
Or when we do generics, it writes:
public OurGenericNameOfDecimal otherMethod(yada...)
which we have to change to:
public RootNamespace.Framework.Common.OurGenericName<Decimal> otherMethod(yada...)
A find...replace works... but if we do find...replace...all this breaks other generated stuff, so we only do find...replace for the web method signatures and returns. Very time consuming.