- Service can be consumed easily from Silverlight, AJAX, and WebForms. (Not winforms(??))
- Richer client side object model by including business rules and relationships between objects.
- Quicker to set up. Good for Rapid development.
- More control over what is exposed. Uses a set Interface.
- Integrated change tracking by default.
- Can monitor changes in client and batch the changes to the server.
- Uses reflection at design time to see objects (doesn’t use service contracts)
- Creates client code in Silverlight.
- Design time experience with data sources, drag drop etc. (Contains these features)
- Shares validation logic in client.
- Can use a set interface. Also provides Context object in client.
- Can support Linq queries between client and server but these are based on Interface.
- Var qry = GetGamesQuery().Where(g =>; g.Price < 50)
op = cnt.Load (qry);
- Harder to Customize than WCF Services
- No message-level security
- Serialization is not well supported (has limitations)
- Gives up flexibility compared to WCF
- Harder to debug.
- Not easy to integrate with large enterprise applications
- More tightly coupled than WCF Services.
- Standardized on OData protocol
- Loosely coupled clients and servers
- Service can be consumed from .NET, Silverlight, AJAX, PHP and Java (libraries available).
- Cross platform interoperability as a goal: Out-of-box support from future MS products such as SQL2008 R2, Azure, Excel 2010, SharePoint 2010, etc.
- Uses JSON and ATOM (xml-based feed format)
- Can interact WCF service using standard HTTP verbs such as GET/POST/DELETE
- Uses Entity data modeling (EDM), entity-relationship derivative
- Non-relational sources can be represented using EDM exposed as data service.
- Support for Membership => activate membership endpoint.
- Allows you to add operations to fill custom operations.
- Includes Data Context class to monitor changes, issue changes in batches with transactional support.
- Queryable end-points (not a set interface).
- Flexible querying, paging association traversal.
- Supports Linq queries between client and server. Client can create Linq query and run it on server.
var qry from g in ds.Games WHERE Id == 1
- Code written on client is small (Linq calls and context class work)
- Does not give tight control over Interface to data access