The objective of the GPO client-server design is to ensure that the performance
is linearly related to the requests made of the server.
To this end the client-server protocol is connectionless, using UDP datagrams over IP.
Thus there is no overhead entailed by several thousand users concurrently "connected" to the same server. Any apparent degradation in performance will be due to the amount of requests made of the server rather than the number of users.
The IObjectManager implementation on the client side is supplied by the
ClientObjectManager, and by default utilises a relatively large object cache
to minimise data requests to the server.
High-level transaction isolation ensures that data is consistent.
When a new transaction is begun, the cache is cleared and any user retained references will cause a state synchronization with the server to update any modified objects.
A forced garbage collect and finalization step minimizes the amount of objects to be synchronized.
In practise this means that programmers may retain references to any object they choose knowing that at the beginning of a new transaction the object will be updated if required.