在ASP.NET MVC(C#)中使用经典ASP

9
我有一个应用程序,我希望最终将其转换为ASP.NET MVC。我想进行全面的服务升级(到ASP.NET),但是希望使用当前的asp内容来运行当前功能,以便在对新框架进行增量升级的同时升级小部件。该网站严重依赖于一个不太成熟的VB6 DLL,因此我们还希望最终升级它,可能使用Web服务替换当前功能。这个任务是否有快速解决方案,或者是需要三个月以上的时间?另外,我相信这已经被考虑过了,MVC的美妙之处在于我认为有一种方法可以解决这个问题,尽管我不确定从哪里开始。最快的方法是将这个应用程序转换为ASP.NET MVC(在40个小时左右),我只需进行小的配置更改即可使其在ASP.NET MVC中工作?
3个回答

7
简短的回答是...你不能。经典ASP和ASP.NET之间的差异不仅在语法上,而且在整体设计上都有相当大的变化。MVC不仅仅是与经典ASP类似的实现方式,尽管看起来可能是这样。任何转换都需要时间、思考和努力才能完全使其正常工作。
好消息是,你可以同时运行它们,因此你可以将经典ASP代码运行在设置为ASP.NET或ASP.NET MVC网站的站点下。因此,通过一些胶带,你可以逐步拼凑出升级后的解决方案的各个部分。

我并不想暗示我认为它们在任何方面都相似。谢谢。我可以问一下,在并排选项中,是否有一种方法可以停止注册VB6 DLL并使其热部署。 - Jeff Ancel
据我所知,除非您重新编写DLL(至少就经典VB代码而言),否则仍需要注册它。对于.NET,您可能可以通过创建Interop并在本地引用它来逃避此问题,尽管这对依赖它的经典代码没有帮助。 - Quintin Robinson

3
将您的VB6 DLL重写为COM可调用的.NET程序集。然后,您可以从ASP和ASP.NET引用它。
希望大多数重要工作都在VB6 DLL中完成。如果是这样,您可以开始将页面迁移到ASP.NET MVC。您需要注意页面间的通信 - 例如Session和Cookies。Cookies基本上可以按原样使用,但您需要将Session移动到MVC和ASP之间共享的东西,例如Sql Server。不幸的是,这需要将ASP中的Session调用重写为其他东西(可能是再次封装了.NET组件的COM包装器)。搜索和替换应该可以解决问题。
至于时间表和所需工作量 - 这非常依赖于现有应用程序中的混乱程度、DLL与ASP中的逻辑数量以及要迁移的页面数量。
我认为40个小时无法使您熟悉.NET、MVC并进行重写 - 但我认为2-3个月可以。

这取决于开发者拥有何种培训资源以及他们需要达到何种“速度”。我个人认为最长可能需要6-8个月的时间。 - Matt Briggs

2

我已经在一个类似的项目上工作了相当长时间;我们有一个经典ASP应用程序,希望将其移植到ASP.Net(使用WebForms)。我们逐步迁移,如果我们要添加一个新页面,我们就用.Net编写它,并在.asp文件和.aspx文件之间重定向用户。使用MVC应该没有什么不同。

我们遇到的最大问题是安全性;网站需要登录,而会话当然不会在两者之间共享。我们通过将我们关心的会话部分持久化到数据库表中并通过查询字符串传递GUID来处理这个问题(我们只在登录时执行一次,然后从数据库中删除记录以减少安全风险)。


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