我的一位朋友正致力于从传统的asp应用程序生成的html页面中创建一个很好的解决方案来生成aspx页面。
想法是运行遗留应用程序,捕获html输出,使用某些工具(比如说HtmlTidy)清理html并解析它/将其转换为aspx,(使用Xslt或自定义工具)以便现有的html元素,div ,图像,样式等整齐地转换为aspx页面(太多;))。
任何现有的工具/脚本/实用程序都可以这样做吗?
答案 0 :(得分:2)
这是你做的。
定义遗留应用程序应该执行的操作。记下获取页面,发布表单,导航等方案
为各种场景编写类似单元测试的脚本。
使用Python HTTP client library在各种脚本中练习遗留应用。
如果你的脚本有效,你(a)实际上了解遗留应用程序,(b)可以使它做它应该做的各种事情,(c)你可以可靠地捕获HTML响应页面。 / p>
更新脚本以捕获HTML响应。
你有页面。现在,您可以考虑ASPX页面所需的内容。
手动编辑HTML以使其成为ASPX。
使用Beautiful Soup编写一些内容,将HTML按摩为适合ASPX的格式。这可能是使用<asp:...
标记替换文字或标记。
从HTML中创建一些其他更有用的数据结构 - 反映页面结构和含义的数据结构,而不仅仅是HTML标记。从更有用的结构生成ASPX页面。
答案 1 :(得分:0)
刚刚发现HTML敏捷包足够有用,因为他们比python更了解C#。
答案 2 :(得分:0)
我知道这是一个老问题,但在类似情况下(需要在.NET框架中显示的50k +旧版ASP页面),我做了以下内容。
创建了一个重写引擎(HttpModule),它可以捕获所有传入的请求并查找来自旧站点的任何内容。
(在一个单独的类中 - 保持组织有序!)使用WebClient或HttpRequest等打开与旧服务器的连接并下载呈现的HTML。
使用HTML敏捷工具包(非常光滑)来提取我感兴趣的内容 - 在我们的例子中,如果div为“bdy”类,则总是在里面
将此内容放入缓存中 - 此示例中为SQL表。
每次点击都会检查缓存,并且a)检索页面并构建缓存条目,或者b)从缓存中获取页面。
缓存是为了提高性能 - 因为给定页面的第一个请求至少有两个命中 - 一个从浏览器到新服务器,一个从新服务器到旧服务器 - 我将可缓存数据存储在新服务器,以便后续请求不必返回旧服务器。我们还缓存图像,CSS,脚本等。
当您必须处理表单,cookie等时,它会变得混乱,但这些都可以存储在您的缓存中,并在必要时通过每个请求传递到旧服务器。我还存储内容过期日期和我从旧服务器返回的其他标头,并确保在呈现缓存页面时将这些标头传递回浏览器。请记住尽可能采用与内容无关的方法。您正在有效地构建一个页内Web代理,它允许IIS以其想要的方式呈现旧ASP,并操纵输出。
效果很好 - 我在ASP.NET应用程序中无缝地运行所有旧页面。如果我们不得不触及每个传统的asp页面,这为我们节省了一整年的开发时间。
祝你好运!