Microsoft .NET RIA Services simplifies the traditional n-tier application pattern by bringing together the ASP.NET and Silverlight platforms. The RIA Services provides a pattern to write application logic that runs on the mid-tier and controls access to data for queries, changes and custom operations. It also provides end-to-end support for common tasks such as data validation, authentication and roles by integrating with Silverlight components on the client and ASP.NET on the mid-tier.

   Our thinking on the RIA Services work really grow out of the LINQ project a few years ago.  LINQ integrates query semantics into the languages (C#, VB, etc) providing a common abstraction for working with data; whether that data is in memory CLR objects, XML, relational data,  or anything else.   With RIA Services we are extending this pattern by offering a prescriptive model for exposing your domain logic over LINQ. We think of domain logic as that part of your application that is very specific to your domain – that is the particular business problem you are solving.    By following this pattern we are able to provide a number of features that help you focus on your domain logic rather than the plumbing in your code.  For example, we offer a great way to write application logic on the server and display, validate the data,  as well as supporting authorization,  querying, sorting, filtering, paging, etc, not to mention providing a clean way to mock out the data layer to do testing (a la TDD, etc).  All regardless of what data store you use (Entity Framework, Linq2Sql, nHibernate, Xml file, REST service, WCF-server, etc).