3

I need to evaluate SOA architecture between WCF Data Services vs WCF RIA Services. Following are some of my parameters:

  1. Multiple Client (HTML5/iOS/Android/Windows 8 Metro/Windows Phone 7)
  2. Disconnected and offline operation
  3. Validation engine
  4. Performance
  5. Network data compression
  6. Support for Cloud Environment

Could anyone help me to gather some data for my evaluation. Also, is there any other good option available for SOA implementation.

I am aware of DevForce.

Hossein Narimani Rad
  • 31,361
  • 18
  • 86
  • 116
Ankush Gupta
  • 205
  • 5
  • 14

2 Answers2

5

I'm intimately familiar with RIA Services and know where it falls short. I know little about data services and DevForce, but I know that DevForces advertises to be better than RIA Services in exactly those areas where it annoys me, which is:

  1. RIA can't do group-by or joins of any sort. (Interestingly, the DevExpress toolkit can do some trickery to group on a RIA Services source in some cases.)
  2. It does understand relationships, but not of the many-to-many kind where it would have to handle a translation to a bridge table transparently. (EDIT: this is planned for Open Ria Services)
  3. The change tracking works through a context (unit of work) which can only be submitted or rejected as a whole (out-of-the-box anyway). That usually leads to an application with many contexts and weird copy operations to transfer entities. The RIAServicesContrib project helps with that.
  4. It appears to be no longer maintained. I base this on the fact that when Entity Framework 4.1 released their new DbContext API (for code first), Microsoft released a compatibility library with which you could use RIA and EF code first. That library has a version lock on EF 4.1 though, and Microsoft now just states that RIA Services doesn't support DbContext in the form of an Orwellian note to Visual Studio 2012. (EDIT: DbContext is now supported again - EF is currently supported up to version 5, with 6 being likely only supported in Open Ria Services)
  5. Some tasks such as observing changes of related entities programatically (rather than through data binding) are hard.
  6. Some things which should be really simple, such as getting the context from an attached entity, are hard.
  7. All queries are single requests, only the remaining CUD (of the CRUD) is batched.
  8. Custom methods to invoke along with normal CUD operations are very limited. In particular, it's not possible to cancel one that is scheduled without cancelling the whole context. That has made them almost useless in most cases where I wanted to use them.
  9. You will have to decide whether or not to use the DomainDataSource, which is a beast that does too much and too little. You can fetch everything programatically too, but some things are really quick to wire up with this xaml helper.
  10. There is no built-in support for serializing entities to isolated storage.
  11. Silverlight (and Javascript I believe) are the only supported platforms - no WPF. (EDIT: this is planned for Open Ria Services - in particular, it should be able to serve BreezeJS)

Since Data Services is older (I think), I didn't care to ever look closely at it. I did however recently skim over the feature list of DevForce and I believe that sounds exciting, although I can't say anything about it from experience.

(EDIT: I found a very knowledgeable comparison of RIA Services and WCF by Colin Blair here.)

The architect compares his product to RIA Services here. I covered some of his points, but not all.

Altogether I can say that RIA Services is clearly better than raw WCF, but it's also clear there has to be something better than that. I hope that's DevForce.

John
  • 6,693
  • 3
  • 51
  • 90
4

Both expose entities via OData, but RIA Services is specifically targeted to:

  • Silverlight consumption
  • Poor man's services - they're easier to get up and running with little effort

WCF Data Services are far more powerful and configurable. The biggest difference (IMO) is that RIA services require one host type per entity, whereas WCF Data Services can automatically host an entire content (a type with multiple IQueryable properties).

That said, both implementations are pretty half baked (again IMO only) and not really well thought out or implemented. ...You may be better off with traditional WCF operations hosted with WebGet/WebInvoke attributes...or using the WCF Web API.

I wouldn't go with DevForce only because it mainly really target Silverlight implementations (if I recall correctly). That said, they're package is pretty cool and far more feature complete than RIA or WCF Data Services.

Hossein Narimani Rad
  • 31,361
  • 18
  • 86
  • 116
Jeff
  • 35,755
  • 15
  • 108
  • 220
  • But now WCF RIA seems to support multiple clients/platform as mentioned in the this blog post http://channel9.msdn.com/events/BUILD/BUILD2011/TOOL-800T. So, do you think it might be a good choice to go with RIA as it provides quick development as compared to custom implementation in WCF data services. – Ankush Gupta Dec 07 '11 at 07:47
  • OData inherently supports multiple clients/platforms via REST...so both WCF Data Services and RIA support it. Honestly, I find WCF Data Services much easier to work with and more flexible. What kind of services/entities will you be hosting (NHibernate? Entity Framework? LINQ to SQL?) – Jeff Dec 07 '11 at 14:58
  • I am considering Entity Framework. I just want to be 100% sure before proceeding further. Can you please refer me with some of the limitations/drawbacks of WCF RIA? – Ankush Gupta Dec 07 '11 at 17:45