0% found this document useful (0 votes)
2 views

ASPNET_BestPractices_DevChat3

The document outlines best practices for ASP.NET development, covering topics such as server control design, state management, and performance optimization techniques. It emphasizes the importance of using code-behind for scalability, implementing caching strategies, and optimizing data flow across tiers. Additionally, it provides recommendations for deployment and measurement techniques to ensure high-performance web applications.

Uploaded by

username_12345
Copyright
© © All Rights Reserved
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
2 views

ASPNET_BestPractices_DevChat3

The document outlines best practices for ASP.NET development, covering topics such as server control design, state management, and performance optimization techniques. It emphasizes the importance of using code-behind for scalability, implementing caching strategies, and optimizing data flow across tiers. Additionally, it provides recommendations for deployment and measurement techniques to ensure high-performance web applications.

Uploaded by

username_12345
Copyright
© © All Rights Reserved
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 54

Best Practices for

ASP.NET Development

Ammar Abuthuraya
Developer & Platform Lead
Microsoft Corporation
What we will cover
 Designing ASP.NET Web forms
 Use code-behind for best performance and scalability
 ASP.NET caching techniques
 State management options
 Recommendations for communicating with COM components from ASP.NET
Session Prerequisites
 Understand .NET architecture
 Working knowledge of either VB.NET or C#
 Knowledge of ASP.NET application architecture
 Knowledge of ASP

Level 300
So Why This Presentation?
 You know how to build ASP applications and use the same techniques to build ASP.NET
applications
 You want to leverage the power and capabilities of ASP.NET
 You want to use ASP.NET to build high-performance, scalable, web-based applications
Demonstrations
 Language best practices
 Server Control design practices
 Component & user control design
 State management recommendations
 Caching techniques
 Measuring performance
Agenda
 Language and Code Practices
 Server Control Design Practices
 Component and User Control Usage Practices
 State Management Recommendations
 Deployment Best Practices
 Measurement Techniques
Language and Code Practices
Code Performance
 .NET Common Language Runtime (CLR) provides big runtime performance wins
 Further optimize by native code generation using NGEN.EXE
 No perf difference in .NET languages
 Equivalent code written in VB and C# provides equivalent performance at runtime
Language and Code Practices
Binding in VB.NET
 Early binding in VB performs better than
late binding
‘ VB Late Binding Example
Dim j, obj
obj = New System.Collections.ArrayList()
for j = 0 To i
obj.Add(j)
Next

‘ VB Early Binding Example


Dim j as integer, obj As ArrayList
obj = New System.Collections.ArrayList()
for j = 0 To i
obj.Add(j)
Next
Language and Code Practices
Language Recommendations
 Avoid using late binding in VB
 Explicitly declare all variable types (Dim a as Long)
 Avoid late bound methods on Object type
 Use <%@ Page Language=“VB” Explicit=“true” %>
 Requires all variables to be declared (DIM required)
 Still enables late bound code to exist though
 <%@ Page Language=“VB” Strict=“true” %>
 Disallows any late bound code to be used
Language and Code Practices
COM interop Issues
 Apartment threaded components are particularly
expensive in ASP.NET
 ASP.NET now uses MTA thread pool by default that has
very bad perf side effects when running STA
components
 This affects all VB6( STA) components!
Language and Code Practices
interop Recommendations

 Ideally migrate COM code to .NET


 Alternatively structure APIs to be less “chatty” and more “chunky”
in usage
 Use COM interop through System.Runtime.interopServices
 If using apartment components, mark page to run in STA
compat mode:
 <%@ Page ASPCompat=“true” %>
Language and Code Practices
interop Recommendations
 Be careful not to declare any STA
component in “constructor” of page:
<%@ Page Language=“VB” ASPCompat=“true” %>
<script language=“VB” runat=server>
Dim MyComponent as New MySTAComponent() 'Bad!
</script>

<%@ Page Language=“VB” ASPCompat=“true” %>


