I would think Approach 1 is much better since you can isolate the entire stack for a single module. However, you may want to place your Data and Business classes in different projects.
You can also achieve sharing of business logic across multiple platforms by introducing a service layer.
For an idea of how it can be done, check out http://serena-yeoh.blogspot.com/2013/07/layered-applications-3-tier.html
You can also download samples from here. http://layersample.codeplex.com