ASP.NET 4.0 Cache Extensibility

24
ASP.NET 4.0 Cache Extensibility Stefan Schackow Program Manager Microsoft Corporation PC41

description

ASP.NET 4.0 Cache Extensibility.

Transcript of ASP.NET 4.0 Cache Extensibility

Page 1: ASP.NET 4.0 Cache Extensibility

ASP.NET 4.0 Cache Extensibility

Stefan SchackowProgram ManagerMicrosoft Corporation

PC41

Page 2: ASP.NET 4.0 Cache Extensibility

What's the current state? Why is it changing? How are we changing it?

.NET Framework Caching

Page 3: ASP.NET 4.0 Cache Extensibility

A great in-memory object cache in ASP.NET Lots of configurable "knobs"

Expiration policies Automatic scavenging behavior Before and after removal callbacks Extensible cache dependencies

Output caching of ASP.NET content Pages Fragment caching of ASP.NET controls Donut caching with cache substitution Output caching of arbitrary HTTP response

Current Cache Functionality

Page 4: ASP.NET 4.0 Cache Extensibility

In-memory cache has various constraints Object cache API exists in System.Web

Awkward to use object cache outside of ASP.NET Common question: Why do I have to include

System.Web.dll in my WPF/Winforms project? Not available in 3.5 SP1 Client SKU

Caching is a "black box" Where can vendors and developers plugin?

Memcached, Velocity, ScaleOut, etc… have no clean integration point available to them

Output caching is completely opaque Each custom caching solution is a completely

different API for developers to learn

Why Make Changes?

Page 5: ASP.NET 4.0 Cache Extensibility

Proposed New Cache Functionality

A new, extensible, object cache API in its own namespace and assembly Supports both client and server applications Can be made available on both desktop and

client SKUs A factored version of the ASP.NET cache engine

Extensible ASP.NET output caching Consistent APIs for programming against

Disk-based output caches Custom object caches Cloud-based object caches Distributed object caches

Page 6: ASP.NET 4.0 Cache Extensibility

New 4.0 Cache Functionality

Cache

Namespace System.Caching{

}

CacheProvider

Disk based

Windows Azure

Distributed

In-memory

Page 7: ASP.NET 4.0 Cache Extensibility

New 4.0 Cache Functionality

Namespace System.Caching{

}

CacheDependency(Sql, Key-based, File)

CacheItem

CacheItemPolicy(expirations,

priority, callbacks)

CacheItem

CacheItem

Cache

Page 8: ASP.NET 4.0 Cache Extensibility

Object Caching

demo

Page 9: ASP.NET 4.0 Cache Extensibility

New 4.0 Output Cache FunctionalityNamespace System.Web.Caching{

}

Disk based

Windows Azure

Distributed

In-memory

OutputCacheProvider

Default.aspx

Foo.ascx

Page 10: ASP.NET 4.0 Cache Extensibility

Output Caching

demo

Page 11: ASP.NET 4.0 Cache Extensibility

Core Versus Optional APIs

Cache API is a "union" of common functionality Not all cache providers need

to implement all features Core functionality for all providers

Represented on CacheProvider base type Storing and retrieving a key-value pair Basic Add/Get/Set/Contains/Remove methods Named cache partitions

Providers specialize by deriving from InMemoryCacheProvider OutOfProcessCacheProvider

Page 12: ASP.NET 4.0 Cache Extensibility

InMemoryCacheProvider

Represents a provider running exclusively in a single app-domain Count of items in cache Sliding expirations

Distributed caches usually can't synchronize sliding expiration values across multiple servers

Cache dependencies (derivations of CacheDependency) Distributed caches may have

no concept of dependencies Item removal callbacks (before and after

removal) Distributed caches may not be able

to call back to anything

Page 13: ASP.NET 4.0 Cache Extensibility

OutOfProcessCacheProvider

Represents a provider that stores data outside of an app-domain Version-based updates (CacheItem.Version)

Useful for caches that support optimistic concurrency

Lock-based updates (CacheItem.LockHandle) If a cache supports pessimistic concurrency

Get multiple items Saves multiple round-trips on fetches

Query-tag metadata (CacheItem.QueryTags) Retrieving multiple cache items based on string tags

Page 14: ASP.NET 4.0 Cache Extensibility

"Velocity" Integration

"Velocity" – codename for distributed cache created by the Sql Server team

Planned "Velocity" integration points OutOfProcessCacheProvider implementation

for object caching SessionStateStoreProviderBase implementation

for ASP.NET session state Sidenote: Updates to session state API are planned

in 4.0 to allow for more granular sets and gets. OutputCacheProvider implementation for

ASP.NET output caching

Page 15: ASP.NET 4.0 Cache Extensibility

Checking cache capabilities

demo

Page 16: ASP.NET 4.0 Cache Extensibility

Migrating From Existing APIs

System.Web.Caching.Cache Current plan is that it stays un-changed Might enable "opting-in" to using an object

cache provider Requires developing a “shim” that can re-route calls

to the new object cache provider layer Currently the “shim” is only in the “idea phase”

ASP.NET output caching Both page and control caching can opt-in to

using custom providers By default both types of output caching

continue to use ASP.NET’s in-memory cache

Page 17: ASP.NET 4.0 Cache Extensibility

Migrating From Existing APIs

ASP.NET control output caching<@OutputCache outputCacheProvider="…" />

ASP.NET page output caching Programmatically choose different providers Override a new method on HttpApplication

HttpApplication.GetOutputCacheProviderName

Custom page output caching supports: Absolute expirations File-based dependencies only Validation and substitution callbacks

must be static

Page 18: ASP.NET 4.0 Cache Extensibility

Migrating From Existing APIs

System.Caching System.Web.Caching

Cache Cache

CacheDependency CacheDependency

SqlCacheDependency SqlCacheDependency

FileCacheDependency constructor parameter

CacheKeyCacheDependency constructor parameter

CacheItem.Key method parameter

CacheItem.Value method parameter

CacheItem.CacheItemPolicy various method parameters

CacheProvider & derivations hard-coded in-memory support only

Page 19: ASP.NET 4.0 Cache Extensibility

Summary

4.0 Caching is all about extensibility! Both object caching and ASP.NET output

caching will be pluggable New object cache APIs available for both

client and full versions of .NET Framework

Page 20: ASP.NET 4.0 Cache Extensibility

Breakout Sessions/Chalk Talks PC21 – ASP.NET MVC PC30 – ASP.NET Dynamic Data PC31 – ASP.NET and Jquery PC32 – ASP.NET Ajax Futures PC33 – Microsoft Visual Studio:

Easing ASP.NET WebDev PC41 – ASP.NET Cache Extensibility TL48 – Microsoft Visual Studio:

Web Development Futures ES15 – Deploying Web Applications with Microsoft

Internet Information Services 7.0 and the Web Deployment Tool

Related Content

Page 21: ASP.NET 4.0 Cache Extensibility

Evals & Recordings

Please fill

out your

evaluation for

this session at:

This session will be available as a recording at:

www.microsoftpdc.com

Page 22: ASP.NET 4.0 Cache Extensibility

Please use the microphones provided

Q&A

Page 23: ASP.NET 4.0 Cache Extensibility

© 2008 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.

Page 24: ASP.NET 4.0 Cache Extensibility