<script language=“VB” runat=server>
Dim MyComponent as MySTAComponent
Sub Page_Load(Sender as Object, E as EventArgs)
MyComponent = New MySTAComponent()
End Sub
</script>
Demonstration 1
Language Best Practices

Early binding vs. Late Binding Using


COM objects in ASP.NET
Agenda
 Language and Code Practices
 Server Control Design Practices
 Component and User Control Usage Practices
 State Management Recommendations
 Deployment Best Practices
 Measurement Techniques
Server Control Design Practices
Optimizing Server Control Rendering
 Server controls provide a very clean programming model abstraction
 Recommended way to build ASP.NET pages
 Server controls do more rendering/postback work than old-style <%= %> code
 Should understand what this work is and optimize for it accordingly
 Two areas to think about and optimize:
 Rendering Content
 ViewState Postback
Server Control Design Practices
Optimizing Server Control Rendering
 Server controls encapsulate rendering markup logic at runtime
 Handle style and automatic uplevel/downlevel functionality management
 individual server controls each add slight additional rendering cost
 Additional allocations for style management
 Additional allocations for control itself
 Net take: the more individual server controls on page, the more this overhead can
be noticed
 Need to be especially aware of this w/ composite list controls that generate multiple controls per
data row
Server Control Design Practices
Optimizing Use of Viewstate
 ASP.NET allows pages/controls to maintain state across round trips by storing state within hidden
“viewstate” field
 Disabled with “EnableViewState” attribute
 Some downsides:
 increases network payload
 Performance overhead to serialize this
 Recommendation:
 Always review your usage of this feature
 Always disable if you are not doing postback
 Disable on per control basis if possible
 Use <%@ Page Trace=“true” %> to track usage size
Server Control Design Practices
Data Validation Techniques
 Leverage client side scripting capabilities to perform
validations
 Perform validation on both server & client side to avoid
validation bypass
 Make appropriate use of the RequiredFieldValidator
 Use RegularExpressionValidator for validating complex field
types like Credit Card
Server Control Design Practices
Data Binding Best Practices
 Multiple ways to do data access with .NET
 SQL vs. OLEDB ADO.NET Provider
 DataReaders vs. DataSets
 Recommendations:
 Always use SQL Data Provider for Microsoft ® SQL Server™ data access
 Use DataReaders for ASP.NET data access and use DataSets only
when data caching or with web services
Demonstration 2
Server Control Design Practices

Optimizing Server Control Rendering


Optimizing Use of Viewstate
Data Validation Best Practices
Data Binding Best Practices
Agenda
 Language and Code Practices
 Server Control Design Practices
 Component and User Control Usage Practices
 State Management Recommendations
 Deployment Best Practices
 Measurement Techniques
Component & User Control Practices
Improving User Experience
 ASP.NET built-in caching features
 Output Caching
 Fragment Caching
 Caches the static result of an ASP.NET page
 Use the <%@ OutputCache %> directive to control caching behavior
Component & User Control Practices
Improving User Experience
 Caching Options:
 Duration - Time item exists in the cache
 VaryByParam - Varies cache entries by Get/Post params. Name
param, separate by semi-colons, supports *
 VaryByHeader - Varies cache entries by Http header
 VaryByCustom - Override method within Global.asax to custom
vary by whatever you want (you control the cache key)
Component & User Control Practices
Improving User Experience
 Caching the entire page isn’t always possible
 Partial page personalization, etc.
 Fragment Caching allows caching regions of a
page by using user controls (.ascx)
 User controls define <%@ OutputCache %> directive
Component & User Control Practices
Coding Patterns in ASP.NET
 Common coding patterns:
 Spaghetti – include all presentation logic and code in the same page like classic
ASP
 Code behind – all presentation logic is in the aspx file, which is linked to a
separate code behind file
 Component – business logic is present in a compiled component, which is
invoked for providing various services
 There is no perf difference between a dynamically compiled .aspx
(“spaghetti”) and “code behind” style page
Component & User Control Practices
Optimizing Data Flow Across Tiers
 Data exchange across tiers has to be optimized for the
