Migrating_ASP_to_ASP_NET_EMEA by satraderskhi


									         Migrating ASP to

Pedro Miguel Rosa
Senior Software Engineer
Developer Platform Group
•   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….
          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


       .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


Page Handler
     ASP.NET            Http Runtime
    ASPX                    Class
    Engine                Instance

     3          4             5

     Page                     Page
          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,
         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 <script runat=server> blocks
•   Page “render functions”
    – Not supported, must use Response.Write
•   Variable references
    – Cannot reference variables in other <% %>
•   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
    – <%@ page aspcompat=true %>
    – 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
    – <%@ Page ASPCompat=“true” %>
    – 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
    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
•   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

To top