ASP to ASP.NET Migration

advertisement
ASP to ASP.NET
Migration
Nick Grattan
Technical Director, Software Paths Limited
MSDN Regional Director, Ireland
www.softwarepaths.com
www.microsoft.com/rd
Overview




Why migrate?
Why not to migrate?
Changes from ASP to ASP.NET
Migration




VBScript to VB.NET
ADO to ADO.NET
Strategy
Best Practice
Why migrate?
• Doculabs Nile Benchmark
Ref. Doc: http://www.gotdotnet.com/team/compare/_Toc528311245
Why migrate? Cont’d









Increased scalability and performance
Compiled code
Rich server controls
XCopy deployment
Debugging that works
Content/Code separation
Enhanced caching and session state
Choice of strongly typed languages
Plus many more
Why not to migrate?


Migration vs. Rewrite
ASP.NET is very different from ASP






Not just a superset
Backwards compatibility is supported
Do you have a lot of client side script?
Do you have a lot of server side script?
Is application near end of lifecycle?
Is it worth the effort?
ASP
Test.asp
<%
myobj=Server.CreateObject(“blah”)
%>
<a href=<%=myobj.DoSomething()%>/>
ASP







Serial Processing/Pull technology
No easy separation of code/content
Calls out to COM components
Intrinsic objects
Written using VBScript or JScript
Inherently typeless
Hard to debug
ASP.NET
 ASP.NET
Test.aspx
<codebehind=“myclass.cs”/>
<html>
<asp:mycontrol id=“mycontrol1”>
</html>
myclass.cs
public page_load(){
mycontrol1.text =“Hello”;
}
ASP.NET




Event based/Push model
Calls to/from .net classes
Intrinsic objects
Inherently typed


VB, C#
Easier to debug
ASP.NET Programming Models

Two types of programming models exist


ASPX page only: contains HTML, control tags,
and code
Code behind model: ASPX file contains HTML and
control tags, and a “code behind” file contains
code

A true separation between code and content
One File
Page.aspx
<Tags>
+
Code
Two files. (“code behind” model)
Page.aspx
<Tags>
Page.aspx.vb
Code
Intrinsic Object Changes

Request object changes:

Request(item), Request.QueryString(item), and
Request.Form(item) now return a name value
collection


Use Response.Write with caution


It will output results at the top of the page before
the <HTML> tag
Instead:




In classic ASP, they return an array of strings
Use server controls (placeholder)
Use <% %> tags if you want the output to appear in the right
place
Each of the Intrinsic objects now have many
new properties and methods
There are some new objects available

For example: cache, user and trace
Structural Changes

One page – one language



No mixing of languages in single page
A page can have only one server-side Form
tag and it must submit to the same page
An ASPX page may contain:







Directives: <%@ Directive %>
Server controls: <tag runat=server>
Code blocks: <script runat=server>
Data binding expressions: <%#
%>
Server-side comments: <%-- --%>
Server-side includes: <!-- #include -->
Render code: <%= %> and <% %>
Structural Changes Cont’d

Code block–related changes


You cannot declare functions inside <%
%> tags
Declare all your functions and variables
inside the server-side <SCRIPT> blocks
<Script runat=“server” language=“vb”>
dim gVar as String ‘Page level variable
private sub MySubRoutine()
Label1.Text = gVar
End Sub
</Script >
Structural Changes Cont’d

No Render functions permitted
 Change:
<% MyRenderFunction
Sub MyRenderFunction() %>
<h1> Hi there! </h1>
<%end sub%>
To:
<% Call MyRenderFunction()%>
<script runat=“server” language=“vb”>
Response.Write(“Hi there!”)
</script>
Structural Changes Cont’d

New page directives



In ASP, directives had to be at the top of the
page, but you do not have to do this
anymore
You can now have multiple directives on the
same page
Sample page directive:
<%@ Page Language="VB" ContentType="text/xml" %>
ASP to ASP.NET Compatibility

How can ASP and ASP.NET co-exist?



Because they have different file name
extensions
(.asp and .aspx)
Because they have different application
settings (registry and config files)
What about Global.asa in ASP.NET?

In ASP.NET, it is called as Global.asax
Demo – ASP and ASP.NET
Coexisting
Application Configuration Changes


ASP.NET application settings are stored in
XML configuration files
Types of configuration files

Machine.config


Web.Config



Contains machine-wide settings
Contains project/application-wide settings
Easy programmatic access to the data in
these files
Some of the settings in the IIS snap-in are
ignored

For example: application protection level, session
state
Session Management Changes




New session state storage mechanisms
 InProc
– session data stored on local
computer (fastest)
 StateServer – session data stored in a state
service that can be located
anywhere; ideal for WebFarms
(faster)
 SQLServer – session data stored in
SQL Server (fast)
 Off
– disable session state
Session state can be configured using
<sessionState> section in Web.Config
Can store COM components in session only in
InProc
Can store managed components in any session state
modes
Sharing Session State


Session state cannot be directly shared
between ASP and ASP.NET pages
Session object is different


Need to decide what state needs to be shared


Event in different processes
Often only a small subset of entire session state
Share by:



Writing to a common file
Using a database table
Etc.
Demo – Session State
Security Related Changes



The IIS part of the security remains same
New robust and flexible security model is based on
the security sections in the configuration files
New authentication modes





Windows:
Forms:
Passport:
None:
uses Windows Authentication
uses cookie-based custom logon forms
uses the Microsoft .NET Passport Service
no authentication
Authorization modes permit you to control access to
resources:



File authorization
URL authorization
Permit and deny users access to the application
Migrating VBScript to VB .NET



