迁移(单体)经典ASP到ASP.Net

4
多年来,我一直有一个目标,即从ASP/VBScript转移到“更好”的语言——我的首选是C#,因为我擅长C,但我也会考虑其他语言(包括PHP等,不仅限于DotNet)。
目标是让代码库使用更多功能的语言。我讨厌VBScript中缺乏数据类型,我想要多种不同的“容器对象”——而不仅仅是一个字典对象等等——事实上,我想知道为什么在80年代从Basic转移到C后,然后过了一段时间又转移到了C++,我竟然又“回到”了Basic。
(我可以用VBScript编写容器对象,但我的直觉是它们的操作速度会很慢;我们有一个重要的HTML片段缓存,用于呈现页面,ASP应用程序对象是一个相当笨重的工具!)
我的ASP/VBScript是一个单一的大型应用程序,基本上是一个“引擎”,用于提供Web内容。
它经过多年的开发,现在ASP代码变化很少。(所以我确实需要证明是否有必要将其移动,或者只是永远使用VBScript)
它由MS SQL数据库中的数据驱动。
只有一个.ASP页面(由几个包含文件组成)。
根据查询字符串参数Skin和CMS模板从数据库加载页面,并运行适当的数据库Sprocs来获取数据,然后将其合并到CMS模板中。
页面数据(要使用的方法等)也从数据库中检索出来,以及访问权限等详细信息。
根据我所读到的,这些事情可能会使迁移更容易:
不使用ASP会话——会话cookie用于从DB检索会话数据(因此我可以轻松地与ASPX共享一半会话)
VBScript始终使用OPTION EXPLICIT,因此所有变量都是预定义的。
所有输出都通过Response.Write(实际上,大多数内容都合并到一个变量中,然后输出)。没有HTML和<% server code %>的混合。
我有一些VBScript类,但不多。
我有很多VBScript函数和一些子例程。
我有一个测试套件。它从浏览器捕获屏幕截图,并将其与主映像进行图形比较——因此我有进行回归测试的能力。
我没有资源进行完全重写;在迁移期间需要继续维护现有代码;但是话虽如此,我们99%的工作都是在CMS或SQL Sprocs中完成,因此对ASP代码的更改很少。
我已经了解了微软迁移ASP代码到VB.NET的工具。鉴于我的代码是100%的VBScript,而没有HTML/Script的混合,我希望听取关于这是否会对我有很大或很小的帮助的意见?

我很乐意重构使用VBscript的STAYING,以便日后更容易迁移到DotNet(但我需要知道我的目标是什么 :))。例如,我可以将一些/所有函数移动到COM对象中,并且可能可以逐步完成?

谢谢您的帮助。


1
在编程中,文字堆砌和每句话都分段之间有一条微妙的界线。 - maxpower47
3
我更喜欢这种方式,而不是一大堆文字。 - Sedat Kapanoglu
第二段有两个句子:)散文不是我的强项,抱歉。 - Kristen
2个回答

5
我曾经维护了一个大型的ASP classic内部网络,直到去年,它已经变得陈旧,但由于已经投入了大量的库代码,仍然在添加新的ASP classic代码。如果您不经常更改ASP代码并且有某种形式的测试,则已经拥有良好的设置。(我必须承认这是我第一次听说截图方法)。如果所有内容都是从数据库驱动并且正常工作,请不要破坏它。
PHP将为您提供相同的变量类型问题,但会为您提供许多选项和选择,使ASP classic看起来像儿童玩具。PHP开箱即用可以做我所需要做的一切。
ASP.net是一个庞大的框架。正确完全理解它并不容易,它经常让我感到惊讶。它试图自动为来自表单环境的开发人员做一些事情,当你从非常精确的渲染方法中出来时,它会变得非常突兀,就像你听起来有的那样。我一直在与技术斗争,直到ASP.net MVC出现。它更符合我的思路,因为它按照我的要求工作,并且没有其他东西。C#是一种很棒的语言,具有出色的功能,DOT.net框架可以让您做任何事情,只要您找到正确的部件即可。它有很多东西,你会发现自己偶尔会写一些已经在框架中完成的东西,只是在完成自己的实现后才发现它。
实际上,迁移可能会导致一些有趣的问题。尽管您可以像运行ASP classic页面那样运行ASP.net页面,但您将失去环境的许多好处,因为它是有意的。话虽如此,我确实做了一些测试,以查看是否将该站点迁移到ASP.net,并设法绕过大部分障碍,并得出这样的结论:这样的迁移实际上只是“纯粹的工作”。然而,进行这样的迁移所需的人力数量使得这项任务不可行。
个人而言,除非您成功地拥有几个ASP.net项目并且了解asp.net带来的问题,否则我不建议进行此类迁移。
我没有看到您提到的ASP到ASP.net转换工具,但很想得到一个链接。如果您仍然使用VBScript并且不知道AXE(ASP Xtreme Evolution)项目,则点击这里,我强烈建议您研究它,以获取有关克服/绕过ASP classic“限制”以及提供的功能库的灵感。

一直在阅读《ASP Xtreme Evolution》,觉得很有趣,其中的JSON/URL重写(我一直在研究这个)等内容都会很有用;感谢您提供的建议和其他评论。ASP到ASP.NET迁移链接:http://www.asp.net/downloads/archived/migration-assistants/asp-to-aspnet/ - Kristen
1
微软的ASP到ASP.net转换工具是在1.0和1.1框架时期提供的。在转换过程中,经典的ASP页面与所有VBScript将被更改为内联VB.net标记与当前HTML标记交织在一起。虽然在转换方面很有效,但如果您正在使用COM对象等内容,则转换工具将无法处理这些项目。之后需要进行大量清理,而且仍然没有从干净的aspx页面开始的好处。 - Chris

1

如果您正在寻找一种向管理层证明项目的方法,那么要找到继续维护应用程序的经典ASP开发人员将变得越来越困难。任何有选择权的开发人员都可能不会选择使用VBScript构建的应用程序进行维护。接受这份工作的开发人员可能会认为它是暂时的,并继续寻找其他工作。

虽然我没有听到微软的任何消息,但他们决定完全停用经典ASP也不会太多年了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接