deployment scenario
 Avoid passing datasets across tiers
 Use DataReaders for fast, forward-only access to the data
stream
 XML is very verbose; suitable for communications with
unknown systems
Component & User Control Practices
Optimizing Data Flow Across Tiers
 Minimize the number of post backs
 Leverage client side capabilities to avoid post backs
 Control the amount of view state information passed
during a post back
 Use EnableViewState at page or control level to configure
view state usage.
Demonstration 3
Component & User Control Best
Practices

Buffered Output
Fragment Caching & Custom Caching
Code Behind, User Controls & Components
Data Flow Across Tiers
Optimizing Postback
Agenda
 Language and Code Practices
 Server Control Design Practices
 Component and User Control Usage Practices
 State Management Recommendations
 Deployment Best Practices
 Measurement Techniques
State Management Recommendations
in Proc Session State
 Session state is stored in the ASP.NET worker process
 Recycling the process will cause all session state to be lost
 Session state performance is maximum in this mode
State Management Recommendations
Out of Proc Session State
 Session state can be stored in a State server process running
on the same machine or a different machine
 State can also be stored in a SQL Server database
 Restarting the web server does not cause the session state to
be lost
 More reliable than in process session state but less
performant
State Management Recommendations
Configuring Session State
 Session state can be configured via the <sessionState>
element in the web.config file
 Change causes ASP.NET application to be restarted, all
new sessions will be stored as per the updated session
configuration
 Out of process session state stores like State Server or
SQL Server must be started & configured properly
Demonstration 4
State Management Best Practices

State Management
Session State in A State Server
Agenda
 Language and Code Practices
 Server Control Design Practices
 Component and User Control Usage Practices
 State Management Recommendations
 Deployment Best Practices
 Measurement Techniques
Deployment Best Practices
Logical Design
 Design your applications using logical 3-Tier Design Practices:
 Pages (.aspx) and User Controls (.ascx)
 Reusable Biz Classes in \bin dir (.vb + .cs)
 Data within a SQL Database

 Design your Web application so that it can be distributed across a Web farm
 Your code shouldn’t assume that a client will always return to the same machine
 Be careful of assumptions regarding statics and application state
Deployment Best Practices
Physical Deployment
 Deploy your applications such that the pages and components run in
same process
 Deploying onto remote servers connected via DCOM or Web Services will almost
always hurt your performance/scalability
 Leverage Web services only for application to application communication -- not
intra app calls
 Leverage ISA Server for configurations where a DMZ security zone is
required
 Enables you to restrict app server access from browser clients
Deployment Best Practices
ISA for DMZ Configurations
DMZ (firewalled)

Browsers ISA ASP.NET SQL


Agenda
 Language and Code Practices
 Server Control Design Practices
 Component and User Control Usage Practices
 State Management Recommendations
 Deployment Best Practices
 Measurement Techniques
Measurement Techniques
Overview of Application Center Test
 Application Center Test (ACT) is a tool designed for stress testing web servers
 The tool assists in determining performance and scalability of a given web site
 The tool also collect useful statistical information during the stress test
 ACT also exposes a programming interface, which can be used for creating stress test scripts
Measurement Techniques
Key Performance indicators
 The key performance indicators of a web application are:
 Processor utilization
 Low value indicates blocking on other resources
 ASP.NET
 Requests/Sec & Requests Queued
 Memory
 Pages Faults/Sec – lower the better, high numbers indicate insufficient memory
condition
Measurement Techniques
Stress Testing
 Stress testing is a defensive mechanism to creating scalable web
sites
 Stress runs will indicate the scalability of the application
 Can be used to determine scale of operation, when to add new hardware etc
 Stress testing should not be the final step in building a web
application. It should be integrated into the development life cycle
 Narrow the scope of a stress run to get more accurate, actionable
results
Measurement Techniques
Stress Testing
 Use the web site logs to determine operational load
 Stress tools like WAS (“Homer”) allow log files to be
“replayed” on a web site and record statistical
performance information
 Run performance monitoring tools on the live
