Upload
tia-hurdle
View
231
Download
0
Tags:
Embed Size (px)
Citation preview
Change the Rules
Distributed data apps with .NET
Zlatko KnezevicDeveloper Evangelist
Data options in .NET world
Some history included
• Native interfaces• ODBC as a abstraction layer• OLE DB• ADO.NET as a wrapper with .NET–With factories in 2.0 world
• ORMs as of 3.0
Today, things are different
• Client-server is a past paradigm
• Services talking to one another
• Distribution of data, applications, infrastructure
• TDD/DDD/BDD as a development practice
SQLServer
SQLAzure
Visual Studio “Quadrant”
SQL Server Modeling Services
Entity Framework
ADO.NET “M”/EDM
Data Services
…
Change the Rules
ENTITY FRAMEWORK 4.0
Entity Framework 1.0 had too many pain points
• The designer!• Model First not supported• Poor support for Stored Procedures• No Pluralization/Singularization• Foreign Keys hidden• Lazy Loading not supported• Missing LINQ Operators vs LINQ to SQL• Generated SQL unreadable• No support for Plain Old CLR Objects• N-Tier difficult
New in Entity Framework 4• Model-first development• Automatic pluralization• Foreign keys in models• POCO class support (Add-in)• Lazy loading• T4 Code Generation• Template customization• IObjectSet• Virtual SaveChanges• ObjectStateManager control
• Self-tracking entities• SQL generation
improvements• More LINQ operator
support• LINQ extensibility• ExecuteStoreQuery• ExecuteStoreCommand• SPROC import
improvements• Model defined functions• WPF designer integration• Code-First development
(Feature CTP)
Better Tools and Design Experience
• Model First• Templated code generation• Stored Procedures• Pluralization/Singularization • Complex Types• Better delete and search
More powerful/flexible runtime
• Deferred Loading (aka lazy loading)• Foreign Keys surfaced• More complete LINQ implementation• ExecuteStoreQuery• EntityFunctions and SqlFunctions• Improvements to generated SQL
Persistence Ignorance
• First class support for Persistence Ignorance
• No modifications to your classes!
N-Tier
• Self Tracking Entities
Code Only database modelling
• All above is nice, but you still need the edmx file
• What if you want the code to be “the truth”?
• Code-only modelling means just that• Currently only in CTP
Change the Rules
DEMO
Change the Rules
ODATA (WCF DATA SERVICES)
oData?
• What is it?
• Why should we care?
• How are we supposed to use it?
A little bit of history…
• MIX07 was a birthplace of “Astoria”• Later renamed ADO.NET Data
Services• Requirements for web data services– Plain HTTP– Uniform patterns– Focus on data– Abstract
Basic idea
The basic idea is simple
You already have this HUGE platform and API thing
Why not build on top of it??
In a way that is friendly and automatic??
RESTREPRESENTATIONAL
STATETRANSFER
| !protocol| !standard| !format
REST
REST == architectural style
| decoupling| scalability| layering
REST
OData
• Uniform way of representing structured data– Atom, JSON formats
• Uniform URL conventions– Navigation, filtering, sorting, paging, etc.
• Uniform operations– Addressability– GET, POST, PUT, DELETE always mean the same
Expose
• Any data over HTTP• Through either JSON or XML (Atom)• Your source needs to be
IQueryable<T>• Works like a charm for Entity
Framework contexts
Data Source Options
Data Services Runtime
HTTP traffic
Entity Framework Provider
Reflection Provider Custom Provider
.NET Classes[+ LINQ provider]Entity Framework
Database Data Source
Data Source
Custom providers:- IDataServiceMetadataProvider- IDataServiceQueryProvider
Updates:- IDataServiceUpdateProvider
Special features:- IDataServiceStreamProvider- IDataServicePagingProvider
Consume
• Data on any platform• Bindings and POC code for– PHP– Java– JavaScript
• Client libraries for .NET• Power Pivot and other means
got an HTTP stack?
business logic
store
service interface
data service != gateway to database
oData point: SharePoint 2010
• SharePoint needed 2 things in this space
• Flexible data interface–Maximize reach, minimum barrier of entry– Data centric, but enforcing business logic
• Developer story– Libraries for as many clients as possible– Great Visual Studio integration
oData consumer: PowerPivot
• “Self-service business intelligence”– Let people find and use their own data– …but where’s the data?
• Broad direct database access is impractical– OData feeds expose data over application logic– PowerPivot can handle OData natively
• Reports often represent the best data sources– All reports in Reporting Services are now OData
feeds
Servers• WCF Data Services• SharePoint 2010• SQL Server Reporting Services 2008 R2• SQL Azure• IBM WebSphere eXtreme Scale• Microsoft Media Room• WCF RIA Services
Services• Netflix• Mix 2010• Nerd Dinner• Vancouver’s vanGuide• Open Government Data Initiative• Open Science Data Initiative• Microsoft Codename “Dallas”• City of Edmonton
Clients• Excel + PowerPivot• LINQPad• OData Explorer
Client libraries• .NET• Silverlight• Windows Phone 7 Series• Javascript• Java• Objective-C• PHP
http://odata.org/producers
http://odata.org/consumers
Change the Rules
DEMO
Change the Rules
SQL SERVER 2008 R2
SQL Server 2008 at a glance
• A lot of improvements for next-generation apps• Beyond rational data types
– Spatial Data type– Hierarchy data type
• Improvements in rational engine– FILESTREAM data type– New DateTime functions
• Support for sparse columns• Better management• And a lot more…
SQL Server 2008 R2
• Adding on the solid foundation that is SQL 2008
• Improvements in management, reporting and federation
• StreamInsight™ • Support for oData in Reporting Services• Better business insight with new BI
advances– PowerPivot
Visual Studio 2010 & SQL Server 2008 R2
• Continued “DB professional” support– Offline database projects– Provides a place for the DB in ALM cycle
• New T-SQL IDE and developing features
• Data-tier Application projects
Data-tier Applications
• Improved Transact-SQL IDE• Supports offline development,
refactoring, versioning, policy• Builds single unit of deployment
containing all database objects (DACPAC)
• Registered with SQL Server when deployed