SlideShare una empresa de Scribd logo
1 de 32
ASP.NET Best Practices	- Useful Tips from the Trenches HabeebRushdan, MCT hrushdan@lowerhead.com LowerHead Consulting, LLC
Target Audience (Why should I sit through this session anyway?) Programmers new to .NET Development Any non-programmer(even those IT gals & guys) interesting in learning about ASP.NET Development Existing ASP.NET web developers interesting in learning a few best practices… we only have a little over an  hour so we can’t cover too much!
Agenda Introductions Brief Introduction of ASP.NET Best Practice Examples More Best Practice Examples A bit More Best Practice Examples… Useful Websites & Articles Conclusion
About your Presenter 10 + Years  working Professionally in the Technology Field Microsoft Certified Trainer (MCT) Microsoft Certified Professional Developer (MCPD: Web Developer) Microsoft Certified Technology Specialist (MCTS: .NET Framework 3.5, ASP.NET Applications) Microsoft Certified Technology Specialist (MCTS: .NET Framework 2.0: Web Applications) Microsoft Certified Application Developer (MCAD.NET) Adobe Certified Instructor - Flash Adobe Certified Expert (ACE - Flash CS3 Professional) Macromedia Certified Flash MX Developer
A little bit about you… Who are you? I really want to know…  (Sorry CSI, I couldn’t resist!)
What is ASP.NET??? A series of Classes that live in the System.Web Assembly Provides the ability to easily create dynamic websites and applications in the .NET Framework Has all the benefits of OOP and the ability to access the thousands of classes built-in to Microsoft’s .NET Framework Class Library
Demo Time – Using Object Browser to look into System.Web Assembly’s Types
ASP.NET Page Execution Life-Cycle A series of ASP.NET Page Events that occur in a specific order Occurs every time you make a Request to an ASP.NET Page Whether it is the first time you visit a page or any additional PostBack to the same page!
ASP.NET Page Life-Cycle Events  PreInit Init InitComplete PreLoad Load Control events  e.g Button1_Click, UserNameTextBox_TextChanged LoadComplete PreRender SaveStateComplete Render Unload
Some of most commonly used ASP.NET Page Life-Cycle Events  PreInit Set a Master page or Theme dynamically Load Set properties in controls and grab data to be bound to controls that allow Data-binding PreRender Make final changes to the contents of the page or its controls e.g. attaching custom HTML attributes to a Button
Demo Time – Handling Page Events
Tips for Creating WebSites Start with a Blank Solution Separate out your Application into logical Tiers Separate Projects for UI, Business Rules, Data-Access, etc Create a BasePage that other pages will inherit from Use MasterPages for consistent layout Use UserControls for reusable UI functionality
Demo Time – Creating a WebSite
State Management Options in ASP.NET ViewState Session Application Cache
ViewState Maintains state at the Page/Control level Is stored in a Hidden Form Input Element on the Client  It can get very large, very quickly so beware and disable it where possible
ASP.NET Control Tips Don’t use a <ASP:Label> Server-side Tag when a caption will not be changed programmatically. Instead, a good Ole’ <Span> Client-side Tag will suffice Disable ViewState in controls that don’t need to maintain their state during PostBacks
Demo Time - ViewState
Session Maintains state at the Session level (generally speaking, per a user’s browser instance) Items are accessible from Page to Page Keep in mind that Items stored In Session “linger” until they Expire Don’t overuse or your web server’s memory will complain! Make sure any custom types you define that need to be stored in Session are marked “Serializable”
Cache Robust Application-wide and Non-Session specific state management object Provides many options for Item Expiration and Dependencies
Cache & Application Suggestions Use the Cache Object instead of the legacy Application Object Cache provides tons of more options for intelligently managing your application-wide state data Compare the options available with Application.Add to the Cache.Add & Cache.Insert
State Management NO NOs Don’t store unmanaged objects in State Management For example: No DataReaders No File Handles (however, the contents of a file stored as System.String is OK)
State Management Suggestions Always check for the existence of an object before accessing it (also called defensive programming) Use string constants for keys This prevents misspellings and other nasty side-effects Consider using a “Manager” pattern with State Management objects
Demo Time – SessionManager Class
Some General Tips Dispose of unmanaged resources after their use This is especially important in web applications because of their disconnected nature Therefore, indulge the “using” statement Make sure you have a robust exception handling strategy Use Try/Catch/Finally where potential issues may occur and have a consistent logical way of dealing with exceptions
Exception Handling in ASP.NET Web.config page redirect option Page_Error Application_Error
ASP.NET AJAX Options Server-side AJAX Using UpdatePanels with existing ASP.NET controls to “trick” the client that PostBacks are not occurring Client-side AJAX No trickery involved but more work & better bang for the buck
AJAX Tips Minimize the use of Server-side AJAX and Update Panels Bad for performance and may cause some unexpected results Embrace Client-side AJAX (true AJAX) Microsoft makes it easy but you will need to learn some JavaScript Don’t be scared… JavaScript is fun and exceptionally versatile!
Demo Time – Client side AJAX
Any Tips you would like to Add? Come on, don’t be shy… We won’t bite ya… we just had some free pizza!
What have you learned? An Overview of ASP.NET Several ASP.NET Best Practices
Useful Websites & Articles Microsoft’s Official Developer Network Site http://www.msdn.com ASP.NET Official Web Site http://www.asp.net/ http://www.asp.net/ajax/ CodeProject Web Site http://www.codeproject.com/
Conclusion Questions?/Comments… As always, “Live long and code proper!”

