Currently I am currently designing an n-tier system (Win32 client, MTS/DCOM
& RDBMS). From what I can determine there are two approaches - build components
that wrap up all the functionality of business objects and data objects and
expose an API to the client (all components running on the server) OR bring
the business object layer to the client (and hence exposing the objects and
their attributes etc) and leave the data objects on the server with basic
datatypes being passed between the two (to overcome DCOM marshalling of parameters
with many network roundtrips).

The client and business/data objects will all be written using VB6.

I have used the component exposing API and maintaining state on the server
with a thin client (browser based) before and it was quite good, but was
limited in that we could not manipulate the business objects at the client
(just basic datatypes returned). Someone has suggested moving the object
layer to the front end to give more OO benefit when manipulating data for
the GUI.

All thoughts welcomed!