330 likes | 439 Views
Migrating ASP to ASP.NET. Pedro Miguel Rosa prosa@microsoft.com Senior Software Engineer Developer Platform Group. Classic Active Server Pages Background Why Migrate to ASP.NET? Migration Strategies ASP.NET Migration Issues Tools Questions. Agenda. Active Server Pages.
E N D
MigratingASP to ASP.NET Pedro Miguel Rosa prosa@microsoft.com Senior Software Engineer Developer Platform Group
Classic Active Server Pages Background Why Migrate to ASP.NET? Migration Strategies ASP.NET Migration Issues Tools Questions Agenda
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 Active Server Pages
Responses Requests 1 7 6 10 ISAPI Filters ISAPI Extensions ASP.DLL 5 9 4 8 ASP Script Engine Script Code Script Engine Cache .asp file Script Execution 2 3 Internet Information Server
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 Issues with “Classic” ASP
Responses 7 1 6 9 Modules Page Handler 2 8 ASP.NETPage ASPX Engine Class Instance Page Class 4 5 3 Requests ASP.NET Http Runtime
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.NETBenefits 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.NETBenefits of Migration
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.NETThe Bad 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 Migrating to ASP.NETThe Good News
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
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 StrategiesVertical 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 StrategiesHorizontal Migration
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 StrategiesFull Rewrite
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 Migration StrategiesGuidelines Summary
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 Semantic ChangesProgramming Language
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 <% %> blocks Page directives (@Option, @Session, etc.) no longer supported Merged into single Page directive Code Changes
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 ComponentsOptions for Using COM Objects
Support for ASP intrinsics ObjectContext intrinsic Flow Application OnStart and OnEnd ASPCompat mode <%@ page aspcompat=true %> Enables access to intrinsic objects Server ComponentsUsing ASP Intrinsics in components
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 Server ComponentsPerformance Considerations
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 Security 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 Configuration Changes
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 Summary