SlideShare a Scribd company logo
1 of 39
Robert MacLean Technology Specialist BB&D Windows Server AppFabric Caching: What it is & When you should use it?
Who am I? Robert MacLean Microsoft ALM MVP Microsoft ALM Ranger Proud Community Lead  Information Worker S.A. Architect www.sadev.co.za @rmaclean
Overture Level 300 State of play Briefly what is AppFabric? What do we get from AppFabric Caching and how to use it!
Advert Time AppFabric: Wed, 11:15pm - WCF Made Easy with .NET 4 and Windows Server AppFabric Other: Wed, 8:30pm - Tales From the field – Best practices and guidance on implementing TFS2010
State of play .NET prior to 4 ASP.NET Caching Enterprise Library Caching .NET 4 brings us .NET 4 Caching All are local in-memory caches!
.NET 4 Caching Demo
What is the issue with these? Limited to memory of current machine Limited to current process Imagine if I need 50Gb of cache? What about load balancing?
A rose by any other name… Windows Server AppFabric contains two key components Hosting EndPoint, Windows App Server Extensions, Dublin Caching Velocity Not to be confused with Azure AppFabric
N.B. AppFabric Requires .NET 4 on Server Not all applications need .NET 4, depends on features used Standalone download or Web Platform Installer High Availability is only in Windows Server 2008 Enterprise & Data Centre
What is AppFabric Cache? An in-memory distributed cache which you can call from any .NET application Optimised for the cache-aside pattern Programming against the cache is explicit Changing the cache doesn’t update the original data store
AppFabric Cache Single View Cache Server Single view from code Services Cache Server Data 1 Data 2 Data 3 Data 4 Cache Server Cache Server
AppFabric Caching Info Common Configuration Store XML Database Runs as Windows Service Communication Between Nodes WCF net.tcp Self Adjusting
AppFabric Server Types Dedicated Cache Server All it does is AppFabric caching – good for lots of memory and great performation Hybrid Cache Server Runs AppFabric caching & other tools.  SQL + AppFabric Web + AppFabric Local Cache Server Runs AppFabric per application locally Used in conjunction with hybrid and/or dedicated
What can I cache? Anything that can be serialised XML POCO Binary Data
Data Cache Planning Reference Data Cities, provinces, product info, etc… Activity Data Session, per user etc.. Resource Data Data with contention  We will look at this more later… NB: Plan, plan and plan some more
Management All Configuration and Administration is done via PowerShell From the MVP’s: http://mdcadmintool.codeplex.com/
AppFabric from IT Pro to Developer Demo
Cache Structure Review Server Server Server Named Cache: Default Named Cache: Products Named Cache: Users Region: Male Region: Female Items & Tags
Expiration of cache items Put & Add Timeout Notification Polling  Default: 300 secs Expiration timeout defaults can be controlled on a cache level
Eviction @ Low watermark Expired items removed @ High watermark Items, expired or not, can be removed or allocated to another server Items picked by using LRU  Can disable if needed
ORM’s Some ORM’s implement second level caching It is possible to change the second level to AppFabric Examples: NHibernate & Entity Framework
A Problem with Caching  AppFabric Cache Name : Robert Balance: 1500 Write DB Name : Robert Balance: 15 ATM ATM ORM UI ORM UI Name : Robert Balance: 15
Solution .GetAndLock .PutAndUnlock .Unlock Supports locking timeout Locked items can survive expiration Unlock can prolong expiration
Data Cache Planning Reference Data Cities, provinces, product info, etc… Activity Data Session, per user etc.. Resource Data Data with contention  NB: Plan, plan and plan some more Great with defaults Region per user Locking per item
Cluster Configuration First node initialises cluster Other nodes join During install you must configure projected size Small: 1 – 5 nodes  Medium: 6 – 15 nodes Large: > 15 nodes Performance based on this setting – adding/removing nodes does not effect this
Security Domain: Authentication in AD, Authorisation in AppFabric Only authorised servers join clusters Only authorised clients connect to clusters Workgroup Authentication in network share, Authorisation in AppFabric Transport Level Security Signing and Encryption
Typical Web Architecture Users Web Servers Load Balancer State State State DB
ASP.NET Out of the box caching  InProc (Default) StateServer SQLServer All can be enabled by via config change Now AppFabric support also just a config change
ASP.NET AppFabricConfig <configSections>   <sectionname="dataCacheClient“type="Microsoft.Data.Caching.DataCacheClientSection, CacheBaseLibrary" allowLocation="true"allowDefinition="Everywhere"/>   <sectionname="fabric“type="System.Data.Fabric.Common.ConfigFile, FabricCommon“ allowLocation="true"allowDefinition="Everywhere"/> </configSections> <dataCacheClientdeployment="routing">   <localCacheisEnabled="false"/>   <hosts>     <hostname="localhost"cachePort="22233“ cacheHostName="DistributedCacheService"/>   </hosts> </dataCacheClient> <fabric>   <sectionname="logging"path="">     <collectionname="sinks"collectionType="list">       <customTypeclassName="System.Data.Fabric.Common.EventLogger,FabricCommon"sinkName="System.Data.Fabric.Common.ConsoleSink,FabricCommon"sinkParam=""defaultLevel="-1"/>       <customTypeclassName="System.Data.Fabric.Common.EventLogger,FabricCommon"sinkName="System.Data.Fabric.Common.FileEventSink,FabricCommon"sinkParam="DcacheLog/dd-hh-mm"defaultLevel="-1"/>       <customTypeclassName="System.Data.Fabric.Common.EventLogger,FabricCommon“ sinkName="Microsoft.Data.Caching.ETWSink, CacheBaseLibrary“ sinkParam=""defaultLevel="-1"/>     </collection>   </section> </fabric> <system.web>   <sessionStatemode="Custom"customProvider="Velocity">     <providers>       <addname="Velocity"type="Microsoft.Data.Caching.DataCacheSessionStoreProvider, ClientLibrary"cacheName="session"/>     </providers>   </sessionState> </system.web>
ASP.NET AppFabricConfig <configSections>   <sectionname="dataCacheClient“type="Microsoft.Data.Caching.DataCacheClientSection, CacheBaseLibrary" allowLocation="true"allowDefinition="Everywhere"/>   <sectionname="fabric“type="System.Data.Fabric.Common.ConfigFile, FabricCommon“ allowLocation="true"allowDefinition="Everywhere"/> </configSections> <dataCacheClientdeployment="routing">   <localCacheisEnabled="false"/>   <hosts>     <hostname="localhost"cachePort="22233“ cacheHostName="DistributedCacheService"/>   </hosts> </dataCacheClient> <fabric>   <sectionname="logging"path="">     <collectionname="sinks"collectionType="list">       <customTypeclassName="System.Data.Fabric.Common.EventLogger,FabricCommon"sinkName="System.Data.Fabric.Common.ConsoleSink,FabricCommon"sinkParam=""defaultLevel="-1"/>       <customTypeclassName="System.Data.Fabric.Common.EventLogger,FabricCommon"sinkName="System.Data.Fabric.Common.FileEventSink,FabricCommon"sinkParam="DcacheLog/dd-hh-mm"defaultLevel="-1"/>       <customTypeclassName="System.Data.Fabric.Common.EventLogger,FabricCommon“ sinkName="Microsoft.Data.Caching.ETWSink, CacheBaseLibrary“ sinkParam=""defaultLevel="-1"/>     </collection>   </section> </fabric> <system.web>   <sessionStatemode="Custom"customProvider="Velocity">     <providers>       <addname="Velocity"type="Microsoft.Data.Caching.DataCacheSessionStoreProvider, ClientLibrary"cacheName="session"/>     </providers>   </sessionState> </system.web> <configSections>   <sectionname="dataCacheClient“type="Microsoft.Data.Caching.DataCacheClientSection, CacheBaseLibrary" allowLocation="true"allowDefinition="Everywhere"/>   <sectionname="fabric“type="System.Data.Fabric.Common.ConfigFile, FabricCommon“ allowLocation="true"allowDefinition="Everywhere"/> </configSections>
ASP.NET AppFabricConfig <configSections>   <sectionname="dataCacheClient“type="Microsoft.Data.Caching.DataCacheClientSection, CacheBaseLibrary" allowLocation="true"allowDefinition="Everywhere"/>   <sectionname="fabric“type="System.Data.Fabric.Common.ConfigFile, FabricCommon“ allowLocation="true"allowDefinition="Everywhere"/> </configSections> <dataCacheClientdeployment="routing">   <localCacheisEnabled="false"/>   <hosts>     <hostname="localhost"cachePort="22233“ cacheHostName="DistributedCacheService"/>   </hosts> </dataCacheClient> <fabric>   <sectionname="logging"path="">     <collectionname="sinks"collectionType="list">       <customTypeclassName="System.Data.Fabric.Common.EventLogger,FabricCommon"sinkName="System.Data.Fabric.Common.ConsoleSink,FabricCommon"sinkParam=""defaultLevel="-1"/>       <customTypeclassName="System.Data.Fabric.Common.EventLogger,FabricCommon"sinkName="System.Data.Fabric.Common.FileEventSink,FabricCommon"sinkParam="DcacheLog/dd-hh-mm"defaultLevel="-1"/>       <customTypeclassName="System.Data.Fabric.Common.EventLogger,FabricCommon“ sinkName="Microsoft.Data.Caching.ETWSink, CacheBaseLibrary“ sinkParam=""defaultLevel="-1"/>     </collection>   </section> </fabric> <system.web>   <sessionStatemode="Custom"customProvider="Velocity">     <providers>       <addname="Velocity"type="Microsoft.Data.Caching.DataCacheSessionStoreProvider, ClientLibrary"cacheName="session"/>     </providers>   </sessionState> </system.web> <dataCacheClientdeployment="routing">   <localCacheisEnabled="false"/>   <hosts>     <hostname="localhost"cachePort="22233“ cacheHostName="DistributedCacheService"/>   </hosts> </dataCacheClient>
ASP.NET AppFabricConfig <fabric>   <sectionname="logging"path="">     <collectionname="sinks"collectionType="list">       <customTypeclassName="System.Data.Fabric.Common.EventLogger,FabricCommon"sinkName="System.Data.Fabric.Common.ConsoleSink,FabricCommon"sinkParam=""defaultLevel="-1"/>    …     </collection>   </section> </fabric> <configSections>   <sectionname="dataCacheClient“type="Microsoft.Data.Caching.DataCacheClientSection, CacheBaseLibrary" allowLocation="true"allowDefinition="Everywhere"/>   <sectionname="fabric“type="System.Data.Fabric.Common.ConfigFile, FabricCommon“ allowLocation="true"allowDefinition="Everywhere"/> </configSections> <dataCacheClientdeployment="routing">   <localCacheisEnabled="false"/>   <hosts>     <hostname="localhost"cachePort="22233“ cacheHostName="DistributedCacheService"/>   </hosts> </dataCacheClient> <fabric>   <sectionname="logging"path="">     <collectionname="sinks"collectionType="list">       <customTypeclassName="System.Data.Fabric.Common.EventLogger,FabricCommon"sinkName="System.Data.Fabric.Common.ConsoleSink,FabricCommon"sinkParam=""defaultLevel="-1"/>       <customTypeclassName="System.Data.Fabric.Common.EventLogger,FabricCommon"sinkName="System.Data.Fabric.Common.FileEventSink,FabricCommon"sinkParam="DcacheLog/dd-hh-mm"defaultLevel="-1"/>       <customTypeclassName="System.Data.Fabric.Common.EventLogger,FabricCommon“ sinkName="Microsoft.Data.Caching.ETWSink, CacheBaseLibrary“ sinkParam=""defaultLevel="-1"/>     </collection>   </section> </fabric> <system.web>   <sessionStatemode="Custom"customProvider="Velocity">     <providers>       <addname="Velocity"type="Microsoft.Data.Caching.DataCacheSessionStoreProvider, ClientLibrary"cacheName="session"/>     </providers>   </sessionState> </system.web>
ASP.NET AppFabricConfig <configSections>   <sectionname="dataCacheClient“type="Microsoft.Data.Caching.DataCacheClientSection, CacheBaseLibrary" allowLocation="true"allowDefinition="Everywhere"/>   <sectionname="fabric“type="System.Data.Fabric.Common.ConfigFile, FabricCommon“ allowLocation="true"allowDefinition="Everywhere"/> </configSections> <dataCacheClientdeployment="routing">   <localCacheisEnabled="false"/>   <hosts>     <hostname="localhost"cachePort="22233“ cacheHostName="DistributedCacheService"/>   </hosts> </dataCacheClient> <fabric>   <sectionname="logging"path="">     <collectionname="sinks"collectionType="list">       <customTypeclassName="System.Data.Fabric.Common.EventLogger,FabricCommon"sinkName="System.Data.Fabric.Common.ConsoleSink,FabricCommon"sinkParam=""defaultLevel="-1"/>       <customTypeclassName="System.Data.Fabric.Common.EventLogger,FabricCommon"sinkName="System.Data.Fabric.Common.FileEventSink,FabricCommon"sinkParam="DcacheLog/dd-hh-mm"defaultLevel="-1"/>       <customTypeclassName="System.Data.Fabric.Common.EventLogger,FabricCommon“ sinkName="Microsoft.Data.Caching.ETWSink, CacheBaseLibrary“ sinkParam=""defaultLevel="-1"/>     </collection>   </section> </fabric> <system.web>   <sessionStatemode="Custom"customProvider="Velocity">     <providers>       <addname="Velocity"type="Microsoft.Data.Caching.DataCacheSessionStoreProvider, ClientLibrary"cacheName="session"/>     </providers>   </sessionState> </system.web> <system.web>   <sessionStatemode="Custom"customProvider="Velocity">     <providers>       <addname="Velocity"type="Microsoft.Data.Caching.DataCacheSessionStoreProvider, ClientLibrary"cacheName="session"/>     </providers>   </sessionState> </system.web>
Summary Windows Server AppFabric Cache is a distributed application cache Caching is important to application scalability Explicit caching API available to .NET 3.5 SP1 and .NET 4.0 ASP.NET Session provider an implicit way to take advantage of the Cache’s capabilities Plan, plan and plan some more
Questions robert@sadev.co.za @rmaclean Meet me at the community lounge
Resources Required Slide Learning Sessions On-Demand & Community Microsoft Certification & Training Resources www.microsoft.com/teched www.microsoft.com/learning Resources for IT Professionals Resources for Developers http://microsoft.com/msdn http://microsoft.com/technet Need more Information? SMS [ Your Name ] and the word “AppServer” to 41491
Complete an evaluation via CommNet and Tag to win amazing prizes!
© 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.

