Can someone explain it succinctly? Can it be used with non-Silverlight clients?
I hate to just forward you to a website, but this link has a good explanation.
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.
From what I understand, this is an abstraction from the code plumbing and your business logic. For instance, you could use LINQ to query across these services using a natural query syntax as opposed to directly dealing with the service protocol in the controller.
I'm guessing based on some podcasts I've listened to:
It's a library which does something like this:
- Provide some kind of way (.NET attributes I think it was) to specify data validation on your server-side data models
- Somehow send this data to the client (maybe some custom wsdl-ish type thing?)
- On the client side, generate some proxy code which performs the same validation as specified on the server.
If I recall correctly, they only had support for generating .NET code, so silverlight (and possibly WPF/XBAP) applications were it. They mentioned generating javascript as something for the future (possibly).
The idea seemed to be that you could go beyond simple validation and enforce "business rules" and so forth, but I'm not quite sure how that would work.
Basically, .NET RIA Services is a framework that hides away the network plumbing logic to handle over the wire RPC and bridges the code between the client and the server.
You can think of it as RAD for Client/Server development.
From Dinesh's Blog:
1. Simplify n-tier development (and
really show you a better way to get
multi-tier story for your ORM
objects - LINQ to SQL or EF or
whatever)
2. Support Rich Internet Application
(RIA) development on Silverlight -
there is great end-to-end story for
validation, authentication, easy
databinding etc.
3. Extend your ASP.NET development
experience. This is based on what
you know and use already. There is
even an ASP.NET DomainDataSource and
templates for SEO there (and
hopefully some AJAX stuff soon -
fingers crossed).
To answer some of your other questions about the future Brad Abrams says:
ASP.NET Access – By following the RIA Services pattern, you will also be able to build ASP.NET applications easily while taking advantage of all the built in features of RIA Services such as data validation, authorization, etc. In the March preview, we are offering a asp:DomainDataSource control that enables very easy ASP.NET WebForms access to your domain logic. Building on top of that is a future version of ASP.NET Dynamic Data that makes it very easy to generate common, standard UI based on your domain logic.
Back in Redmond, we are working on provide a very clean access to your domain logic via ASP.NET MVC. The pattern here is very cool, and I can’t wait to talk about it in a future CTP.
If you combine the verity of data sources with the variety of presentation options we are aiming for with .NET RIA Services…
From what I could understand from all of the blogs, presentations, and official marketing statements:
A pattern which clearly delineates between application logic, persistence logic, and consumer (e.g. services and/or UI client) logic. This encourages reuse of application logic and interchangeability of both persistence and consumer logic.
And yes, from what I've read, non-Silverlight clients will be supported.
General info and downloads http://silverlight.net/forums/t/80529.aspx
Detailed info here RIAServicesOverviewforMay2009.docx
http://www.microsoft.com/downloads/details.aspx?FamilyID=76bb3a07-3846-4564-b0c3-27972bcaabce&displaylang=en
Some say it is for Silverlight and WCF what DCOM was for VB6; far to easy to connect client and server without really understanding the implications.
Succinct as I can make it...
Making Silverlight front end and server back end use the same model classes as transparently as possible. Gives you integrated model validation and operations by making model classes available to the front end.
Mental model: RIA as one application instead of two.
There is a series on it which can help you out.
SL 4 + RIA
http://www.dotnetscraps.com/dotnetscraps/post/Silverlight-and-NET-RIA-Services-Step-By-Step.aspx