Más contenido relacionado

Destacado

Monitoring web application response times, a new approach
Monitoring web application response times, a new approachMonitoring web application response times, a new approach
Monitoring web application response times, a new approachMark Friedman
 
Introduction to asp.net
Introduction to asp.netIntroduction to asp.net
Introduction to asp.netshan km
 
Writing clean code in C# and .NET
Writing clean code in C# and .NETWriting clean code in C# and .NET
Writing clean code in C# and .NETDror Helper
 
Concepts of Asp.Net
Concepts of Asp.NetConcepts of Asp.Net
Concepts of Asp.Netvidyamittal
 
DIWE - Coding HTML for Basic Web Designing
DIWE - Coding HTML for Basic Web DesigningDIWE - Coding HTML for Basic Web Designing
DIWE - Coding HTML for Basic Web DesigningRasan Samarasinghe
 
ASP.NET Presentation
ASP.NET PresentationASP.NET Presentation
ASP.NET Presentationdimuthu22
 
DIWE - Programming with JavaScript
DIWE - Programming with JavaScriptDIWE - Programming with JavaScript
DIWE - Programming with JavaScriptRasan Samarasinghe
 
Developing an aspnet web application
Developing an aspnet web applicationDeveloping an aspnet web application
Developing an aspnet web applicationRahul Bansal
 
Asynchronous programming in ASP.NET
Asynchronous programming in ASP.NETAsynchronous programming in ASP.NET
Asynchronous programming in ASP.NETAlex Thissen
 
DIWE - Introduction to Web Technologies
DIWE - Introduction to Web TechnologiesDIWE - Introduction to Web Technologies
DIWE - Introduction to Web TechnologiesRasan Samarasinghe
 
Introduction to ASP.NET
Introduction to ASP.NETIntroduction to ASP.NET
Introduction to ASP.NETRajkumarsoy
 

Destacado (15)

Monitoring web application response times, a new approach
Monitoring web application response times, a new approachMonitoring web application response times, a new approach
Monitoring web application response times, a new approach
 
Introduction to asp.net
Introduction to asp.netIntroduction to asp.net
Introduction to asp.net
 
Asp dot net final (2)
Asp dot net   final (2)Asp dot net   final (2)
Asp dot net final (2)
 
DITEC - E-Commerce & ASP.NET
DITEC - E-Commerce & ASP.NETDITEC - E-Commerce & ASP.NET
DITEC - E-Commerce & ASP.NET
 
ASP.NET Core Security
ASP.NET Core SecurityASP.NET Core Security
ASP.NET Core Security
 
DITEC - Programming with Java
DITEC - Programming with JavaDITEC - Programming with Java
DITEC - Programming with Java
 
Writing clean code in C# and .NET
Writing clean code in C# and .NETWriting clean code in C# and .NET
Writing clean code in C# and .NET
 
