web/database connectivity with asp.net david henson [email protected]
TRANSCRIPT
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 Server-Based 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 product- dictates rendering of page
• Tags:<html><body><table><tr><td><form><a href=“…”><br><input type=“…”>
Lab 01B – Creating an E-Commerce 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.cssIIS Prevents Execution of Pre-
Defined 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
• Framework Is an Object Model• Denoted by the runat="server" Attribute
• Contain Client-side and Server-side Code • Contain HTML and .NET Server Controls
<%@ Page Language="vb" %> <%@ Page Language="vb" %>
<Form runat="server"></Form>
<Form runat="server"></Form>
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”/> <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 codeCatch 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/Max-
Example6ShowConnectionStatePoolControl.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 Methods-
Example7AdapterVsReaderUsingTypedAccessorMethods.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/default.asp?url=/library/en-us/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