Web/Database Connectivity with ASP.NET David Henson dhenson@certifiednetworks.com

Preview:

Citation preview

Web/Database Connectivity with ASP.NET

David Henson

dhenson@certifiednetworks.com

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”

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