I have a reasonable real experience with both technologies.
The main pros and cons in my perspective:
RIA Services
- Pro: Development is (much) faster, even without using an entity. You can create ViewModels, possibly match them using AutoMapper and specify the attributes needed to validate / enter data / relationships. This is good practice even when using the framework entity.
- Con: A lot of overhead.
- Con: Performance degrades when sending large amounts of data (something like> 100 objects).
WCF and shared libraries
- Pro: performance is relatively excellent
- Con: development time / maintainability is not as good as RIA services.
- Con: It is not possible to use data binding also without a DomainDataSource (even when using MVVM).
Update For the data-binding part: RIA Services enables DomainDataSource management in Silverlight. This allows you to easily (asynchronously) load with binding properties for your state (Busy, etc.), which simplifies loading animations and general improvements in the user interface. Of course, this can be done without this control, but it helps.
For the performance of RIA services, I canβt find an example (someone here said that they lost several months of rebuilding domain services for regular WCF services due to response times that could not be completed).
One more note about Silverlight (Business Application): try increasing the browser scale to 110% or 90%, some arbitrary percentage. Fonts / components will be blurred due to the way the rendering works. I confirmed this on several machines / configurations and did not find a fix / work for this. Snap to the deviceβs pixels does not help at all.
Also, before you make a decision, it might be wise to also consider MVC3 with JQuery and HTML5 as an option for your solution. The HTML layout system may not be as good as Silverlight, but there are benefits such as support for cross-platform and mobile support.
source share