Our goal was to make the WinClient and Silverlight business objects and APIs as close to each other as possible. With that said, there are necessarily a few differences between the environments.
One of the biggest differences is that all network access is asynchronous in Silverlight. This means that you will need to use asynchronous queries and saves when working with the persistent data store. There are a few things in DevForce that can make this easier.
First, you can use the cache-then-compute pattern to bring all of the necessary objects into cache first, and then execute a fully synchronous block of logic against the cache using the CacheOnly QueryStrategy.
Second, to avoid the headache of managing event handlers for all the asynchronous tasks, DevForce provides the AsyncSerialTask and AsyncParallelTask classes that will take multiple tasks and automatically execute them in serial or parallel for you.
When designed correctly, you can share all of your business objects and business logic code between your Silverlight and your desktop/smart client application. On the UI side, you can share a bulk of the code if you limit yourself to the Silverlight subset of the WPF API.
The ModelExplorer and PrismExplorer also have example patterns and practices for building a Silverlight application.