1 / 16

WCF RIA Services - Querying and Updating Data

WCF RIA Services - Querying and Updating Data. SILVERLIGHTSHOW.NET WEBINARS SERIES BRIAN NOYES, CHIEF ARCHITECT, IDESIGN INC 2 FEB 2011. WCF RIA Services Overview. Presentation. Simplifies building N-tier Silverlight applications

oshin
Télécharger la présentation

WCF RIA Services - Querying and Updating Data

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. WCF RIA Services - Querying and Updating Data SILVERLIGHTSHOW.NET WEBINARS SERIES BRIAN NOYES, CHIEF ARCHITECT, IDESIGN INC 2 FEB 2011

  2. WCF RIA Services Overview Presentation • Simplifies building N-tier Silverlight applications • Some ability to consume the services from other client types • Focused on Line of Business (LOB) applications • Highly dependent on pull-push of data from back end • Architecture and tools for building the glue code between the client and the back end • Client framework for query/update, validation, security • Server framework for exposing services without needing to know WCF Entities Validation Service Access WCF RIA Services Services Entities Validation Data Access DB

  3. WCF RIA Services Benefits • Greatly reduces the amount of raw plumbing code you have to write • Prescriptive architecture for working with data on the client side • Hides the complexities of WCF from you • Extends the LINQ programming model to N-tier • Client side framework for service calls, validation and security

  4. What do you need? • Silverlight Tools for Visual Studio 2010 • Core bits • RIA Services Toolkit • Other endpoint types (SOAP, JSON) • ASP.NET support for consuming domain service in process • Coming: • WCF RIA Services SP1 Beta 1 • Complex types support for child objects • Sharing entities across domain services • Better data binding to client collection types • Various other improvements

  5. WCF RIA Services Overview • Link client project to server project • Define server side domain services • Base classes: DomainService, LinqToEntitiesDomainService • Compile • WCF RIA Services code generates client side “proxy” code • Domain context • Entities • Validation • Shared code

  6. Entities • Can be any type • Entity Framework or LINQ to SQL entities supported out of box • POCOs must follow certain conventions • Must have a [Key] property • i.e. CustomerId • Relation properties must have an [Association] attribute to indicate the related property type’s key fields • Need [Include] attribute on properties to child entity collections or single entities to have them serialized

  7. Metadata Classes • Define a partial class for the entity type • Define a nested metadata class inside the entity type • Not required, but convention • “Buddy class” • Add a MetadataType attribute on the entity partial class to tie in the metadata type • Add attributes to properties on the metadata type that match the entity properties • Those attributes show up on the client entity type or influence entity transmission • Validation • Include • Exclude • Composition

  8. Query Operations • Read operations • Return object, IEnumerable<T>, IQueryable<T> • IQueryable<T> and LINQ provider required for deferred execution • Query attribute on methods - optional • IsComposable=false when returning single entity • ResultLimit to constrain maximum items returned to client

  9. Loading Data on the Client • Allow you to execute a DomainContext method to query data • Including updates • Drag/drop data binding is VS 2010 • Supports parameterized queries • Supports sorting, grouping, filtering, paging • Not a good fit with MVVM • Puts query “logic” into the view

  10. Loading Data on Client • DomainContext.Load method • Pass an EntityQuery<T> • Can modify the expression tree on client if target method in DomainService returns IQueryable<T> • Executes asynchronously • Bind to entity collection for automatic update via INotifyCollectionChanged • Pass async callback to be notified and work with results or handle errors yourself • Can work with returned LoadOperation<T> for async notification as well

  11. IQueryable<T> and Deferred Execution • RIA Services serializes the expression tree from the client the server • LINQ operations specified by the expression tree are executed on the server • When the underlying provider supports it (i.e. Entity Framework and LINQ to SQL), deferred execution goes all the way to the DB

  12. Querying Relations • Domain service needs to return related entities • i.e. Customer – Orders • Entity Framework: ObjectContext.Customers.Include(“Orders”) • Entity metadata type needs [Include] attribute on related property

  13. Update Operations • Entity changes are cached in the client DomainContext until SubmitChanges called • Contains an EntityContainer that tracks changes • Sent as a batch to the service • Including original version for optimistic concurrency • Service executes batch, calling Insert, Update, and Delete methods with one entity per method call

  14. Update Operations • Naming convention in domain service to identify methods • Insert: InsertXXX, AddXXX, CreateXXX • Update: UpdateXXX, ModifyXXX, ChangeXXX • Delete: DeleteXXX, RemoveXXX • Where XXX is an entity type name • Attributes exist for explicit declaration of intent • Insert, Update, Delete attributes

  15. RIA Services and MVVM • MVVM is all about keeping logic execution out of the view • DomainDataSource is specifically geared towards putting query logic in the view in a declarative fashion • Impedance mismatch • DomainContext can be used in the view model directly • Problems: Testability, Separation of Concerns • DomainContext can be hidden in a service / repository • Lose the flexibility of the programming model from the view model’s perspective • Fair amount of work to abstract the programming model

  16. Summary • WCF RIA Services provides an easy to use and powerful mechanism for Silverlight clients to query and update data from a service back end • Queries benefit from deferred execution • Updates benefit from rich validation mechanisms • Future webinar • For more info, see my WCF RIA Services series on The SilverlightShow:http://www.silverlightshow.net/items/WCF-RIA-Services-Part-1-Getting-Started.aspx Contact info: brian.noyes@idesign.net Twitter: @briannoyes Blog: http://briannoyes.net

More Related