servers to identify scalability issues
Measurement Techniques
Designing Scalable Applications
 Two ways to quantify Web performance:
 Machine Throughput (requests/sec)
 Response Time (time to first/last bytes)
 Measure performance by stressing server
 Utilize multiple client stress machines
 Use Application Center Test tool
 Measure multiple scenarios:
 Simulate end to end scenario walkthroughs of site
 Measure individual page performances
Demonstration 5
Measurement Techniques

Performance Measurement
Session Summary
 in this session we discussed:
 Language and Code Practices
 Server Control Design Practices
 Component and User Control Usage Practices
 State Management Recommendations
 Caching Techniques
 Deployment Best Practices
 Measurement Techniques
for More information…
 MSDN Web site at
 msdn.microsoft.com
MSDN
Essential Resources for Developers
Subscription Library, OS, Professional, Enterprise,
Services Universal Delivered via CD-ROM, DVD, Web

Online MSDN Online, MSDN Flash, How-To


information Resources, Download Center

Training & MSDN Webcasts, MSDN Online


Events Seminars, Tech-Ed, PDC, Developer Days

Print MSDN Magazine


Publications MSDN News

Membership MSDN User Groups


Programs
How-To Resources
Simple, Step-By-Step Procedures
 Embedded Development How-To Resources
 General How-To Resources
 integration How-To Resources
 JScript .NET How-To Resources
 .NET Development How-To Resources
 office Development Resources
 Security How-To Resources
 Visual Basic® .NET How-To Resources
 Visual C#® .NET How-To Resources
 Visual Studio® .NET How-To Resources
 Web Development How-To Resources (ASP, IIS, XML)
 Web Services How-To Resources
 Windows® Development How-To Resources
http://msdn.microsoft.com/howto
MSDN Webcasts
interactive, Live Online Event
 interactive, Synchronous, Live Online
Event
 Discuss the Hottest Topics from
Microsoft
 Open and Free for The General Public
 Takes Place Every Tuesdays

http://www.microsoft.com/usa/webcasts
MSDN Subscriptions
THE way to get Visual Studio .NET
Visual Studio .NET MSDN Subscriptions
Enterprise Architect
• Software and data modeling MSDN Universal
• Enterprise templates $2799 new
• Architectural guidance $2299 renewal/upgrade

Enterprise Developer
• Enterprise lifecycle tools MSDN Enterprise
• Team development support $2199 new
• Core .NET Enterprise $1599 renewal/upgrade

NEW
Servers

Professional
• Tools to build applications MSDN Professional
and XML Web services for $1199 new
Windows and the Web $899 renewal/upgrade
Where Can I Get MSDN?
 Visit MSDN Online at
msdn.microsoft.com
 Register for the MSDN Flash Email
Newsletter at
msdn.microsoft.com/flash
 Become an MSDN CD Subscriber at
msdn.microsoft.com/subscriptions
 MSDN online seminars
msdn.microsoft.com/training/seminars
 Attend More MSDN Events
MS Press
Essential Resources for Developers

Microsoft® Visual Studio® .NET is here!


This is your chance to start building the next big
thing. Develop your .NET skills, increase your
productivity with .NET Books from Microsoft Press®
www.microsoft.com/mspress
Training
Training Resources for Developers
 CourseTitle: introduction to Microsoft
ASP.NET
 Course Number:2063
 Availability: Now
 Detailed Syllabus: www.microsoft.com/traincert

To locate a training provider for this course, please access


www.microsoft.com/traincert
Microsoft Certified Technical Education Centers
are Microsoft’s premier partners for training services
Become A Microsoft
Certified Solution Developer
 What is MCSD?
 Microsoft Certified Solution Developer
 The premier certification for lead developers who
design and develop leading-edge enterprise
solutions with Microsoft development tools,
technologies, and the Microsoft .NET Framework.
 How do I attain the MCSD for Microsoft .NET
certification?
 4 core exams
 1 elective exam
 For complete information visit: www.microsoft.com/
mcsd

You might also like