MIX 09 6/5/2018 9:14 AM © 2009 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
Modeling RESTful Data Services: Present and Future 6/5/2018 9:14 AM Modeling RESTful Data Services: Present and Future Pablo Castro Software Architect Microsoft Corporation © 2007 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
Agenda On data services for the web Modeling data services Structure Security Behavior What’s next… Short- and long-term plans
Scenarios for Data Services Data in RIAs Silverlight/AJAX apps Client-server designed and deployed together Easy deployment Functionality surfaces in user interface Data-Centric Services Online services Loosely coupled clients and servers Easy access State, functionality through service interface
REST-ish Service Interfaces RESTful State and functionality in terms of resources Expose uniform interface Follows REST constraints Client-server Stateless Layered Cacheable Web Friendly Not necessarily RESTful Heavy use of URLs Not just for addressing GET/POST simple XML/JSON documents Low barrier of entry
What does the service look like? Service structure
Service Structure Flexible interface != database interface Model as appropriate for a service interface Application-level concepts Latency, payload size considerations Consider optimistic concurrency requirements Server-side schema versus service schema Access rights control service level schema Hidden, read-only, non-queryable, POST-only sets Maintain full capability for server-side code
Who can access the service? Authentication
Authentication Consider your target scenario AJAX/Silverlight applications “Forms” authentication works well Login in HTML forms or within Silverlight Wide-open RESTful service interface Standard schemes much more important Basic + SSL often does it Digest, certificates provide more robust options “Integrated” is great for corporate networks
Who can do what with the service? Access Control
Access Control Use query and change interceptors Policies that apply regardless of access path Query path composition-based, highly efficient Role-based access control For actions Row-level security For entities
Behaviors in a resource-centric interface? State-based behavior
Behavior on State Transitions Custom methods break the uniform interface Still possible if needed: “Service operations” Consider WCF/SOAP service if it’s all methods Behavior attached to state transitions ProcessSalesOrder() Order.Status=“Ready” Change interceptors to detect transitions Perform secondary side-effects Kick-off workflows …
Short and long term plans What's next… Short and long term plans
ADO.NET Data Services v1.5, CTP 1 6/5/2018 9:14 AM announcing ADO.NET Data Services v1.5, CTP 1 © 2007 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
ADO.NET Data Services v1.5 Focused on service capabilities Row count – everybody asked for this :) Feed customization BLOBs with streaming interface for media Data-binding for the .NET and Silverlight Server-driven paging “Fancy” providers with full flexibility Installs without overwriting 1.0 runtime CTP1 available now, RTM around this fall
ASP.NET AJAX and Data Services New version of ASP.NET AJAX coming Preview 4 available in codeplex now Built-in support for Data Services Great templates and data binding features It all works together
Use Data Services for a REST interface over SDS SQL Data Services SDS full relational store in the cloud Use existing applications and know-how Use existing database APIs Host in Azure or access over the Internet Use Data Services for a REST interface over SDS Azure Client/ Browser SDS Web App Azure Client/ Server/ Browser SDS
.NET RIA Services Asks for Data Services programming model Server: Better business logic framework Client: Better UI and validation integration Integrate with “Domain Service” classes .NET RIA Services use Data Services for queries, updates and data exchange Author Data Services using .NET RIA Services
.NET RIA Services public class CatalogService : DataService<Catalog> { // initialization, interceptors, etc. } public class Catalog : LinqToEntitiesDomainService<BikesEntities> public IQueryable<Product> GetProducts() return Context.Products .Where(p => p.Status == "Active"); public void UpdateProduct(Product current, Product original) // ... Data Service exposes domain through RESTful interface Domain Service encapsulates business logic
"Astoria Offline" Sync-enabled service interfaces End-to-end solution for building offline applications Client and server libraries, Visual Studio integration, etc. Standard disclaimer: early exploration, just thoughts for now :)
Summary You can build fully functional RESTful services with ADO.NET Data Services Behaviors, access control, etc. can be modeled using a resource-centric interface We are extending data services to provide more base functionality Future focus on better business logic programming model and sync/offline
Resources Data Services Team Blog ADO.NET Data Services page @ MSDN http://blogs.msdn.com/astoriateam ADO.NET Data Services page @ MSDN http://msdn.microsoft.com/data ADO.NET Data Services forums http://social.msdn.microsoft.com/Forums/en-US/adodotnetdataservices/threads/
Please Complete an Evaluation Form Your feedback is important! MIX 09 6/5/2018 9:14 AM Please Complete an Evaluation Form Your feedback is important! Evaluation forms can be found on each chair Temp Staff at the back of the room have additional evaluation form copies © 2009 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
6/5/2018 9:14 AM © 2009 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION. © 2007 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.