More Related Content

What's hot

Architetture Serverless con SQL Server e Azure Functions
Architetture Serverless con SQL Server e Azure FunctionsArchitetture Serverless con SQL Server e Azure Functions
Architetture Serverless con SQL Server e Azure FunctionsMassimo Bonanni
 
Building & managing wa app wely
Building & managing wa app   welyBuilding & managing wa app   wely
Building & managing wa app welySpiffy
 
BizSpark Startup Night Windows Azure March 29, 2011
BizSpark Startup Night Windows Azure March 29, 2011BizSpark Startup Night Windows Azure March 29, 2011
BizSpark Startup Night Windows Azure March 29, 2011Spiffy
 
2011.05.31 super mondays-servicebus-demo
2011.05.31 super mondays-servicebus-demo2011.05.31 super mondays-servicebus-demo
2011.05.31 super mondays-servicebus-demodaveingham
 
Cnam azure ze cloud resource manager
Cnam azure ze cloud  resource managerCnam azure ze cloud  resource manager
Cnam azure ze cloud resource managerAymeric Weinbach
 
Azure Automation and Update Management
Azure Automation and Update ManagementAzure Automation and Update Management
Azure Automation and Update ManagementUdaiappa Ramachandran
 
Choosing the Right EC2 Instance and Applicable Use Cases - AWS June 2016 Webi...
Choosing the Right EC2 Instance and Applicable Use Cases - AWS June 2016 Webi...Choosing the Right EC2 Instance and Applicable Use Cases - AWS June 2016 Webi...
Choosing the Right EC2 Instance and Applicable Use Cases - AWS June 2016 Webi...Amazon Web Services
 