Concepts of Asp.Net
Concepts of Asp.NetConcepts of Asp.Net
Concepts of Asp.Net
 
DIWE - Coding HTML for Basic Web Designing
DIWE - Coding HTML for Basic Web DesigningDIWE - Coding HTML for Basic Web Designing
DIWE - Coding HTML for Basic Web Designing
 
ASP.NET Presentation
ASP.NET PresentationASP.NET Presentation
ASP.NET Presentation
 
DIWE - Programming with JavaScript
DIWE - Programming with JavaScriptDIWE - Programming with JavaScript
DIWE - Programming with JavaScript
 
Developing an aspnet web application
Developing an aspnet web applicationDeveloping an aspnet web application
Developing an aspnet web application
 
Asynchronous programming in ASP.NET
Asynchronous programming in ASP.NETAsynchronous programming in ASP.NET
Asynchronous programming in ASP.NET
 
DIWE - Introduction to Web Technologies
DIWE - Introduction to Web TechnologiesDIWE - Introduction to Web Technologies
DIWE - Introduction to Web Technologies
 
Introduction to ASP.NET
Introduction to ASP.NETIntroduction to ASP.NET
Introduction to ASP.NET
 

Similar a ASP.NET Best Practices - Tips for Creating Dynamic Websites

Slideshare - Magento Imagine - Do You Queue
Slideshare - Magento Imagine - Do You QueueSlideshare - Magento Imagine - Do You Queue
Slideshare - Magento Imagine - Do You Queue10n Software, LLC
 
Best practice adoption (and lack there of)
Best practice adoption (and lack there of)Best practice adoption (and lack there of)
Best practice adoption (and lack there of)John Pape
 
IEEE KUET SPAC presentation
IEEE KUET SPAC  presentationIEEE KUET SPAC  presentation
IEEE KUET SPAC presentationahsanmm
 
Asp.net performance
Asp.net performanceAsp.net performance
Asp.net performanceAbhishek Sur
 
Introduction To Mvc
Introduction To MvcIntroduction To Mvc
Introduction To MvcVolkan Uzun
 
Test Automation Framework Development Introduction
Test Automation Framework Development IntroductionTest Automation Framework Development Introduction
Test Automation Framework Development IntroductionGanuka Yashantha
 
Portal Deployment Best Practices | IBM Portal Excellence Conference 2009
Portal Deployment Best Practices | IBM Portal Excellence Conference 2009Portal Deployment Best Practices | IBM Portal Excellence Conference 2009
Portal Deployment Best Practices | IBM Portal Excellence Conference 2009Perficient, Inc.
 
Intro To Asp Net And Web Forms
Intro To Asp Net And Web FormsIntro To Asp Net And Web Forms
Intro To Asp Net And Web FormsSAMIR BHOGAYTA
 
PAC 2019 virtual Arjan Van Den Berg
PAC 2019 virtual Arjan Van Den Berg  PAC 2019 virtual Arjan Van Den Berg
PAC 2019 virtual Arjan Van Den Berg Neotys
 
Mastering Test Automation: How To Use Selenium Successfully
Mastering Test Automation: How To Use Selenium SuccessfullyMastering Test Automation: How To Use Selenium Successfully
Mastering Test Automation: How To Use Selenium SuccessfullySpringPeople
 
Magento performancenbs
Magento performancenbsMagento performancenbs
Magento performancenbsvarien
 
High performance coding practices code project
High performance coding practices code projectHigh performance coding practices code project
High performance coding practices code projectPruthvi B Patil
 

Similar a ASP.NET Best Practices - Tips for Creating Dynamic Websites (20)

WordCamp Denmark Keynote
WordCamp Denmark KeynoteWordCamp Denmark Keynote
WordCamp Denmark Keynote
 
Slideshare - Magento Imagine - Do You Queue
Slideshare - Magento Imagine - Do You QueueSlideshare - Magento Imagine - Do You Queue
Slideshare - Magento Imagine - Do You Queue
 
North east user group tour
North east user group tourNorth east user group tour
North east user group tour
 
