One of our architects, Steve Smith, recently posted this on his blog:
These days, there are many ways to browse the internet. There are desktop browsers, mobile phone browsers, tablets, tablet/phones (e.g. Dell Streak), etc. all with different screen sizes, resolution, and capabilities. How do you render an appropriate view optimized for the device accessing your site? The answer is device detection.
The two main approaches for device detection are server-side detection and client side detection. Server side detection involves determining the device at the time of the request and then presenting the appropriate view. Client side detection involves manipulating the view after the content has been sent to the browser.