No VBScript in ASP.NET — it’s all VB.NET!
Changing the file name extension to .aspx is the first
step
Visual Basic language changes





Option Explicit is now the default
No more “variant” type — use type “Object”
Method and function calls with parameters now require
parenthesis, so change:
<% Response.Write “Hi” %>
to
<% Response.Write (“Hi”) %>
By default, arguments are passed by value
Arrays are now zero based
Visual Basic Language Changes

Let and Set are not supported, so change:
to

Set MyObj1 = MyObj2
MyObj1 = MyObj2
No more default properties, so change:
MyString as string = Textbox1
to MyString as string = Textbox.Text



Integer data type is now 32 bits and a Long data type
is 64 bits
Use structured error handling (try catch block)
instead of On Error (On Error still works)
Must cast data types explicitly:
Response.Write (“Count=“ & CStr(MyCount))
or Response.Write(“Count=“ & CType(MyCount, String))
Visual Basic Language Changes Cont’d

Must have spaces around “&” while doing
string concatenation, so change:
x = str1&str2
to x = str1 & str2

Property Get, Property Set, and Property Let
are not supported anymore, so instead use:
Public Property MyCount as Integer
Get
MyCount = InternalValue
End Get
Set
InternalValue = value
End Set
End Property
Migrating Applications that Use
Databases

Data access changes

ADO (through Interop) can be used, but not
recommend it







Try and avoid looping round recordsets
Use ADO.NET and bind to server controls
ADO and ADO.NET are quite different
ADO.NET is not exactly backward compatible
Three main objects in ADO.NET: DataSet,
DataReader, and DataAdapter
Two built-in managed data providers: SQLClient
and OLEDB
Built-in designer support for ADO.NET objects in
Visual Studio .NET
Migrating Applications that Use
Databases Cont’d

Strategies



Rewrite ADO code in ADO.NET instead of
migrating
Keep ADO code as a short term approach
If you need read-only data, use a
DataReader
Demo – Migrating ADO
Code
Ideal application for Migration

COM objects


Minimal script


Two stage migration
Especially client
Written to ASP best practice
Demo – Reusing COM
Components
Before You Migrate




Get a good understanding of ASP.NET
Know the changes from ASP to
ASP.NET
Understand that migration requires
code changes
Although ASP.NET has excellent
backward compatibility, migration may
not be as easy as it seems in many
cases
General Migration Strategy



Identify the parts of the application that you have to
migrate
Plan very carefully and try to have minimal impact on
the existing application during the migration
In a multi-tier scenario, take the horizontal or vertical
approach

Horizontal


Vertical


migrate the whole tier (middle/presentation) at the same time
migrate some pages, some components, at the same time
Decide if you want to reuse existing COM
components
General Migration Strategy Cont’d





Decide if you want to keep ADO code
Rename the file name extension from
.asp to .aspx
Make the language-specific changes
first
Make COM- and database-specific
changes
Test, test, test
Migration Best Practices



If the application is relatively small, consider
rewriting
If you only want to make a syntactic port,
then consider only ASPX pages
You do not have to port the whole site at the
same time



Consider migrating the slow/critical parts
Remember, you can run ASP and ASP.NET side-by-side
Try to migrate the read-only pages first
Migration Best Practices Cont’d

Language related


Data access related


If you have a data access tier, move it into .NET
COM related



Convert Include files into assemblies or user controls
(.ascx)
Always use early binding
Explicitly free resources from code
Project management related


Keep two code trees while migrating, and make sure to
update both of them while adding changes to the existing
Web site
First try to modify the existing code as it is

After you complete this, try to modify the application to use
the advantages provided by .NET
Conclusion


No simple migration path
Need to assess application




Current application architecture
Changes that need to be made
Future Development of Web Site
Need to understand ASP.NET to plan
migration
Software Paths Ltd
.NET Services

Training Courses







.NET Overview (1 day)
ASP.NET (4 days)
Web Services (3 days)
C# Programming (3
days)
VB.NET Intro (3 days)
Migrating from VB6 to
VB.NET (2 days)
info@SoftwarePaths.com
www.SoftwarePaths.com
Consulting




Technology guidance
Review of
applications
.NET Architecture
Web Services
Join us for Microsoft’s premier European
technical education conference
30 June – 4 July, Barcelona, Spain
The definitive Microsoft conference for designing,
Building and managing connected solutions
www.microsoft.com/europe/teched/
MS Press
Essential Resources for Developers
Find out other titles from MS Press books at
www.microsoft.com/mspress
Choose from Windows 2000, SQL Server 2000, Exchange 2000, Office
2000, .NET Framework, C#, VB.NET, ASP.NET, and XML
MSDN
Essential Resources for Developers
Subscription
Services
Library, Professional, Universal
Delivered via CD-ROM, DVD, Web
Online
Information
MSDN Online, MSDN Flash
Training &
Events
MSDN Training, Tech-Ed, PDC,
Developer Days, MSDN/Onsite Events
Print
Publications
MSDN Magazine
MSDN News
Membership
Programs
MSDN User Groups
Where Can I Get MSDN?





Visit MSDN Online at
msdn.microsoft.com
Register for the MSDN Flash Email
Newsletter at
msdn.microsoft.com/flash
Become an MSDN CD Subscriber at
msdn.microsoft.com/subscriptions
MSDN online seminars
msdn.microsoft.com/training/seminars
Attend More MSDN Events
For More Information…

MSDN Web site at



Got Dot Net


msdn.microsoft.com
msdn.microsoft.com/net
www.gotdotnet.com
ASP.NET

www.asp.net
Download