.NET RIA Services For Silverlight

Loading...

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

0 comments

Post a comment

    Post a comment
    Embed Video
    Edit your comment Cancel

    Favorites, Groups & Events

    .NET RIA Services For Silverlight - Presentation Transcript

    1. .Net Ria Services for Silverlight
      Ian Blackburn
      Download RIA Services and documentation from http://www.microsoft.com/downloads/details.aspx?FamilyID=76bb3a07-3846-4564-b0c3-27972bcaabce&displaylang=en
      This presentation is a summary of the ~200 page document from there (plus some examples ;-)
    2. Overview
      www.bbits.co.uk
    3. Where do RIA Services Exist?
      www.bbits.co.uk
    4. Presentation Technologies and DALs
      The current preview illustrates the pattern primarily through the end-to-end experience with Silverlight and EF or Linq to Sql
      but RIA Services are designed to work other Presentation and DALS as well
      www.bbits.co.uk
    5. Getting Started
      www.bbits.co.uk
    6. The DomainService Class
      This is the main class for authoring operations
      Such as CRUD behaviours
      It can be generated code in the first instance.
      You add your custom application logic to this class
      The [EnableClientAccess] attribute causes the tools to generate the corresponding client-tier classes when the project is built
      www.bbits.co.uk
    7. The DomainContext Class
      A client side DomainContext class is generated for each DomainService
      This provides basic services such as invocation of operations, accumulation of results, object identity and change tracking
      www.bbits.co.uk
    8. Sharing Code Between Client and Server
      Code that is written in the server side can be reused in the client side.
      To do this
      create a new class in the server side with a .shared.cs or .shared.vb suffix
      Mark the class and methods you want to share with the [Shared] attribute
      After you build the solution, Visual Studio will copy this file to the Silverlight client application:
      www.bbits.co.uk
    9. Creating Query Methods in the Service
      Define Query Methods in your Domain Service
      These must:
      return a single instance T, or an IEnumerable<T> or IQueryable<T> where T is a valid Entity type
      takes 0 or more parameters
      Optionally be adorned with the QueryAttribute
    10. Using Generated Query Methods in Silverlight
      When a query method is defined in the domain service, the code generator automatically creates
      A query factory method named [NameOfQueryMethod]Query
      The entity Type of the query method
      You use it by:
      createinganEntityQuery instance
      Applying LINQ query operators to it as needed
      Passing the query instance into DomainContext.Load
    11. Example
      Note that the “orderby” is still happening on the server, and the Load is asynchronous
    12. Support Query Operators in Silverlight
      EntityQuery exposes only a subset of LINQ query operators.
      These are:
      Where
      OrderBy / ThenBy
      Skip / Take
    13. Metadata classes
      To add some validation rules that are applied on both tiers, you create a metadata class for the Domain Service
      affectionately called the “buddy class”
      This can be generated when you create the domain service by checking the box shown
      Or you can just add the MetadataType attribute manually to an entity class
      www.bbits.co.uk
    14. Using Include on MetaData
      You need to mark the Suppliers metadata with an equivalent Include attribute so the correct code is generated on the client
    15. Adding Validation rules to the Metadata class
      www.bbits.co.uk
      This is achieved through attributes on the properties of the class on the server
      This causes the generated entity class in the client to have the same validation applied
    16. Modifying Data
      If you use the DomainService class wizard to generate DomainService class, then the generated service class has Create/Read/Update/Delete (CRUD) operations already
    17. EntityContainer, EntityList and Change Tracking
      Entities loaded into a DomainContext are stored and change tracked by its EntityContainer
      This is the Entities collection on the context object
      An EntityContainer manages a set of EntityLists
      there is a 1:1 mapping between EntityLists and the entity Types exposed by your service
      You can get a list of entities for a particular type using GetEntityList<T>
      You can inspect the Entity.EntityState of an entity to determine the state of the entity
      Unmodified, Modified, New, Deleted
    18. Change Sets (Unit of Work)
      A change set is a set of one or more entity operations to be processed as a single unit of work and can contain
      Entity Insert/Update/Delete operations
      Custom domain operations
      When SubmitChanges is called on the context the changes are all sent to the service all together
      You can get the current ChangeSet using the GetChanges method of the EntityContainer
      You can discard all pending changes, by calling RejectChanges on the context.
    19. Server Side Change Set Processing
    20. Error Handling
      You can throw validation exceptions in the Domain Service and then handle them in the client SubmitOperation completed event
    21. Other Supported Features
      Concurrency Handling
      Concurrency errors are reported from the DomainService to the client
      You can handle them in the SubmitOperation completed event
      You can also create a Resolve method on your service to deal with resolution
      Transactions Support
      No built in support from the client, but you can of course wrap your domain methods in transactions
      Identity Management
      The Key attribute on entities is used to keep track of local entities
      Whenever an entity is loaded if there is a cached instance locally with the same identity or key value(s) the local instance will be retained, and the newly read instance is discarded
      You can change this behaviour with the MergeOption in the context Load method
    22. Custom Methods and Service Operations
      Using Custom Methods
      You can create custom server methods in addition to basic create/update/delete operations
      These also support tracking on entities and deferred execution (e.g. When SubmitChanges is called)
      Mark them with the [Custom] attribute
      Call from the context or the entity itself in the client
      Service Operations
      More closely related to traditional web service
      Use the [ServiceOperation] attribute
      Don’t support tracking of deferred execution
    23. Other features
      Silverlight DomainDataSource
      Use declarative code to define the interactions between your UI and the data
      Supports filtering, sorting, grouping, editing...
      Restrict Access to DomainService Operations
      You can authenticate using the membership system in asp.net
      Then configure access against operations roles and users
      Code Generated Hook Points
      Partial methods are supported in the generated code to give extensibility points
      E.g. OnCreated, OnPropertyNameChanged
    24. Other Features
      .NET RIA Services Class Libraries
      permits packaging business logic into N-tier class library components rather than the Silverlight client and Web Site
      Ado.Net Data Services
      Stated goal is to align the two technologies such that Microsoft .NET RIA Services uses the same protocol as ADO.NET Data Services
      Business Applications Templates
      VS templates that builds on the Silverlight Navigation Application and using .NET RIA Services and provides support for Authentication and User Registration
    25. Questions?
    26. Concurrency Error
    27. Naming Conventions
      Insert
      “Insert”, “Add”, “Create” prefixes
      Method signature : void InsertX(T entity), where T is an entity Type
      Update
      “Update”, “Change”, “Modify” prefixes
      Method signature : void UpdateX(T current), where T is an entity Type
      Delete
      “Delete”, “Remove” prefixes
      Method signature : void DeleteX(T entity), where T is an entity Type
      Query
      Method signature returning a singleton, IEnumerable<T> , IQueryable<T> where T is an entity Type, and taking zero or more parameters
      Resolve
      “Resolve” prefix
      Method signature : boolResolveX(T curr, T original, T store, boolisDelete) where T is an entity type

    + mark  mannmark mann, 1 month ago

    custom

    1110 views, 0 favs, 1 embeds more stats

    Ian Blackburn from bbits.co.uk gives the Silverligh more

    More info about this document

    © All Rights Reserved

    Go to text version

    • Total Views 1110
      • 1097 on SlideShare
      • 13 from embeds
    • Comments 0
    • Favorites 0
    • Downloads 0
    Most viewed embeds
    • 13 views on http://consultingblogs.emc.com

    more

    All embeds
    • 13 views on http://consultingblogs.emc.com

    less

    Flagged as inappropriate Flag as inappropriate
    Flag as inappropriate

    Select your reason for flagging this presentation as inappropriate. If needed, use the feedback form to let us know more details.

    Cancel
    File a copyright complaint
    Having problems? Go to our helpdesk?

    Categories