ASP.NET Scalability - NxtGen Oxford

Download ASP.NET Scalability - NxtGen Oxford

Post on 13-May-2015




1 download

Embed Size (px)


<ul><li>1.This One Goes Up To 11 orHow to write scalable ASP.NETPhil Pursglove </li></ul> <p>2. About Me Senior .NET Developer MBCS MCSD VBUG East Anglia Co-ordinator Written for VB Developer and SQL Server Pro 3. Agenda Increasing server performance Caching Output caching Object caching Donut caching Velocity Paging Reducing network loads Managing ViewState Compression Load Balancing 4. What is Scalability? The ability to handle growing amounts of work in a graceful manner Wikipedia What affects scalability? Everything you see this evening applies to .NET 2.0 and higher 5. Increasing Server Performance 6. Why Cache? Because theres a credit crunch! Building a page is an expensive process Database calls across servers Web Service calls AD lookups Returning a stored page from a cache is much cheaper! 7. Caching 1: OutputCache Caches the rendered HTML from your page Duration is in seconds VaryByParam allows you to cache several versions Location means you can cache on the web server, client, downstream machines or all of these CacheProfiles mean you have fine config- based control 8. Caching 2: Caching API Store objects in memory and pull them out when you need them For data objects, you have to use DataSets and DataTables, not DataReaders 9. Caching 2: CacheDependency Objects in the cache can be dependent on other objects When the dependency changes, the cached item is removed Not very useful in .NET 1.1 .NET 2.0 introduced SqlCacheDependency Cached objects can be dependent on SQL tables Enable using the ASPNET_REGSQL tool Or programmatically with the SqlCacheDependencyAdmin object 10. Caching 3: Velocity Velocity Distributed cache One logical cache split across several servers PowerShell management console CTP2 released at PDC CTP3 releasing at Mix 09 Doesnt have dependencies yet The future: automatic caching? 11. Caching 3: Velocity 12. Caching 4: Donut Caching aka Post-Cache Substitution Inject dynamic content into a cached page before it is returned to the client Must use static methods with a HttpContext 13. Paging Default GridView paging behaviour reads the entire dataset every time For 100 000 rows this probably isnt so good Write your own paging mechanism For custom paging DataGrids are better than GridViews In SQL 2005 the ROW_NUMBER function is your friend! LINQ Skip 14. Reducing Network Loads 15. ViewState 1 Viewstate Sizein bytesHTML Table (built in-line)52 HTML Table (built in code-behind)52 DataList6628Repeater 6600 DataGrid10592 GridView10928 16. ViewState 2 Taming Viewstate Can be disabled per-control ZIP it up and put the zipped version on the page Keep it on the web server 17. Compression 1 All modern browsers will accept compressed content Content is compressed on the server /decompressed by the browser Can be enabled in IIS or Use the HttpCompress library 18. Compression 19. Compression 2 JavaScript Compression JSMin ( jQuery is pre-minified for you CSS Compression 20. Load Balancing 21. Load Balancing Synchronise machineKey (in machine.config) Dont use basic Session state SQL Server Session State ASP.NET State Service Velocity ASP.NET Session state 22. Summary Cache is King! Paging is good for your pages! Viewstate doesnt have to be evil! 23. Any Questions? 24. Resources DotNetRocks Books Essential ASP.NET by Fritz Onion The ASP.NET 2.0 Cookbook by Michael Gittel &amp; Geoffrey LeBlond The ASP.NET Anthology by Scott Allen et al MSDN White Paper on .NET Performance &amp; Scalability 25. Resources Velocity hingWithMicrosoftsVelocity.aspx Donut Caching HttpCompress Library </p>