Best practice adoption (and lack there of)
Best practice adoption (and lack there of)Best practice adoption (and lack there of)
Best practice adoption (and lack there of)
 
Migration from ASP to ASP.NET
Migration from ASP to ASP.NETMigration from ASP to ASP.NET
Migration from ASP to ASP.NET
 
IEEE KUET SPAC presentation
IEEE KUET SPAC  presentationIEEE KUET SPAC  presentation
IEEE KUET SPAC presentation
 
Asp.net performance
Asp.net performanceAsp.net performance
Asp.net performance
 
Introduction To Mvc
Introduction To MvcIntroduction To Mvc
Introduction To Mvc
 
Intro to Application Express
Intro to Application ExpressIntro to Application Express
Intro to Application Express
 
Test
TestTest
Test
 
Test Automation Framework Development Introduction
Test Automation Framework Development IntroductionTest Automation Framework Development Introduction
Test Automation Framework Development Introduction
 
Portal Deployment Best Practices | IBM Portal Excellence Conference 2009
Portal Deployment Best Practices | IBM Portal Excellence Conference 2009Portal Deployment Best Practices | IBM Portal Excellence Conference 2009
Portal Deployment Best Practices | IBM Portal Excellence Conference 2009
 
Intro To Asp Net And Web Forms
Intro To Asp Net And Web FormsIntro To Asp Net And Web Forms
Intro To Asp Net And Web Forms
 
Test automation process
Test automation processTest automation process
Test automation process
 
Test automation process _ QTP
Test automation process _ QTPTest automation process _ QTP
Test automation process _ QTP
 
PAC 2019 virtual Arjan Van Den Berg
PAC 2019 virtual Arjan Van Den Berg  PAC 2019 virtual Arjan Van Den Berg
PAC 2019 virtual Arjan Van Den Berg
 
Mastering Test Automation: How To Use Selenium Successfully
Mastering Test Automation: How To Use Selenium SuccessfullyMastering Test Automation: How To Use Selenium Successfully
Mastering Test Automation: How To Use Selenium Successfully
 
ASP.NET OVERVIEW
ASP.NET OVERVIEWASP.NET OVERVIEW
ASP.NET OVERVIEW
 
Magento performancenbs
Magento performancenbsMagento performancenbs
Magento performancenbs
 
High performance coding practices code project
High performance coding practices code projectHigh performance coding practices code project
High performance coding practices code project
 

Último

