As I've worked more with WP7, and as we've worked on version 4.2 with support for Android and iPhone/iPad, I've been thinking more and more that the entire concept of the remote data portal should just not be included in CSLA on these platforms.
There are some reasons for this.
- There are technical issues around assembly signing and type parity that make use of the remote data portal problematic (at best)
- Because you don't directly control the update process on the mobile device (the marketplace/app store/whatever and the user have a lot of leeway and control), you can't ensure that the client is updated - certainly not in a timely manner, maybe not at all - so keeping the client and server in sync is problematic
- Architecturally, it is recommended that an SOA approach be used, where the mobile app uses messages to communicate with a service app - I don't think any credible architect would recommend otherwise
The WP7 implementation of CSLA does have a working remote data portal. I use it for demos. That is cool, but really it is probably a bad practice for me to even do demos like that, because I'd never recommend building a real app that way.
The Android/iOS implementations of CSLA could have a working remote data portal, but it is a little challenging due to platform differences between the client and .NET, and the somewhat unstable nature of (at least the Android) WCF stack on the client.
So, given that it is a bad idea to do n-tier for mobile apps to start with, plus the technical hurdles on Android/iOS, I am seriously considering removing the WcfProxy type from WP7, Android, and iOS versions of CSLA. This would occur in version 4.2.
But before doing this, I wanted to start a discussion to see if anyone on the forum had a strong argument in favor of the remote data portal (or against).
I look forward to any feedback or discussion - thanks!