Title: Migrating Existing ASP Applications to ASP.NET
1Migrating Existing ASP Applications to ASP.NET
- An in-depth look at the paradigm shiftsand
upgrade strategies when moving from ASP to
ASP.NET architectures. - By
-
- Carl Prothman
- Microsoft Most Valuable Professional (MVP)
- Certified Computer Professional (CCP)
2Introductions
- Carl Prothman
- Microsoft Most Valuable Professional (MVP)
- Visual Basic MVP 1998/2002
- ASP.NET MVP 2002/2003
- Certified Computer Professional (CCP)
- Microsoft Certified Professional (MCP)
- Over 22 years of experience in Software Industry
- Bachelor of Science in Aeronautics and
Astronautics (BSAA) from University of
Washington - Email carlpr_at_spamcop.net
- Able Consulting, Inc.
- Owner http//www.able-consulting.com
3Agenda
- .NET Overview 1 min
- What is it?
- Paradigm Shifts 35 mins
- Top 10 (make that 11)
- Migration Strategies 15 mins
- Side-by-Side Conversion
- Tier-by-Tier
- Summary 9 mins
- QA
-
Total 60 mins
4Overview
- What is Microsofts .NET?
- Set of Microsoft software technologies connecting
your world of information, people, systems, and
devices - Enables an unprecedented level of software
integration through the use of XML Web services - Small, discrete, building-block applications
- Connected to each other via the Internet
- What is ASP.NET?
- The development platform for building
server-based Web applications - Web Forms and XML Web Services
- HTTP Runtime Architecture with IIS
5ASP.NET Overall View
6Agenda
- .NET Overview
- Paradigm Shifts 25 mins
- Migration Strategies
- Summary
7ASP.NET Paradigm Shifts
- What is a Paradigm Shift?
- A set of concepts, values, practices and
assumptions that constitutes a way of viewing
reality for the community that shares them. - When one paradigm looses influence and another
paradigm takes over, then there is a paradigm
shift! - Knowing in advance how a Paradigm Shift might
occur gives you an advantage over others!
8ASP.NET - Paradigm Shift0) Remote Application
Communication
- In ASP, you used the RDS DataSpace to communicate
to a remote COM Component over DCOM or HTTP(S) - RDS is a major security hole!
- RDS DataFactory MS99-025
- RDS Data Stub MS02-065
- In ASP.NET, you now use an XML Web Services to
communication to remote applications - Standard protocol (SOAP) for distributed
environments - Over HTTP with XML SOAP Envelop / Payload
9ASP.NET - Paradigm Shift1) Server-Side Web
Controls
- In ASP, you used Response.Write or lt to
send HTML / script to the Web browser - In ASP.NET, you can now program against
server-side Web Controls which generate the HTML - HTML Server Controls
- HTML Tag with and ID and RunAtServer
attributes - Web Server Controls
- ASP.NET control with ID and RunAtServer
attributes - Form Validation Controls
- Client-side and Server-side Validation
- User Control Page (.ASCX)
- Replaces the HTML Include command
- Custom Control Assembly (.DLL)
10ASP.NET - Paradigm Shift2) Automatic HTML Code
Generation
- In ASP, you created custom pages for each browser
type - Use browscap.ini file with the BrowserType object
- In ASP.NET, you use server-side Web Controls and
Web Forms to generate the HTML - ASP.NET figure out the browser type
- Automatically renders the correct,
browser-compliant HTML for features such as
Styles, Layout, and so on. - In Visual Studio .NET, set TargetSchema Property
on the Page - Internet Explorer 3.02 / Navigator 3.0
- Internet Explorer 5.0
- Navigator 4.0
11Paradigm Shift3) Automatic Web Control State
- In ASP, you had to fill the control with user
entered values on POST back - Show the web page again with an error message
- In ASP.NET, the controls automatically retain the
user entered values on POST back - ViewState is used to store Control State
- User selection, Control Info
- Control values are automatically filled in for
you during post back. - Can store values in ViewState between round trips
- Must only use one FORM on page
- Must post to the same page for ViewState to work!
12Paradigm Shift4) HTML Separate from Code
- In ASP, you could mix HTML with client-side and
server-side script - Hard to read and maintain
- Some used .vbs or .js files to separate out
the script - In ASP.NET, you can either
- Put the code in-line with SCRIPT tags
- Or put code in a code-behind page
- Visual Studio .NET creates code-behind pages by
default - ASP.NET Web Matrix creates in-line SCRIPT tags by
default
13Paradigm Shift5) Compiled ASP.NET Code
- In ASP, you used server-side VBScript (or
JavaScript) which was interpreted, hence slower! - So most folks just pulled the server-side script
out and put it into a VB 6.0 / C COM
Components (N-Tier) - Presentation Tier Classes
- Business Tier Classes
- Data Tier Classes
- In ASP.NET, everything is compiled, which is
faster! - In-line SCRIPT tags with RunAtServer
- Code Behind page (must compile)
- Debug vs- Release mode
14Paradigm Shift6) Registering Client-Side Script
- In ASP, you could directly add client-side event
handlers to HTML controls - In ASP.NET, you add client-side event handlers to
Web Controls via Attribute.Add - Button1.Attributes.Add(onclick,
alert(Hello)) - You can also register a client script block
- RegisterClientScriptBlock
- Client-side JavaScript / JScript
- VBScript
15Paradigm Shift7) User Controls Instead of
Includes
- In ASP, you used includes files to include common
script code - In ASP.NET, you now use User Controls (ASCX) for
common code - Headers, Footers, etc..
- Public Properties and Methods
- Inheritance from BaseControl
- Reuse common Properties, Methods, and settings
16Paradigm Shift8) XML Configuration Files
- In ASP, you used System Registry (or IIS Metadata
db) to store Application settings - In ASP.NET, you use XML files to store
Application settings - Machine.config (for all projects on the machine)
- C\WINNT\Microsoft.NET\Framework\v1.0.3705\CONFIG\
machine.config - Web.config (for each project)
- Read in configuration settings using
- System.Resources.ConfigurationSettings.AppSettings
myKeyName"
17Paradigm Shift9) ASP.NET Worker Process
- In ASP, IIS used the ASP.DLL to handle each web
request - In ASP.NET, IIS calls an ASPNET worker process
(aspnet_wp.exe) - Identity of ASP.NET Worker process controlled by
- machine.config, processModel element, userName
attribute - C\WINNT\Microsoft.NET\Framework\v1.0.3705\CONF
IG\machine.config - "MACHINE" runs as low privilege user account
named "ASPNET". - "SYSTEM" runs as localsystem (high privilege
admin) account. - Running IISRESET stops the Worker process
18Paradigm Shift10) Windows Impersonation
- In ASP, impersonation was enabled by default
- Using Anon Access, ASP would impersonate
IUSR_XXXX - Using NTLM / Basic, ASP would impersonate calling
User - In ASP.NET, impersonation is disabled by default
- You must explicitly enable impersonation in
web.config or machine .config file - ltauthentication mode"Windows" /gt
- ltidentity impersonate"true" /gt
- System.Security.Principal.WindowsIdentity.GetCurre
nt().Name - CARLP7\ASPNET (ASP.NET User account)
- CARLP7\IUSR_CARLP7 (IIS Anon User account)
- CARLP7\Administrator (User account that Im
logged as)
19Agenda
- .NET Overview
- Paradigm Shifts
- Migration Strategies 20 mins
- Summary
20Migration Strategies Side-by-Side
- ASP and ASP.NET Side-by-Side
- Both ASP and ASP.NET files can run side-by-side
in same IIS Web Application - However, you cannot share Session variables
between them directly - Steps to convert ASP to ASP.NET
- Rename the ASP file to use the .ASPX file
extension - Browse to the page and update server-side code as
needed - Option Explicit is the default. Remove Option
Explicit line. - Method calls with parameters require ( and ).
- Dont need Set or Let anymore. Remove them.
- For ADO/COM objects, use aspcompattrue in the
Page directive - must have spaces around it. No more s
str1str2 - No more Default Properties. Must state
explicitly oRs(0).Value - No more VBScript Variants gt Objects / .NET
Framework Class Library - ByValue is now the default. Was ByRef in VB 6.0.
- VB.NET is now 0 based. Was 1 based (in some
cases) in VB 6.0 - Integer data type is now 32 bits. Was 16 bit in
VB 6.0
21Migration Strategies- Tier by Tier
- First Convert the UI Tier
- Create new WebForms / User Controls
- Call existing COM Components
- Next Convert the Business Tier
- Create Class Modules for each Business class
- If Internet clients need to reuse these new
classes, create XML Web Services wrappers - Finally Convert Any Desktop Database
- Upgrade your old Access MDB to MSDE or SQL Server
22Agenda
- .NET Overview
- Paradigm Shifts
- Migration Strategies
- Summary 5 mins
23Summary
- Reviewed ASP.NET Paradigm Shifts
- Top 10 (make that 11)
- But there are a lot more
- Reviewed Migration Strategies
- Side by Side Conversion
- Tier by Tier Conversion
- Better understanding of ASP to ASP.NET Migration
Issues
24Questions?
- Q A
- More Information
- ASP.NET Web Site http//www.asp.net
- GotDotNet Web Site http//www.gotdotnet.com
- These slides / sample code are at
- http//www.able-consulting.com/