Cloudformation & VPC, EC2, RDS
Cloudformation & VPC, EC2, RDSCloudformation & VPC, EC2, RDS
Cloudformation & VPC, EC2, RDSCan Abacıgil
 
Intro to Azure Static Web Apps
Intro to Azure Static Web AppsIntro to Azure Static Web Apps
Intro to Azure Static Web AppsMoaid Hathot
 
Sherlock Homepage - A detective story about running large web services (VISUG...
Sherlock Homepage - A detective story about running large web services (VISUG...Sherlock Homepage - A detective story about running large web services (VISUG...
Sherlock Homepage - A detective story about running large web services (VISUG...Maarten Balliauw
 
AWS Webcast - Getting Started with Amazon Web Services
AWS Webcast - Getting Started with Amazon Web ServicesAWS Webcast - Getting Started with Amazon Web Services
AWS Webcast - Getting Started with Amazon Web ServicesAmazon Web Services
 
More Cache for Less Cash
More Cache for Less CashMore Cache for Less Cash
More Cache for Less CashMichael Collier
 
Global Azure Bootcamp 2017 - Why I love S2D for MSSQL on Azure
Global Azure Bootcamp 2017 - Why I love S2D for MSSQL on AzureGlobal Azure Bootcamp 2017 - Why I love S2D for MSSQL on Azure
Global Azure Bootcamp 2017 - Why I love S2D for MSSQL on AzureKarim Vaes
 
What's New for the Windows Azure Developer? Lots!!
What's New for the Windows Azure Developer?  Lots!!What's New for the Windows Azure Developer?  Lots!!
What's New for the Windows Azure Developer? Lots!!Michael Collier
 
(WEB203) Building a Website That Costs Pennies to Operate | AWS re:Invent 2014
(WEB203) Building a Website That Costs Pennies to Operate | AWS re:Invent 2014(WEB203) Building a Website That Costs Pennies to Operate | AWS re:Invent 2014
(WEB203) Building a Website That Costs Pennies to Operate | AWS re:Invent 2014Amazon Web Services
 
Become an Automation Ninja in 60 Minutes
Become an Automation Ninja in 60 MinutesBecome an Automation Ninja in 60 Minutes
Become an Automation Ninja in 60 MinutesMichael Rüefli
 
Serverless Stream Processing with Bill Bejeck
Serverless Stream Processing with Bill BejeckServerless Stream Processing with Bill Bejeck
Serverless Stream Processing with Bill Bejeckconfluent
 
Azure Web App services
Azure Web App servicesAzure Web App services
Azure Web App servicesAlexey Bokov
 
5 things you don't know about Amazon Web Services
5 things you don't know about Amazon Web Services5 things you don't know about Amazon Web Services
5 things you don't know about Amazon Web ServicesSimone Brunozzi
 
Automating Azure VMs with PowerShell
Automating Azure VMs with PowerShellAutomating Azure VMs with PowerShell
Automating Azure VMs with PowerShellAlexander Feschenko
 

What's hot (20)

Architetture Serverless con SQL Server e Azure Functions
Architetture Serverless con SQL Server e Azure FunctionsArchitetture Serverless con SQL Server e Azure Functions
Architetture Serverless con SQL Server e Azure Functions
 
Building & managing wa app wely
Building & managing wa app   welyBuilding & managing wa app   wely
Building & managing wa app wely
 
BizSpark Startup Night Windows Azure March 29, 2011
BizSpark Startup Night Windows Azure March 29, 2011BizSpark Startup Night Windows Azure March 29, 2011
BizSpark Startup Night Windows Azure March 29, 2011
 
2011.05.31 super mondays-servicebus-demo
2011.05.31 super mondays-servicebus-demo2011.05.31 super mondays-servicebus-demo
2011.05.31 super mondays-servicebus-demo
 
Cnam azure ze cloud resource manager
Cnam azure ze cloud  resource managerCnam azure ze cloud  resource manager
Cnam azure ze cloud resource manager
 
Azure Automation and Update Management
Azure Automation and Update ManagementAzure Automation and Update Management
Azure Automation and Update Management
 
Choosing the Right EC2 Instance and Applicable Use Cases - AWS June 2016 Webi...
Choosing the Right EC2 Instance and Applicable Use Cases - AWS June 2016 Webi...Choosing the Right EC2 Instance and Applicable Use Cases - AWS June 2016 Webi...
Choosing the Right EC2 Instance and Applicable Use Cases - AWS June 2016 Webi...
 
Cloudformation & VPC, EC2, RDS
Cloudformation & VPC, EC2, RDSCloudformation & VPC, EC2, RDS
Cloudformation & VPC, EC2, RDS
 
Intro to Azure Static Web Apps
Intro to Azure Static Web AppsIntro to Azure Static Web Apps
Intro to Azure Static Web Apps
 
Sherlock Homepage - A detective story about running large web services (VISUG...
Sherlock Homepage - A detective story about running large web services (VISUG...Sherlock Homepage - A detective story about running large web services (VISUG...
Sherlock Homepage - A detective story about running large web services (VISUG...
 
AWS Webcast - Getting Started with Amazon Web Services
AWS Webcast - Getting Started with Amazon Web ServicesAWS Webcast - Getting Started with Amazon Web Services
AWS Webcast - Getting Started with Amazon Web Services
 
More Cache for Less Cash
More Cache for Less CashMore Cache for Less Cash
More Cache for Less Cash
 
Global Azure Bootcamp 2017 - Why I love S2D for MSSQL on Azure
Global Azure Bootcamp 2017 - Why I love S2D for MSSQL on AzureGlobal Azure Bootcamp 2017 - Why I love S2D for MSSQL on Azure
Global Azure Bootcamp 2017 - Why I love S2D for MSSQL on Azure
 
What's New for the Windows Azure Developer? Lots!!
What's New for the Windows Azure Developer?  Lots!!What's New for the Windows Azure Developer?  Lots!!
What's New for the Windows Azure Developer? Lots!!
 
(WEB203) Building a Website That Costs Pennies to Operate | AWS re:Invent 2014
(WEB203) Building a Website That Costs Pennies to Operate | AWS re:Invent 2014(WEB203) Building a Website That Costs Pennies to Operate | AWS re:Invent 2014
(WEB203) Building a Website That Costs Pennies to Operate | AWS re:Invent 2014
 
Become an Automation Ninja in 60 Minutes
Become an Automation Ninja in 60 MinutesBecome an Automation Ninja in 60 Minutes
Become an Automation Ninja in 60 Minutes
 
Serverless Stream Processing with Bill Bejeck
Serverless Stream Processing with Bill BejeckServerless Stream Processing with Bill Bejeck
Serverless Stream Processing with Bill Bejeck
 
Azure Web App services
Azure Web App servicesAzure Web App services
Azure Web App services
 
5 things you don't know about Amazon Web Services
5 things you don't know about Amazon Web Services5 things you don't know about Amazon Web Services
5 things you don't know about Amazon Web Services
 
Automating Azure VMs with PowerShell
Automating Azure VMs with PowerShellAutomating Azure VMs with PowerShell
Automating Azure VMs with PowerShell
 

Similar to Windows Server AppFabric Caching - What it is & when you should use it?

TechDays 2010 Portugal - Scaling your data tier with app fabric 16x9
TechDays 2010 Portugal - Scaling your data tier with app fabric 16x9TechDays 2010 Portugal - Scaling your data tier with app fabric 16x9
TechDays 2010 Portugal - Scaling your data tier with app fabric 16x9Nuno Godinho
 
Ajax to the Moon
Ajax to the MoonAjax to the Moon
Ajax to the Moondavejohnson
 
Mike Taulty MIX10 Silverlight Frameworks and Patterns
Mike Taulty MIX10 Silverlight Frameworks and PatternsMike Taulty MIX10 Silverlight Frameworks and Patterns
Mike Taulty MIX10 Silverlight Frameworks and Patternsukdpe
 
WebSphere App Server vs JBoss vs WebLogic vs Tomcat (InterConnect 2016)
WebSphere App Server vs JBoss vs WebLogic vs Tomcat (InterConnect 2016)WebSphere App Server vs JBoss vs WebLogic vs Tomcat (InterConnect 2016)
WebSphere App Server vs JBoss vs WebLogic vs Tomcat (InterConnect 2016)Roman Kharkovski
 
Introduction to Alfresco Surf Platform
Introduction to Alfresco Surf PlatformIntroduction to Alfresco Surf Platform
Introduction to Alfresco Surf PlatformAlfresco Software
 
Open Source Web Technologies
Open Source Web TechnologiesOpen Source Web Technologies
Open Source Web TechnologiesAastha Sethi
 
Dave Orchard - Offline Web Apps with HTML5
Dave Orchard - Offline Web Apps with HTML5Dave Orchard - Offline Web Apps with HTML5
Dave Orchard - Offline Web Apps with HTML5Web Directions
 
Effizientere WordPress-Plugin-Entwicklung mit Softwaretests
Effizientere WordPress-Plugin-Entwicklung mit SoftwaretestsEffizientere WordPress-Plugin-Entwicklung mit Softwaretests
Effizientere WordPress-Plugin-Entwicklung mit SoftwaretestsDECK36
 
Google App Engine for Java v0.0.2
Google App Engine for Java v0.0.2Google App Engine for Java v0.0.2
Google App Engine for Java v0.0.2Matthew McCullough
 
20211202 North America DevOps Group NADOG Adapting to Covid With Serverless C...
20211202 North America DevOps Group NADOG Adapting to Covid With Serverless C...20211202 North America DevOps Group NADOG Adapting to Covid With Serverless C...
20211202 North America DevOps Group NADOG Adapting to Covid With Serverless C...Craeg Strong
 
Windows Azure & How to Deploy Wordress
Windows Azure & How to Deploy WordressWindows Azure & How to Deploy Wordress
Windows Azure & How to Deploy WordressGeorge Kanellopoulos
 
ASP.NET 4.0 Cache Extensibility
ASP.NET 4.0 Cache ExtensibilityASP.NET 4.0 Cache Extensibility
ASP.NET 4.0 Cache Extensibilityakrakovetsky
 
murakumo Cloud Controller
murakumo Cloud Controllermurakumo Cloud Controller
murakumo Cloud ControllerShingo Kawano
 
What’s New in ASP.NET 4
What’s New in ASP.NET 4What’s New in ASP.NET 4
What’s New in ASP.NET 4Todd Anglin
 
Joomla! Performance on Steroids
Joomla! Performance on SteroidsJoomla! Performance on Steroids
Joomla! Performance on SteroidsSiteGround.com
 
20211202 NADOG Adapting to Covid with Serverless Craeg Strong Ariel Partners
20211202 NADOG Adapting to Covid with Serverless Craeg Strong Ariel Partners20211202 NADOG Adapting to Covid with Serverless Craeg Strong Ariel Partners
20211202 NADOG Adapting to Covid with Serverless Craeg Strong Ariel PartnersCraeg Strong
 

Similar to Windows Server AppFabric Caching - What it is & when you should use it? (20)

TechDays 2010 Portugal - Scaling your data tier with app fabric 16x9
TechDays 2010 Portugal - Scaling your data tier with app fabric 16x9TechDays 2010 Portugal - Scaling your data tier with app fabric 16x9
TechDays 2010 Portugal - Scaling your data tier with app fabric 16x9
 
Ajax to the Moon
Ajax to the MoonAjax to the Moon
Ajax to the Moon
 
Sun Web Server Brief
Sun Web Server BriefSun Web Server Brief
Sun Web Server Brief
 
Mike Taulty MIX10 Silverlight Frameworks and Patterns
Mike Taulty MIX10 Silverlight Frameworks and PatternsMike Taulty MIX10 Silverlight Frameworks and Patterns
Mike Taulty MIX10 Silverlight Frameworks and Patterns
 
WebSphere App Server vs JBoss vs WebLogic vs Tomcat (InterConnect 2016)
WebSphere App Server vs JBoss vs WebLogic vs Tomcat (InterConnect 2016)WebSphere App Server vs JBoss vs WebLogic vs Tomcat (InterConnect 2016)
WebSphere App Server vs JBoss vs WebLogic vs Tomcat (InterConnect 2016)
 
Introduction to Alfresco Surf Platform
Introduction to Alfresco Surf PlatformIntroduction to Alfresco Surf Platform
Introduction to Alfresco Surf Platform
 
Open Source Web Technologies
Open Source Web TechnologiesOpen Source Web Technologies
Open Source Web Technologies
 
Dave Orchard - Offline Web Apps with HTML5
Dave Orchard - Offline Web Apps with HTML5Dave Orchard - Offline Web Apps with HTML5
Dave Orchard - Offline Web Apps with HTML5
 
Effizientere WordPress-Plugin-Entwicklung mit Softwaretests
Effizientere WordPress-Plugin-Entwicklung mit SoftwaretestsEffizientere WordPress-Plugin-Entwicklung mit Softwaretests
Effizientere WordPress-Plugin-Entwicklung mit Softwaretests
 
Google App Engine for Java v0.0.2
Google App Engine for Java v0.0.2Google App Engine for Java v0.0.2
Google App Engine for Java v0.0.2
 
20211202 North America DevOps Group NADOG Adapting to Covid With Serverless C...
20211202 North America DevOps Group NADOG Adapting to Covid With Serverless C...20211202 North America DevOps Group NADOG Adapting to Covid With Serverless C...
20211202 North America DevOps Group NADOG Adapting to Covid With Serverless C...
 
Windows Azure & How to Deploy Wordress
Windows Azure & How to Deploy WordressWindows Azure & How to Deploy Wordress
Windows Azure & How to Deploy Wordress
 
Ibm
IbmIbm
Ibm
 
ASP.NET 4.0 Cache Extensibility
ASP.NET 4.0 Cache ExtensibilityASP.NET 4.0 Cache Extensibility
ASP.NET 4.0 Cache Extensibility
 
murakumo Cloud Controller
murakumo Cloud Controllermurakumo Cloud Controller
murakumo Cloud Controller
 
What’s New in ASP.NET 4
What’s New in ASP.NET 4What’s New in ASP.NET 4
What’s New in ASP.NET 4
 
Joomla! Performance on Steroids
Joomla! Performance on SteroidsJoomla! Performance on Steroids
Joomla! Performance on Steroids
 
20211202 NADOG Adapting to Covid with Serverless Craeg Strong Ariel Partners
20211202 NADOG Adapting to Covid with Serverless Craeg Strong Ariel Partners20211202 NADOG Adapting to Covid with Serverless Craeg Strong Ariel Partners
20211202 NADOG Adapting to Covid with Serverless Craeg Strong Ariel Partners
 
2310 b 15
2310 b 152310 b 15
2310 b 15
 
2310 b 15
2310 b 152310 b 15
2310 b 15
 

More from Robert MacLean

14 things you need to be a successful software developer (v3)
14 things you need to be a successful software developer (v3)14 things you need to be a successful software developer (v3)
14 things you need to be a successful software developer (v3)Robert MacLean
 
Building a µservice with Kotlin, Micronaut & GCP
Building a µservice with Kotlin, Micronaut & GCPBuilding a µservice with Kotlin, Micronaut & GCP
Building a µservice with Kotlin, Micronaut & GCPRobert MacLean
 
Features of Kotlin I find exciting
Features of Kotlin I find excitingFeatures of Kotlin I find exciting
Features of Kotlin I find excitingRobert MacLean
 
DevConf Survival Guide
DevConf Survival GuideDevConf Survival Guide
DevConf Survival GuideRobert MacLean
 
The state of testing @ Microsoft
The state of testing @ MicrosoftThe state of testing @ Microsoft
The state of testing @ MicrosoftRobert MacLean
 
Visual Studio ❤ JavaScript
Visual Studio ❤ JavaScriptVisual Studio ❤ JavaScript
Visual Studio ❤ JavaScriptRobert MacLean
 
Putting the DOT in .NET - Dev/Ops/Test
Putting the DOT in .NET - Dev/Ops/TestPutting the DOT in .NET - Dev/Ops/Test
Putting the DOT in .NET - Dev/Ops/TestRobert MacLean
 
A Developer Day 2014 - Durban
A Developer Day 2014 - Durban A Developer Day 2014 - Durban
A Developer Day 2014 - Durban Robert MacLean
 
Agile lessons learned in the Microsoft ALM Rangers
Agile lessons learned in the Microsoft ALM RangersAgile lessons learned in the Microsoft ALM Rangers
Agile lessons learned in the Microsoft ALM RangersRobert MacLean
 
Hour of code - Train the trainer
Hour of code - Train the trainerHour of code - Train the trainer
Hour of code - Train the trainerRobert MacLean
 
Building services for apps on a shoestring budget
Building services for apps on a shoestring budgetBuilding services for apps on a shoestring budget
Building services for apps on a shoestring budgetRobert MacLean
 
3 things your app API is doing WRONG
3 things your app API is doing WRONG3 things your app API is doing WRONG
3 things your app API is doing WRONGRobert MacLean
 

More from Robert MacLean (20)

14 things you need to be a successful software developer (v3)
14 things you need to be a successful software developer (v3)14 things you need to be a successful software developer (v3)
14 things you need to be a successful software developer (v3)
 
Git
GitGit
Git
 
OWASP TOP 10
OWASP TOP 10OWASP TOP 10
OWASP TOP 10
 
Building a µservice with Kotlin, Micronaut & GCP
Building a µservice with Kotlin, Micronaut & GCPBuilding a µservice with Kotlin, Micronaut & GCP
Building a µservice with Kotlin, Micronaut & GCP
 
Looking at the Vue
Looking at the VueLooking at the Vue
Looking at the Vue
 
Kotlin 101
Kotlin 101Kotlin 101
Kotlin 101
 
Features of Kotlin I find exciting
Features of Kotlin I find excitingFeatures of Kotlin I find exciting
Features of Kotlin I find exciting
 
JavaScript Gotchas
JavaScript GotchasJavaScript Gotchas
JavaScript Gotchas
 
DevConf Survival Guide
DevConf Survival GuideDevConf Survival Guide
DevConf Survival Guide
 
The state of testing @ Microsoft
The state of testing @ MicrosoftThe state of testing @ Microsoft
The state of testing @ Microsoft
 
Visual Studio ❤ JavaScript
Visual Studio ❤ JavaScriptVisual Studio ❤ JavaScript
Visual Studio ❤ JavaScript
 
What is new in C# 6?
What is new in C# 6?What is new in C# 6?
What is new in C# 6?
 
Putting the DOT in .NET - Dev/Ops/Test
Putting the DOT in .NET - Dev/Ops/TestPutting the DOT in .NET - Dev/Ops/Test
Putting the DOT in .NET - Dev/Ops/Test
 
A Developer Day 2014 - Durban
A Developer Day 2014 - Durban A Developer Day 2014 - Durban
A Developer Day 2014 - Durban
 
Agile lessons learned in the Microsoft ALM Rangers
Agile lessons learned in the Microsoft ALM RangersAgile lessons learned in the Microsoft ALM Rangers
Agile lessons learned in the Microsoft ALM Rangers
 
Hour of code - Train the trainer
Hour of code - Train the trainerHour of code - Train the trainer
Hour of code - Train the trainer
 
Building services for apps on a shoestring budget
Building services for apps on a shoestring budgetBuilding services for apps on a shoestring budget
Building services for apps on a shoestring budget
 
3 things your app API is doing WRONG
3 things your app API is doing WRONG3 things your app API is doing WRONG
3 things your app API is doing WRONG
 
ASP.NET
ASP.NETASP.NET
ASP.NET
 
LightSwitch
LightSwitchLightSwitch
LightSwitch
 

Recently uploaded

Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embeddingZilliz
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
The Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfThe Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfSeasiaInfotech2
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostZilliz
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesZilliz
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 

Recently uploaded (20)

Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embedding
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
The Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfThe Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdf
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector Databases
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 

Windows Server AppFabric Caching - What it is & when you should use it?

  • 1.
  • 2. Robert MacLean Technology Specialist BB&D Windows Server AppFabric Caching: What it is & When you should use it?
  • 3. Who am I? Robert MacLean Microsoft ALM MVP Microsoft ALM Ranger Proud Community Lead Information Worker S.A. Architect www.sadev.co.za @rmaclean
  • 4. Overture Level 300 State of play Briefly what is AppFabric? What do we get from AppFabric Caching and how to use it!
  • 5. Advert Time AppFabric: Wed, 11:15pm - WCF Made Easy with .NET 4 and Windows Server AppFabric Other: Wed, 8:30pm - Tales From the field – Best practices and guidance on implementing TFS2010
  • 6. State of play .NET prior to 4 ASP.NET Caching Enterprise Library Caching .NET 4 brings us .NET 4 Caching All are local in-memory caches!
  • 8. What is the issue with these? Limited to memory of current machine Limited to current process Imagine if I need 50Gb of cache? What about load balancing?
  • 9. A rose by any other name… Windows Server AppFabric contains two key components Hosting EndPoint, Windows App Server Extensions, Dublin Caching Velocity Not to be confused with Azure AppFabric
  • 10. N.B. AppFabric Requires .NET 4 on Server Not all applications need .NET 4, depends on features used Standalone download or Web Platform Installer High Availability is only in Windows Server 2008 Enterprise & Data Centre
  • 11. What is AppFabric Cache? An in-memory distributed cache which you can call from any .NET application Optimised for the cache-aside pattern Programming against the cache is explicit Changing the cache doesn’t update the original data store
  • 12. AppFabric Cache Single View Cache Server Single view from code Services Cache Server Data 1 Data 2 Data 3 Data 4 Cache Server Cache Server
  • 13. AppFabric Caching Info Common Configuration Store XML Database Runs as Windows Service Communication Between Nodes WCF net.tcp Self Adjusting
  • 14. AppFabric Server Types Dedicated Cache Server All it does is AppFabric caching – good for lots of memory and great performation Hybrid Cache Server Runs AppFabric caching & other tools. SQL + AppFabric Web + AppFabric Local Cache Server Runs AppFabric per application locally Used in conjunction with hybrid and/or dedicated
  • 15. What can I cache? Anything that can be serialised XML POCO Binary Data
  • 16. Data Cache Planning Reference Data Cities, provinces, product info, etc… Activity Data Session, per user etc.. Resource Data Data with contention We will look at this more later… NB: Plan, plan and plan some more
  • 17. Management All Configuration and Administration is done via PowerShell From the MVP’s: http://mdcadmintool.codeplex.com/
  • 18. AppFabric from IT Pro to Developer Demo
  • 19. Cache Structure Review Server Server Server Named Cache: Default Named Cache: Products Named Cache: Users Region: Male Region: Female Items & Tags
  • 20. Expiration of cache items Put & Add Timeout Notification Polling Default: 300 secs Expiration timeout defaults can be controlled on a cache level
  • 21. Eviction @ Low watermark Expired items removed @ High watermark Items, expired or not, can be removed or allocated to another server Items picked by using LRU Can disable if needed
  • 22. ORM’s Some ORM’s implement second level caching It is possible to change the second level to AppFabric Examples: NHibernate & Entity Framework
  • 23. A Problem with Caching AppFabric Cache Name : Robert Balance: 1500 Write DB Name : Robert Balance: 15 ATM ATM ORM UI ORM UI Name : Robert Balance: 15
  • 24. Solution .GetAndLock .PutAndUnlock .Unlock Supports locking timeout Locked items can survive expiration Unlock can prolong expiration
  • 25. Data Cache Planning Reference Data Cities, provinces, product info, etc… Activity Data Session, per user etc.. Resource Data Data with contention NB: Plan, plan and plan some more Great with defaults Region per user Locking per item
  • 26. Cluster Configuration First node initialises cluster Other nodes join During install you must configure projected size Small: 1 – 5 nodes Medium: 6 – 15 nodes Large: > 15 nodes Performance based on this setting – adding/removing nodes does not effect this
  • 27. Security Domain: Authentication in AD, Authorisation in AppFabric Only authorised servers join clusters Only authorised clients connect to clusters Workgroup Authentication in network share, Authorisation in AppFabric Transport Level Security Signing and Encryption
  • 28. Typical Web Architecture Users Web Servers Load Balancer State State State DB
  • 29. ASP.NET Out of the box caching InProc (Default) StateServer SQLServer All can be enabled by via config change Now AppFabric support also just a config change
  • 30. ASP.NET AppFabricConfig <configSections> <sectionname="dataCacheClient“type="Microsoft.Data.Caching.DataCacheClientSection, CacheBaseLibrary" allowLocation="true"allowDefinition="Everywhere"/> <sectionname="fabric“type="System.Data.Fabric.Common.ConfigFile, FabricCommon“ allowLocation="true"allowDefinition="Everywhere"/> </configSections> <dataCacheClientdeployment="routing"> <localCacheisEnabled="false"/> <hosts> <hostname="localhost"cachePort="22233“ cacheHostName="DistributedCacheService"/> </hosts> </dataCacheClient> <fabric> <sectionname="logging"path=""> <collectionname="sinks"collectionType="list"> <customTypeclassName="System.Data.Fabric.Common.EventLogger,FabricCommon"sinkName="System.Data.Fabric.Common.ConsoleSink,FabricCommon"sinkParam=""defaultLevel="-1"/> <customTypeclassName="System.Data.Fabric.Common.EventLogger,FabricCommon"sinkName="System.Data.Fabric.Common.FileEventSink,FabricCommon"sinkParam="DcacheLog/dd-hh-mm"defaultLevel="-1"/> <customTypeclassName="System.Data.Fabric.Common.EventLogger,FabricCommon“ sinkName="Microsoft.Data.Caching.ETWSink, CacheBaseLibrary“ sinkParam=""defaultLevel="-1"/> </collection> </section> </fabric> <system.web> <sessionStatemode="Custom"customProvider="Velocity"> <providers> <addname="Velocity"type="Microsoft.Data.Caching.DataCacheSessionStoreProvider, ClientLibrary"cacheName="session"/> </providers> </sessionState> </system.web>
  • 31. ASP.NET AppFabricConfig <configSections> <sectionname="dataCacheClient“type="Microsoft.Data.Caching.DataCacheClientSection, CacheBaseLibrary" allowLocation="true"allowDefinition="Everywhere"/> <sectionname="fabric“type="System.Data.Fabric.Common.ConfigFile, FabricCommon“ allowLocation="true"allowDefinition="Everywhere"/> </configSections> <dataCacheClientdeployment="routing"> <localCacheisEnabled="false"/> <hosts> <hostname="localhost"cachePort="22233“ cacheHostName="DistributedCacheService"/> </hosts> </dataCacheClient> <fabric> <sectionname="logging"path=""> <collectionname="sinks"collectionType="list"> <customTypeclassName="System.Data.Fabric.Common.EventLogger,FabricCommon"sinkName="System.Data.Fabric.Common.ConsoleSink,FabricCommon"sinkParam=""defaultLevel="-1"/> <customTypeclassName="System.Data.Fabric.Common.EventLogger,FabricCommon"sinkName="System.Data.Fabric.Common.FileEventSink,FabricCommon"sinkParam="DcacheLog/dd-hh-mm"defaultLevel="-1"/> <customTypeclassName="System.Data.Fabric.Common.EventLogger,FabricCommon“ sinkName="Microsoft.Data.Caching.ETWSink, CacheBaseLibrary“ sinkParam=""defaultLevel="-1"/> </collection> </section> </fabric> <system.web> <sessionStatemode="Custom"customProvider="Velocity"> <providers> <addname="Velocity"type="Microsoft.Data.Caching.DataCacheSessionStoreProvider, ClientLibrary"cacheName="session"/> </providers> </sessionState> </system.web> <configSections> <sectionname="dataCacheClient“type="Microsoft.Data.Caching.DataCacheClientSection, CacheBaseLibrary" allowLocation="true"allowDefinition="Everywhere"/> <sectionname="fabric“type="System.Data.Fabric.Common.ConfigFile, FabricCommon“ allowLocation="true"allowDefinition="Everywhere"/> </configSections>
  • 32. ASP.NET AppFabricConfig <configSections> <sectionname="dataCacheClient“type="Microsoft.Data.Caching.DataCacheClientSection, CacheBaseLibrary" allowLocation="true"allowDefinition="Everywhere"/> <sectionname="fabric“type="System.Data.Fabric.Common.ConfigFile, FabricCommon“ allowLocation="true"allowDefinition="Everywhere"/> </configSections> <dataCacheClientdeployment="routing"> <localCacheisEnabled="false"/> <hosts> <hostname="localhost"cachePort="22233“ cacheHostName="DistributedCacheService"/> </hosts> </dataCacheClient> <fabric> <sectionname="logging"path=""> <collectionname="sinks"collectionType="list"> <customTypeclassName="System.Data.Fabric.Common.EventLogger,FabricCommon"sinkName="System.Data.Fabric.Common.ConsoleSink,FabricCommon"sinkParam=""defaultLevel="-1"/> <customTypeclassName="System.Data.Fabric.Common.EventLogger,FabricCommon"sinkName="System.Data.Fabric.Common.FileEventSink,FabricCommon"sinkParam="DcacheLog/dd-hh-mm"defaultLevel="-1"/> <customTypeclassName="System.Data.Fabric.Common.EventLogger,FabricCommon“ sinkName="Microsoft.Data.Caching.ETWSink, CacheBaseLibrary“ sinkParam=""defaultLevel="-1"/> </collection> </section> </fabric> <system.web> <sessionStatemode="Custom"customProvider="Velocity"> <providers> <addname="Velocity"type="Microsoft.Data.Caching.DataCacheSessionStoreProvider, ClientLibrary"cacheName="session"/> </providers> </sessionState> </system.web> <dataCacheClientdeployment="routing"> <localCacheisEnabled="false"/> <hosts> <hostname="localhost"cachePort="22233“ cacheHostName="DistributedCacheService"/> </hosts> </dataCacheClient>
  • 33. ASP.NET AppFabricConfig <fabric> <sectionname="logging"path=""> <collectionname="sinks"collectionType="list"> <customTypeclassName="System.Data.Fabric.Common.EventLogger,FabricCommon"sinkName="System.Data.Fabric.Common.ConsoleSink,FabricCommon"sinkParam=""defaultLevel="-1"/> … </collection> </section> </fabric> <configSections> <sectionname="dataCacheClient“type="Microsoft.Data.Caching.DataCacheClientSection, CacheBaseLibrary" allowLocation="true"allowDefinition="Everywhere"/> <sectionname="fabric“type="System.Data.Fabric.Common.ConfigFile, FabricCommon“ allowLocation="true"allowDefinition="Everywhere"/> </configSections> <dataCacheClientdeployment="routing"> <localCacheisEnabled="false"/> <hosts> <hostname="localhost"cachePort="22233“ cacheHostName="DistributedCacheService"/> </hosts> </dataCacheClient> <fabric> <sectionname="logging"path=""> <collectionname="sinks"collectionType="list"> <customTypeclassName="System.Data.Fabric.Common.EventLogger,FabricCommon"sinkName="System.Data.Fabric.Common.ConsoleSink,FabricCommon"sinkParam=""defaultLevel="-1"/> <customTypeclassName="System.Data.Fabric.Common.EventLogger,FabricCommon"sinkName="System.Data.Fabric.Common.FileEventSink,FabricCommon"sinkParam="DcacheLog/dd-hh-mm"defaultLevel="-1"/> <customTypeclassName="System.Data.Fabric.Common.EventLogger,FabricCommon“ sinkName="Microsoft.Data.Caching.ETWSink, CacheBaseLibrary“ sinkParam=""defaultLevel="-1"/> </collection> </section> </fabric> <system.web> <sessionStatemode="Custom"customProvider="Velocity"> <providers> <addname="Velocity"type="Microsoft.Data.Caching.DataCacheSessionStoreProvider, ClientLibrary"cacheName="session"/> </providers> </sessionState> </system.web>
  • 34. ASP.NET AppFabricConfig <configSections> <sectionname="dataCacheClient“type="Microsoft.Data.Caching.DataCacheClientSection, CacheBaseLibrary" allowLocation="true"allowDefinition="Everywhere"/> <sectionname="fabric“type="System.Data.Fabric.Common.ConfigFile, FabricCommon“ allowLocation="true"allowDefinition="Everywhere"/> </configSections> <dataCacheClientdeployment="routing"> <localCacheisEnabled="false"/> <hosts> <hostname="localhost"cachePort="22233“ cacheHostName="DistributedCacheService"/> </hosts> </dataCacheClient> <fabric> <sectionname="logging"path=""> <collectionname="sinks"collectionType="list"> <customTypeclassName="System.Data.Fabric.Common.EventLogger,FabricCommon"sinkName="System.Data.Fabric.Common.ConsoleSink,FabricCommon"sinkParam=""defaultLevel="-1"/> <customTypeclassName="System.Data.Fabric.Common.EventLogger,FabricCommon"sinkName="System.Data.Fabric.Common.FileEventSink,FabricCommon"sinkParam="DcacheLog/dd-hh-mm"defaultLevel="-1"/> <customTypeclassName="System.Data.Fabric.Common.EventLogger,FabricCommon“ sinkName="Microsoft.Data.Caching.ETWSink, CacheBaseLibrary“ sinkParam=""defaultLevel="-1"/> </collection> </section> </fabric> <system.web> <sessionStatemode="Custom"customProvider="Velocity"> <providers> <addname="Velocity"type="Microsoft.Data.Caching.DataCacheSessionStoreProvider, ClientLibrary"cacheName="session"/> </providers> </sessionState> </system.web> <system.web> <sessionStatemode="Custom"customProvider="Velocity"> <providers> <addname="Velocity"type="Microsoft.Data.Caching.DataCacheSessionStoreProvider, ClientLibrary"cacheName="session"/> </providers> </sessionState> </system.web>
  • 35. Summary Windows Server AppFabric Cache is a distributed application cache Caching is important to application scalability Explicit caching API available to .NET 3.5 SP1 and .NET 4.0 ASP.NET Session provider an implicit way to take advantage of the Cache’s capabilities Plan, plan and plan some more
  • 36. Questions robert@sadev.co.za @rmaclean Meet me at the community lounge
  • 37. Resources Required Slide Learning Sessions On-Demand & Community Microsoft Certification & Training Resources www.microsoft.com/teched www.microsoft.com/learning Resources for IT Professionals Resources for Developers http://microsoft.com/msdn http://microsoft.com/technet Need more Information? SMS [ Your Name ] and the word “AppServer” to 41491
  • 38. Complete an evaluation via CommNet and Tag to win amazing prizes!
  • 39. © 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.
  • 40. Notes – Hide slide
  • 41. AgendaAgenda Subtitle Agenda item 1 Agenda subheading Agenda Item 2 Agenda subheading Agenda item 3 Agenda subheading Etc…
  • 42. Name Title Company Title of Presentation SESSION CODE: #####
  • 43. PowerPoint TemplateSubtitle color Example of a slide with a subhead Set the slide header to “Title Case” Set subheads in “sentence case” Generally set subhead to 36pt or smaller so it will fit on asingle line The subhead color is defined for this template but mustbe selected
  • 44. Sample Fill Sample Fill PowerPoint Guidelines Font, size, and color for text have been formatted for you in the Slide Master Use the color palette shown below Hyperlink color: www.microsoft.com Sample Fill Sample Fill Sample Fill Sample Fill
  • 45. Slide for Showing Software Code Use this layout to show software code The font is Consolas, a monospace font The slide doesn’t use bullets but levels can be indented using the “Increase List Level” icon on the Home menu To use straight quotes " instead of smart quotes ”, do this: Click on the Office Button in the upper left corner At the bottom of the menu, choose PowerPoint Options From the left pane, select Proofing Click on the AutoCorrect Options button Select the AutoFormat As You Type tab, and deselect “Straight quotes” with “smart quotes”. Then Click OK.
  • 49. Breakout sessions Breakout sessions Breakout sessions Breakout sessions Related Content