Você está na página 1de 103

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 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" %> <%@ Page Language="vb" %>

Framework Is an Object Model Denoted by the runat="server" Attribute


<Form runat="server"> <Form runat="server"> </Form> </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/> <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 sourcegood 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

Repeat Control Simply Repeats

Repeater Control vs. DataGrid(or DataList) Control


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 classesyou focus on the business needs Web Service consumer adds the web reference, then uses the class like any other

Lab 10A XML

Você também pode gostar