[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?Igalia
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 

Último (20)

[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 

ASP.NET Best Practices - Tips for Creating Dynamic Websites

  • 1. ASP.NET Best Practices - Useful Tips from the Trenches HabeebRushdan, MCT hrushdan@lowerhead.com LowerHead Consulting, LLC
  • 2. Target Audience (Why should I sit through this session anyway?) Programmers new to .NET Development Any non-programmer(even those IT gals & guys) interesting in learning about ASP.NET Development Existing ASP.NET web developers interesting in learning a few best practices… we only have a little over an hour so we can’t cover too much!
  • 3. Agenda Introductions Brief Introduction of ASP.NET Best Practice Examples More Best Practice Examples A bit More Best Practice Examples… Useful Websites & Articles Conclusion
  • 4. About your Presenter 10 + Years working Professionally in the Technology Field Microsoft Certified Trainer (MCT) Microsoft Certified Professional Developer (MCPD: Web Developer) Microsoft Certified Technology Specialist (MCTS: .NET Framework 3.5, ASP.NET Applications) Microsoft Certified Technology Specialist (MCTS: .NET Framework 2.0: Web Applications) Microsoft Certified Application Developer (MCAD.NET) Adobe Certified Instructor - Flash Adobe Certified Expert (ACE - Flash CS3 Professional) Macromedia Certified Flash MX Developer
  • 5. A little bit about you… Who are you? I really want to know… (Sorry CSI, I couldn’t resist!)
  • 6. What is ASP.NET??? A series of Classes that live in the System.Web Assembly Provides the ability to easily create dynamic websites and applications in the .NET Framework Has all the benefits of OOP and the ability to access the thousands of classes built-in to Microsoft’s .NET Framework Class Library
  • 7. Demo Time – Using Object Browser to look into System.Web Assembly’s Types
  • 8. ASP.NET Page Execution Life-Cycle A series of ASP.NET Page Events that occur in a specific order Occurs every time you make a Request to an ASP.NET Page Whether it is the first time you visit a page or any additional PostBack to the same page!
  • 9. ASP.NET Page Life-Cycle Events PreInit Init InitComplete PreLoad Load Control events e.g Button1_Click, UserNameTextBox_TextChanged LoadComplete PreRender SaveStateComplete Render Unload
  • 10. Some of most commonly used ASP.NET Page Life-Cycle Events PreInit Set a Master page or Theme dynamically Load Set properties in controls and grab data to be bound to controls that allow Data-binding PreRender Make final changes to the contents of the page or its controls e.g. attaching custom HTML attributes to a Button
  • 11. Demo Time – Handling Page Events
  • 12. Tips for Creating WebSites Start with a Blank Solution Separate out your Application into logical Tiers Separate Projects for UI, Business Rules, Data-Access, etc Create a BasePage that other pages will inherit from Use MasterPages for consistent layout Use UserControls for reusable UI functionality
  • 13. Demo Time – Creating a WebSite
  • 14. State Management Options in ASP.NET ViewState Session Application Cache
  • 15. ViewState Maintains state at the Page/Control level Is stored in a Hidden Form Input Element on the Client It can get very large, very quickly so beware and disable it where possible
  • 16. ASP.NET Control Tips Don’t use a <ASP:Label> Server-side Tag when a caption will not be changed programmatically. Instead, a good Ole’ <Span> Client-side Tag will suffice Disable ViewState in controls that don’t need to maintain their state during PostBacks
  • 17. Demo Time - ViewState
  • 18. Session Maintains state at the Session level (generally speaking, per a user’s browser instance) Items are accessible from Page to Page Keep in mind that Items stored In Session “linger” until they Expire Don’t overuse or your web server’s memory will complain! Make sure any custom types you define that need to be stored in Session are marked “Serializable”
  • 19. Cache Robust Application-wide and Non-Session specific state management object Provides many options for Item Expiration and Dependencies
  • 20. Cache & Application Suggestions Use the Cache Object instead of the legacy Application Object Cache provides tons of more options for intelligently managing your application-wide state data Compare the options available with Application.Add to the Cache.Add & Cache.Insert
  • 21. State Management NO NOs Don’t store unmanaged objects in State Management For example: No DataReaders No File Handles (however, the contents of a file stored as System.String is OK)
  • 22. State Management Suggestions Always check for the existence of an object before accessing it (also called defensive programming) Use string constants for keys This prevents misspellings and other nasty side-effects Consider using a “Manager” pattern with State Management objects
  • 23. Demo Time – SessionManager Class
  • 24. Some General Tips Dispose of unmanaged resources after their use This is especially important in web applications because of their disconnected nature Therefore, indulge the “using” statement Make sure you have a robust exception handling strategy Use Try/Catch/Finally where potential issues may occur and have a consistent logical way of dealing with exceptions
  • 25. Exception Handling in ASP.NET Web.config page redirect option Page_Error Application_Error
  • 26. ASP.NET AJAX Options Server-side AJAX Using UpdatePanels with existing ASP.NET controls to “trick” the client that PostBacks are not occurring Client-side AJAX No trickery involved but more work & better bang for the buck
  • 27. AJAX Tips Minimize the use of Server-side AJAX and Update Panels Bad for performance and may cause some unexpected results Embrace Client-side AJAX (true AJAX) Microsoft makes it easy but you will need to learn some JavaScript Don’t be scared… JavaScript is fun and exceptionally versatile!
  • 28. Demo Time – Client side AJAX
  • 29. Any Tips you would like to Add? Come on, don’t be shy… We won’t bite ya… we just had some free pizza!
  • 30. What have you learned? An Overview of ASP.NET Several ASP.NET Best Practices
  • 31. Useful Websites & Articles Microsoft’s Official Developer Network Site http://www.msdn.com ASP.NET Official Web Site http://www.asp.net/ http://www.asp.net/ajax/ CodeProject Web Site http://www.codeproject.com/
  • 32. Conclusion Questions?/Comments… As always, “Live long and code proper!”