Migrating ASP to
ASP.NET
Pedro Miguel Rosa
prosa@microsoft.com
Senior Software Engineer
Developer Platform Group
Agenda
• Classic Active Server Pages Background
• Why Migrate to ASP.NET?
• Migration Strategies
• ASP.NET Migration Issues
• Tools
• Questions
Active Server Pages
Active Server Pages
• Leading web app development platform
– Nearly 1 million developers using ASP today
– Many well known applications and sites
• Simple and approachable
– No compilers required – “just hit save”
– Easy to use languages and object model
– Great integration with COM and COM+
• Well established developer support base
– Online communities
– Books/Consulting/Conferences
How it works….
Requests
Responses
1 7
6 10
ISAPI Filters
Internet Information Server
ISAPI Extensions
ASP.DLL Script Execution
5 9
ASP Script Script Code Script Engine
Engine 4 8 Cache
2
3
.asp file
Issues with “Classic” ASP
• Way too much code required
– Simple tasks often not easy
• Applications contain spaghetti code
– Poor re–use/encapsulation model
– Code runs from top of page to bottom
• Late-bound scripting, no strong typing
– Different language model in COM though
• Deployment issues
– COM and metabase
Sample ASP Page
How ASP.NET Works
Requests Responses
1 7 6 9
Modules
Page Handler
ASP.NET Http Runtime
2
ASPX Class
Engine Instance
8
3 4 5
ASP.NET
Page Page
Class
Migrating to ASP.NET
Benefits of Migration
• Performance and scalability
– Strongly typed code, compiled into binaries
– Easily scalable to web farms
– Page, partial page, and data caching
• Productivity
– Web forms and server controls
– Web services
– Rich application framework
– Great tools and languages support
– Supports many mobile browsers
Migrating to ASP.NET
Benefits of Migration
• Security
– Can run under least privilege account
– Built-in forms based authentication
– Custom security infrastructure
• Reliability
– Application isolation, recycling, health detection
– Benefits of managed code
• Manageability
– XCOPY deployment
– Easily configurable (web.config)
Migrating to ASP.NET
The Bad News
• Migration will always require work
– No magical migration tool
– Trivial pages may be easy
– Applications will be more difficult
• Reality is:
– Can’t simply change file extensions
– Incompatibilities in language, framework,
environment
Migrating to ASP.NET
The Good News
• Developer’s ASP skills will migrate
– Natural migration from VBScript to VB
– ASP intrinsic objects pulled forward
– Inline coding still possible
• Can leverage existing assets
– Existing pages can be converted
– Existing components still work (through interop)
– Migration can be incremental
Migration Strategies
• Vertical Migration
– Use both ASP and ASP.NET
– Migrate individual features
• Horizontal Migration
– Move .asp files to .aspx
– Go for functional equivalence
• Re-write / New Application
– Move completely to ASP.NET
– Take advantage of new features
Migration Strategies
Vertical Migration
• ASP and ASP.NET pages run side by side
– Separately installed and configured
• Use ASP.NET without breaking ASP
– Migrate or add selected functionality
– Useful for new, isolated features
– Gain immediate perf benefits
• Limited interoperability
– ASP pages can’t use ASP.NET features
– Run in separate worker processes
– No sharing of state
Migration Strategies
Horizontal Migration
• Rename .asp to .aspx, and correct problems
– Correct page syntax
– Translate VBScript to Visual Basic .NET
• Take advantage of key ASP.NET features
– Can call Framework code
– Page compilation
– Scalable session state, caching
• Not a full port yet
– No improvements in code manageability
– COM interop work may be needed
Migration Strategies
Full Rewrite
• Complete rewrite of pages and components
– Use ASP.NET server controls
– Rewrite business components using Framework
• Take full advantage of ASP.NET
– True code separation, encapsulation
– Page framework and controls
– ASP.NET Security
Migration Strategies
Guidelines Summary
• Use vertical migration for
– Well partitioned applications
– New functionality in existing apps
• Use horizontal migration for
– Heavy use of application or session state
– Complex, unfactorable tiers
• Use rewrite for
– Re-architecture of system
– Significant new functionality
ASP.NET Migration Issues
Semantic Changes
Programming Language
• Single choice of server language
– Cannot mix languages on page
– Client script not affected
• VBScript Visual Basic .NET
– All variables have a specific type
– No more default properties (big change)
– No “Set” and “Let” syntax
– Parentheses required for calling subroutines
– Arguments now ByVal by default
Code Changes
• Page functions
– Must be in blocks
• Page “render functions”
– Not supported, must use Response.Write
• Variable references
– Cannot reference variables in other
blocks
• Page directives (@Option, @Session,
etc.) no longer supported
– Merged into single Page directive
Server Components
Options for Using COM Objects
• Simple Usage
– Call Server.CreateObject(“progid”) and access it
as a late-bound object
• Create .NET wrapper classes
– Provides early binding
– Optimizes performance of calls
– TLBIMP.exe utility
• Rewrite using .NET
Server Components
Using ASP Intrinsics in components
• Support for ASP intrinsics
– ObjectContext intrinsic Flow
– Application OnStart and OnEnd
• ASPCompat mode
–
– Enables access to intrinsic objects
ASP.NET Migration Examples
Server Components
Performance Considerations
• Marshalling costs
– Calls between ASP.NET and COM
– Performance benefits by rewriting COM in .NET
• ASP.NET Thread Pool now MTA -- not STA
– What is an MTA? What is an STA?
– Impacts performance of apartment components
– VB5 and VB6: Apartment Components
• Can enable STA Thread Pool on a per-page basis
– Address perf. of existing VB components
–
– Not necessary for C++ MTA components
Security Changes
• ASP: Use Windows (IIS) authentication
– NTLM (default), Basic, Digest, or Kerberos
– Impersonate caller by default
– Forms based auth: roll your own
– ACL based URL authorization
• ASP.NET: Customizable authentication
– Windows (default), Forms, or Passport
– Impersonation must be enabled
– Built-in forms authentication
– Role based declarative authorization
Configuration Changes
• ASP: Configuration
– Binary data store used by IIS (metabase)
– Used by Classic ASP
– Changes required local server access
• ASP.NET: XML Configuration
– Machine.config, web.config
– Most IIS settings do not affect ASP.NET
– Changes do not require local server access
Tools
ASP.NET Migration Assistant
• Features
– Corrects ASP.NET page syntax
– Translates VBScript into Visual Basic .NET
• Visual Studio or command line translation
• Starting point for further migration
• Available from:
– http://www.asp.net/migrationassistants/
ASP.NET Migration Assistant
Summary
• Migration not seamless
– Will involve some work
– Can be done incrementally
• Worth the efforts
– Better performance
– Easier development
– Cleaner and more manageable code
– Platform to build apps for the future