Hi Ron,
What you'll want is to create a public API that can be used by all your consumers (be it WIN8, WP7, iOS, Android, ...). This can easily be done with the new ASP.NET Web API: http://www.asp.net/web-api
The ASP.NET Web API allows you to work content negotiation using accept headers. This will allow you to use a different content type based on the consumer. Simplified, this means that if you feel more at ease to use XML on iOS, you could just 'ask' the server
to return XML. If you prefer JSON, you can ask for JSON.
I mentioned public API before, because this is what you want to expose to your consumers. On the other hand, you'll have something internally (a WCF service maybe, or just logic within your webapplication) to do much more, like managing
users.
And finally, I would (almost) never let the client applications talk directly to storage directly. This might increase complexity when you start changing things in your backend, since you'll also need to update the client applications. If you hide all the
logic behind an API (a webservice), you can change the backend however you like without impacting the clients too much.
Hope this helps.
Sandrino
Sandrino Di Mattia | Twitter: http://twitter.com/sandrinodm | Azure Blog: http://fabriccontroller.net/blog | Blog: http://sandrinodimattia.net/blog