代码之家  ›  专栏  ›  技术社区  ›  amazedsaint

分析从旧版ASP应用程序生成的HTML以创建ASP.NET 2.0页

  •  0
  • amazedsaint  · 技术社区  · 17 年前

    我的一个朋友正在开发一个很好的解决方案来生成ASPX页面,它是从旧的ASP应用程序生成的HTML页面中生成的。

    其想法是运行旧版应用程序,捕获HTML输出,使用某种工具(例如htmltidy)清理HTML,并将其解析/转换为aspx(使用XSLT或自定义工具),以便将现有的HTML元素、div、图像、样式等整齐地转换为aspx页面(太多;)。

    是否有任何现有的工具/脚本/实用程序执行相同的操作?

    3 回复  |  直到 16 年前
        1
  •  2
  •   S.Lott    17 年前

    这就是你要做的。

    1. 定义遗留应用程序应该做什么。写下获取页面、发布表单、导航等场景。

    2. 为各种场景编写类似单元测试的脚本。

    3. 使用Python HTTP client library 在各种脚本中运行旧版应用程序。

    4. 如果您的脚本工作正常,您(a)实际上理解了旧版应用程序,(b)可以让它做它应该做的各种事情,(c)您可以可靠地捕获HTML响应页。

    5. 更新脚本以捕获HTML响应。

    你有页面。现在您可以考虑您的ASPX页面需要什么。

    • 手工编辑HTML使其成为ASPX。

    • 写一些有用的东西 Beautiful Soup 将HTML按摩成适合ASPX的形式。这可能是用 <asp:... 标签。

    • 从HTML中创建一些其他更有用的数据结构——它反映了页面的结构和含义,而不仅仅是HTML标记。从更有用的结构生成ASPX页。

        2
  •  0
  •   amazedsaint    17 年前

    刚刚发现HTML敏捷包非常有用,因为他们比Python更了解C。

        3
  •  0
  •   3Dave    16 年前

    我知道这是一个老问题,但在类似的情况下(需要在.NET框架中显示50k以上的旧ASP页),我做了以下操作。

    1. 创建了一个重写引擎(httpmodule),它捕获所有传入的请求并查找来自旧站点的任何内容。

    2. (在一个单独的班级里-把事情组织好!)使用WebClient或httpRequest等打开到旧服务器的连接并下载呈现的HTML。

    3. 使用HTML敏捷性工具包( 非常 slick)提取我感兴趣的内容——在我们的例子中,如果是一个带有类“bdy”的DIV,那么它总是在内部。

    4. 将它放入缓存中—本例中的SQL表。

    每次点击都会检查缓存,a)检索页面并构建缓存条目,或者b)只是从缓存中获取页面。

    1. 专门为显示旧内容而构建的ASPX页接收重写请求,并在ASP文本控件内显示旧页中的相关内容。

    缓存是为了性能而存在的-因为给定页面的第一个请求至少有两次命中-一次从浏览器到新服务器,一次从新服务器到旧服务器-我将可缓存数据存储在新服务器上,以便后续请求不必返回到旧服务器。我们还缓存图像、CSS、脚本等。

    当您必须处理表单、cookie等时,它会变得混乱,但是这些都可以存储在您的缓存中,并在必要时与每个请求一起传递给旧服务器。我还存储从旧服务器返回的内容过期日期和其他头,并确保在呈现缓存页面时将这些头传递回浏览器。只要记住尽可能采用内容不可知论的方法。实际上,您正在构建一个页面内的Web代理,它允许IIS按照自己的需要呈现旧的ASP,并控制输出。

    工作得很好-我让所有的旧页面在我们的ASP.NET应用程序中无缝工作。这为我们节省了整整一年的开发时间,如果我们必须接触每一个遗留的ASP页面的话,这是必需的。

    祝你好运!