ASP->ASP.NET 迁移的Guideline

ASP->ASP.NET 迁移的Guideline

小气的神

2003-08-26

_ Article Type: NEWS _

难度等级: 3/9

版本: 1.02

在我 7 月份的 WebLog 上我曾写过一个 MIEC 的模式理论,简单的说就是:

l ** M igration **

l ** I nteroperation **

l ** E AI **

l ** .NET C onnection **

Migration 最常是用在相同的应用程序层但在不同的平台上,比如把 JSP 的表现层编成 ASP.NET 的 Web From 或是将中间层的 COM 转换成 Web Services 等等。基本上, Migration 调整的是一个层,不会太大的影响其它层或整个系统已经运行的逻辑。

你会发现 MIEC 这个模式理论非常有用,当你应用程序需要从 ASP2.0 迁移到 3.0 的时候,你就可以按照下面的办法来处理。

第一阶段 -- 代码转换

使用一个工具,将 ASP 的代码转换到 ASP.NET 的代码。一般你可以选择下面几种工具中的一种 ( 这些在我的 WebLog 中也都有提到过)

l ASP2ASPX --http://www.netcoole.com/asp2aspx.htm

l VB6->VB.NET , WinForm->WebForm --www.artinsoft.com

l ASPBridge IncludeControl--- http://www.iprisma.com/aspbridge/index.htm

当然这里我会使用 ASP2ASPX 来完成第一阶段的工作,将 ASP 的代码转换成 ASP.NET 的

下面是一个 3.1 的评估版本,只能转换不超过1000行的 ASP 的代码

第二阶段 -- 验证、整理和测试

这个阶段主要是将第一阶段的代码进行整理和坚持,看它是否已经转化正确。一般在这个阶段完成具体的代码和应用的迁移任务,并保证迁移是能正常运行的。

1. 由于 ASP 中多是 VB Script 没有类型,所以许多都被转换成 System.Object ,你可以在做检查的过程中,做一点代码重构的工作,将 System.Object 修改成一些已知的类型 , 比如 System.String; System.Int32;System.Int64

这部分每完成一个模块,或做完代码的调整,都需要做一个完整的单元测试,主要保证编译可以通过这个可以通过编写一个批处理文件,或是使用 MS ACT ,这个工具对于访问一个 ASP.NET 就非常好,特别是多个 URL , ACT 会给你成功或失败的列表。

2. 一些 ASP 的代码需要进行修改,比如 ASP 的 Session 的代码,因为这些在 ASP.NET 中已经无法使用了,这部分代码只能重写。

3. 迁移 ADO 代码的部分,工具可以帮你做一些,但是你需要检查转化的代码,注意 ADO 和 ADO.NET 的差别,最明显的是你知道 ADO.NET 不支持服务器的光标,具体的可以参加下面的资源。

4. 迁移 COM 组件的部分, ASP2ASPX 3.0 之后的版本可以自动的将 COM/ActiveX 转化成一个 Proxy 的 Assembly ,但是你需要检查和进行一些调整,最先需要先迁移过来,之后再考虑这种方式的性能,我建议你放在下一个阶段。

5. 这里有一个非常大的代码工作量的问题,因为 ASP2ASPX 产生的代码对 ”code behind” 的支持非常的有限,产生的 Code 几乎都是代码和 UI 在一个 ASPX 的界面中。 ASP.NET 2.0 会对于这种方式有更好的支持,但目前这会有一定的代码量。

第三阶段 — 优化、集成和部署

这个阶段主要是针对上面的情况,进行一些优化或更多应用的集成扩展,最后在完成测试之后进行部署。

1. 对于原来调用 ADO 部分的一些代码可能需要在这个阶段进行优化,充分利用 ADO.NET 的性能。

2. 如果存在原来 VBScrip+COM 组件的形式,需要在这个阶段调整组件的模式,是直接调用 .NET Assembily 还是原来可能是在 ASP 中是调用的 COM+ 的 Proxy ,那么这种情况就更加需要注意。一般你可以做三种选择:

a) 改为在 ASP.NET 页面的 cs 文件中直接完成数据库和业务逻辑的部分。

b) 建立一个 .NET Assembly 对原来的 COM 组件的内容进行重写或封装。

c) 将一些组件改为 Web Services 的方式。

3. 考虑将一些 UI 的部分变换成 Server Control ,将其放入 Cache 中,或是实现完全的 ”Code behind”

4. 考虑使用 .NET 中一些 Cool 的特性,比如校验控件、正则表达式、排序函数、配置类库、加密函数、调试和跟踪函数、多线程等等,增强原来应用的性能和可靠性。

5. 充分利用 EAI 和 .NET Connection 两种模式,继续增强你的 Web 应用的价值,最明显和常用的一种方式,你会发现你在迁移 ASP 应用的过程中会使这个应用变成一个公司的 Portal WebSite (EAI 模式 ) ,另外也可能使得你的应用可以跟一个更大的 Portal 进行连接 (.NET Connection 模式 )--- 当然我认为这是迁移最大的益处,不过往往可能你要到再下一个阶段才能真正进行 J

6. Web Services/Remoting

资源

ASP 和 ASP.NET Session 共享

1. Session 原理

http://www.asp.net/Forums/ShowPost.aspx?tabindex=1&PostID=7504 (ASP.NET Team 的说明 )

2. MSDN 文档

http://www.msdn.microsoft.com/library/default.asp?url=/library/en-us/dnaspp/html/ConvertToASPNET.asp

3. 第三方的产品和解决方案

http://www.consonica.com/solutions/dotnet/statestitch/index.html

http://www.sessionbridge.com/

** Migrating to ASP.NET: Key Considerations. **

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnaspp/html/aspnetmigrissues.asp

** Migrating ASP Pages to ASP.NET Pages **

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cpconmigratingasppagestoasp.asp

** Converting ASP to ASP.NET **

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dndotnet/html/convertasptoaspnet.asp

** Upgrading to ADO.NET **

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dndotnet/html/upgradingtodotnet.asp

** ADO.NET for the ADO programmer **

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dndotnet/html/adonetprogmsdn.asp

** Migrate Classic ASP to ASP.NET **

http://www.aspalliance.com/anjum/ASPMigration.aspx

** An experience in migrating from ASP to ASP.NET **

http://www.mindfiresolutions.com/download/Porting=ASP%20to%20dotNET.pdf

** Preparing your ASP Pages to migrate to ASP.NET **

http://www.4guysfromrolla.com/webtech/041601-1.shtml

** Microsoft .NET/COM Migration and Interoperability (PAG) **

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnbda/html/cominterop.asp

** Migrating Your ASP Apps from Windows NT 4.0 to Windows 2000 **

http://msdn.microsoft.com/msdnmag/issues/0800/migrateasp/default.aspx

** Web Service Facade for Legacy Applications (PAG) **

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnpag/html/wsfacadelegacyapp.asp

Migrating an ASP-Based Site to an ASP.NET-Based Site (Microsoft Content Management Server 2002)

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dncomsrv02/html/mscs_csnetmig.asp

** How to Upgrade ASP Pages to ASP.NET Pages That Use JScript .NET **

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnclinic/html/scripting01222002.asp

** Migrating from ColdFusion to ASP.NET **

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnaspp/html/coldfusiontoaspnet.asp


特别:

本文原始出处,出自我的WebLog。 如果有问题或建议, 请发电子邮件给 [email protected]

欢迎访问我的 WebLog : www.dotNETTools.org

Published At
Categories with Web编程
Tagged with
comments powered by Disqus