What is WCF RIA services?

The latest news: WCF RIA Services is dead:

http://blogs.msmvps.com/deborahk/who-moved-my-cheese-ria-services/

If you want to use RIA Services, they have been open sourced:

http://www.openriaservices.net/blog/posts/


RIA services is a server-side technology that automatically generates client-side (Silverlight) objects that take care of the communication with the server for you and provide client-side validation.

The main object inside a RIA service is a DomainService, usually a LinqToEntitiesDomainService that is connected to a LinqToEntities model.

The key thing to remember in RIA services is that it's mainly a sophisticated build trick. When you create a domain service and compile your solution, a client-side representation of your domain service is generated. This client-side representation has the same interface. Suppose you create a server-side domain service CustomerService with a method IQueryable<Customer> GetCustomersByCountry. When you build your solution, a class is generated inside your Silverlight project called CustomerContext that has a method GetCustomersByCountryQuery. You can now use this method on the client as if you were calling it on the server.

Updates, inserts and deletes follow a different pattern. When you create a domain service, you can indicate whether you want to enable editing. The corresponding methods for update/insert/delete are then generated in the server-side domain service. However, the client-side part doesn't have these methods. What you have on your CustomerContext is a method called SubmitChanges. So how does this work:

  • For updates, you simply update properties of existing customers (that you retrieved via GetCustomersByCountryQuery).
  • For inserts, you use CustomerContext.Customers.Add(new Customer(...) {...}).
  • For deletes, you use CustomerContext.Customers.Remove(someCustomer).

When you're done editing, you call CustomerContext.SubmitChanges().

As for validation, you can decorate your server-side objects with validation attributes from the System.ComponentModel.DataAnnotations namespace. Again, when you build your project, validation code is now automatically generated for the corresponding client-side objects.

I hope this explanation helps you a little further.

Tags:

C#

.Net

Wcf

Ria