Web/Database Connectivity with ASP.NET

Download Report

Transcript Web/Database Connectivity with ASP.NET

Web/Database Connectivity
with ASP.NET
David Henson
[email protected]
Class Logistics
• Class Hours
• Classroom Setup
• Class Format
• https://www.certifiednetworks.com
Course Outline
Module 1 - Web Overview
Module 2 - ASP.NET Overview
Module 3 - ASP.NET Webform
Module 4 – Debugging/Tracing
Module 5 - .NET Controls
Module 6 – ADO.NET
Course Outline, Contd.
Module 7 – Advanced Data Topics
Module 8 - Security
Module 9 – ASP.NET Email/File Integration
Module 10 – XML and Web Services
Module 1 – Web Overview
Definitions
•
•
•
•
•
•
•
•
ASP
ASP.NET
HTTP
IIS
Virtual Directory
Browser
MSIL
CLR
• HTML
Web Server/Client Interaction
• Disconnected Paradigm
• “Cookies” used to emulate state
HTTP Protocol
• Header
• Body
Lab 1A – Viewing HTTP Traffic
• Things to look for:
– Header
– Body
– Server Response Code
Methods For Dynamic ServerBased Content
• CGI – Opens separate executable
• ASP – Interpreted each page load,
Windows Only
• JSP – Portable, fast familiar to Java
Programmers
• PHP – Cross Platform, C & Perl Like
• ASP.NET – Compiled, integrated into
framework
HTML Protocol
• End result of any dynamic server side productdictates rendering of page
• Tags:
<html>
<body>
<table><tr><td>
<form>
<a href=“…”>
<br>
<input type=“…”>
Lab 01B – Creating an ECommerce Website Framework
Module 2 – ASP.NET Overview
.NET Framework
What is ASP.NET
• Not a programming language but a
delivery mechanism
• Can leverage any .NET programming
language, like built-in VB.NET, C#, and
third party like Delphi
.NET Features
• Multiple Language Support
• Increased Performance
– Compiled code
– Cache
•
•
•
•
•
•
Server Controls
Web Services
Improved Security
Greater Scalability
Cookie-less Sessions
Easy Configuration and Deployment
Classic ASP Programming Model
• Procedural, Top to Bottom Approach
• HTML/ASP Code Mixed
Classic ASP Example
Classic Windows Programming
Model
• Create a Form
• Drop Controls On Form
• Write Event Handlers
• User activity generates messages which
are handled by the event handlers
Demonstration – Spy++
• What to look for:
– Event Driven
Model of
Windows
ASP.NET Programming Model
• Process Same as Windows Programming
• Connectivity/State is emulated
ASP.NET Example
ASP.NET Configuration Files
• Web.config
• IIS Settings
• Application Defined
Solution Files
• Solution contains 1 or more projects
• .sln file created in:
My documents\Visual Studio Projects\*.*
• To Change Defaults:
Tools/Options/Environment/Projects & Solutions
• New Solution Created With New Project
Project Files
• Project maps to web application
• Web Application Created in:
c:\inetpub\wwwroot\projectname
• Project Configuration File:
(.vbproj or .csproj)
• New Virtual Directory Created W/ Project
• Each Application can have its own
web.config
Other Files
• Webforms: .aspx
• Web Services: .asmx
• Styles.css
IIS Prevents Execution of PreDefined Extensions
• Code Behind Files: .vb & .cs
• Discovery Files: .disco, .vsdisco
• ASP.NET Application File:
Global.asax
• Resource Files: .resx
• Web.Config
Demonstration – Visual Studio
.NET Quick Tour
Lab 2A – ASP.NET Redirection
Module 3 – ASP.NET Webforms
Webforms Defined
• aspx extension
• @Page Directive
<%@ Page Language="vb" %>
• Framework Is an Object Model
• Denoted by the runat="server" Attribute
<Form runat="server">
</Form>
• Contain Client-side and Server-side Code
• Contain HTML and .NET Server Controls
Events
• User requests dbdemo.aspx
• Page_Load event detected
• Sub Page_Load() executed
• All event handlers are called in a single
flow of motion, before the user ever gets to
see the page.
WebForm Main Events
• Events Occur Each Time the Page is
Accessed
• Page_Init
• Page_Load
• Controls(only when form is posted
back…Button1_Click for example)
• Page_Unload
Other Supported Webform
Events
• Error – whenever the page generates one
• CommitTransaction
• AbortTransaction
Defining Server Control Event
Handlers
<asp:button id=“Button1” onclick=“MyHandler”/>
You may also double-click the control in design view
to get into the “default” event handler for that control
with a pre-defined event handler name.
Webform Validation
• Page.IsValid will be false if any control has failed
validation
• Asp:ValidationSummary Control
• Set Display property of any validation control to None
• ValidationSummary Control will display msg from all controls
• Client Side Validation Setting:
Set BaseValidator.EnableClientSideScript for any contol
Manual Validation
• Add form submit button with
CausesValidation set to False, then call
Page.Validate yourself.
• Take action based upon page.IsValid
property
Lab 03A – Working with Web
Forms
Module 4 – Debugging/Tracing
• Debugging
• Tracing
• Error/Exception Handling
To Compile in Debug Mode
• 1. Add a "Debug=true" directive at the top of the file that
generated the error. Example:
<%@ Page Language="C#" Debug="true" %>
or:
2) Add the following section to the configuration file of
your application:
<configuration>
<system.web>
<compilation debug="true"/>
</system.web>
</configuration>
Using the Debugger
• Setting Breakpoints
• Debug shortcut keys:
Logging Exceptions
Try
…some code
Catch err AS Exception
Dim log as New EventLog()
Log.Source = “MyPage”
Log.WriteEntry(err.Message, EventLogEntryType.Error)
End Try
Viewing Eventlogs
Display of Errors
• Error Modes:
– RemoteOnly – Default, hides details if not
local client
– Off – Shows all details and source…good for
development, not production
– On – Displays custom error page if any, or
generic error message
Custom Error Pages
<configuration>
<system.web>
<customerErrors defaultRedirect=“MyError.aspx”>
<error statusCode=“404” redirect=“My404.aspx”>
</customErrors>
</system.web>
</configuration>
Only works if ASP.NET is handling the
request(.aspx extension)
Lab 04A – Debugging/Tracing
•
•
•
•
•
Enabling Tracing
Exception Handling
Debugging
Writing to the Windows Eventlog
Custom Error Messages
Module 5 – .NET Controls
The ASP.NET Server Controls
•
•
•
•
•
•
•
HTML Server Controls
ASP.NET Web Form Controls
ASP.NET List Controls
ASP.NET Templated Controls
ASP.NET Rich Controls
ASP.NET Validation Controls
ASP.NET Mobile Controls
User Controls
• .ascx file
• Replaces the #include file from ASP
• Provides re-usuable code within your
application
• Contained within a Webform
Custom Server Controls
• Based on System.Web.UI.Control
• Generates its own HTML (unlike a
business logic assembly)
Key Concept - Rendering
• Controls are responsible for rendering
themselves
• You can override the Render() function on
your own controls
HTML Controls
• Best for “Converting” from ASP to
ASP.NET
• Add the runat=“server” attribute to existing
controls
ASP.NET Controls
• Mirror HTML Controls
• More Consistent Properties/Naming
Across Control Types
Common ASP.NET Webform
Control Properties
• ID
• Text
Control Validation
Data Binding Controls
• Easily bound to a datasource (database,
file, XML doc)
• Default HTML easily modified
Templated Controls
• You supply the HTML
Lab 05A – Working with .NET
Controls
Module 6 – ADO.NET
Components of ADO.NET
•
•
•
•
•
SqlDataAdapter
SqlDataSet
SqlDataTable
SqlDataReader
SqlCommand
Required Namespaces
• Namespace Defined
• Two In Use This Class:
– System.Data – Provider Independent Like DataSet
– System.Data.SqlClient – Provider Dependent
Like SqlConnection
• ASP.NET Syntax:
<%@ Import Namespace=“System.Data” %>
Providers
• Providers Available:
– SQL Server .NET Provider
– OleDB .NET Provider
• Example-AllRecordsBasicOleDB.aspx
– ODBC .NET Provider
– SQL XML .NET Provider
Connections
•
•
•
•
•
•
•
Connection Defined
Where to Store the Connection String
Connection Syntax Examples
Connection Pooling
Security
Close Your Connections!
Monitoring Connections
Where to Store the Connection String
• Options Available:
–
–
–
–
–
–
Front End App (.aspx file)
Web.Config
UDL File (OleDB Only)
Registry
Custom File
COM+ Catalog Using Connection Strings
• Evaluation Terms: Security, Convenience,
Performance
Two Connection String Syntax
Examples
• In the .aspx file:
ConnString = “server=10.0.0.1;UID=sa;PWD=;”
Dim Conn As New SqlConnection(ConnString)
• In Web.Config XML file:
<configuration>
<appSettings>
<add key=“ConnString”
value=“server=10.0.0.1;UID=sa;PWD=;”/>
</appSettings>
</configuration>
Connection Pooling
• Defined
• Controlling Min/MaxExample6ShowConnectionStatePoolControl.aspx
•
•
•
•
Importance of “Exact String Match”
Pooling for SqlClient vs. OleDBClient
Effects of pooling on SQL security
Close Your Connections!
Performance Issues
•
•
•
•
•
•
•
Choose Providers Wisely
DataReader vs. DataAdapter
Repeater Control vs. DataGrid Control
Connection Pooling
Embedding SQL vs. Stored Procedures
Controlling The HTML
Typed Accessor MethodsExample7AdapterVsReaderUsingTypedAccessorMethods.asp
DataReader Vs. DataAdapter
• DataReader
–
–
–
–
Forward Only
Only One Record At A Time In Memory
“Firehose” Functionality
Typed Accessor Methods Avoid Conversions
• DataAdapter
– More Overhead
– More Flexible
Repeater Control vs. DataGrid(or
DataList) Control
• Repeat Control Simply Repeats
– Low overhead
– You Have To Do Everything
– You Can Do It Better Than Microsoft Did!
• DataGrid
– Default HTML Behaviour
– Higher Overhead, Most Functionality
Embedding SQL vs. Stored
Procedures
• Stored Proc Advantages:
– Procedure Cache
– Separate Security Model
– Potentially Less Network Traffic
– Output Params, Error Code & Result Set
– Can Do Anything Server Side
– Abstracts the Front End from Changes –
Possible Disadvantage with Xcopy Deployment
Controlling the HTML
• Use Stylesheets if Possible!
• Make Sure The Page Fails Gracefully If
Needed
• With DataGrids, Use TemplateColumns
Final Recommendations
• Use DataGrids Only When Updates Are
Needed
• Embed Connection In Code Behind File
• Only “Select” What You Need
• Call StoredProcs For Ultimate
Performance When “Paging”
References
• Book: “Programming Data-Driven Web
Applications with ASP.NET”
• Web:
– http://www.asp.net
– http://msdn.microsoft.com/library/defaul
t.asp?url=/library/enus/dnbda/html/daag.asp
– Http://www.certifiednetworks.com
Comparing ADO/ADO.NET
Lab 6A – Exploring ADO.NET
Module 7 – Advanced Database
Topics
•
•
•
•
•
Paging
Inserts/Updates/Deletes
Using Stored Procedures
Dynamic SQL Server HTML Generation
Index Tuning Wizard
Paging
• Methods for paging:
– Data Grid
– Manual
– Stored Procedures
Inserts
INSERT table1 VALUES(‘Smith’,’Joe’,)
Updates
UPDATE Table1
SET Unitprice = Unitprice * 1.1
Deletes
DELETE Table1
WHERE CustomerID = 10
Using Stored Procedures
CREATE PROC FinalSales
@Region int
AS
BEGIN
SELECT * FROM sales
WHERE RegionID = @Region
END
Dynamic HTML Generation
• Triggers are procedures that fire on insert,
update or delete
• Through triggers, you can create HTML
files when data changes
Index Tuning Wizard
• Used to optimized SQL Server through
indexing
Lab 7A – Advanced Database
Topics
• Add Paging to a Data Grid
• Controlling Output-Templated Repeater
• Using Stored Procedures
Module 8 – Security
IIS Security Configuration
ASP.Net Security Related
Configuration
Authentication/Encryption
Setup of SSL
Lab 8A – Setup of SSL
Module 9 – ASP.NET Email and
File Integration
SMTP Protocol
Sending Email
• SMTP is now built into .NET
System.Web.Mail.SmtpMail.Send(
from,
to,
subject,
body
)
Reading/Writing Files
Dim w As IO.StreamWriter
w = IO.File.CreateText("C:\somefile.txt")
w.WriteLine(Request("textbox1"))
w.Close()
Lab 9A – Email and Files
Module 10 – XML
What is XML?
XML Document
• Well formed if:
Doc has a root element
Every tag has an end(case sensitive)
No special characters are used
• Valid if:
Doc format agrees with specification
XML Document Example
Formatting Issues
• Use .css to separate data from the
formatting
• <?xml:stylesheet href="test.css" type="text/css" ?>
Web Services
• .asmx file
• Inherits from
System.Web.Services.WebService
• Web Service method marked with the
WebMethodAttribute
• Allows client to discover its methods
• Interacts w/ client through SOAP
Web Service Example
• TimeServer web service returns the
current time
Implementation
• Plumbing is built into the classes…you
focus on the business needs
• Web Service consumer adds the web
reference, then uses the class like any
other
Lab 10A – XML