A key point in the software design is to support different types of client programs running on different devices and operating systems. The list so far include
- Win32 Native (Windows)
- .NET CLR(Windows and some mobile devices)
- Silverlight (Windows and some mobile devices)
- Windows Phone 7
- Others (?)
To pull off such a feat with the least amount of effort, some careful consideration must be given to how the code is structured that emphasizes code reuse and limits the amount of "duplicate" coding between support for different operating systems.
A first swag at the structure looks something like this: