从经典ASP迁移到ASP.net

时间:2010-08-11 14:09:40

标签: asp.net asp-classic language-features

我来自经典ASP背景,已经做了多年和多年而且已经过时了。所以我已经开始学习.net。

至少可以说是非常不同的!它的结构有很多不同,而且似乎工作方式有很大不同,这是一个巨大的飞跃。但是,我觉得它越来越棒了。

我有一个快速搜索,找不到任何类似的问题,所以我创建了这个作为社区维基,如果你可以列出陷阱/差异或你认为它与你的回答相关的任何问题可能对很多人有帮助。

总而言之,从经典ASP到ASP.net的主要差异/陷阱是什么?(c#或VB.net)。请不要只列出.net的语言功能,它需要在某人从一个人移动到另一个人的背景下。

6 个答案:

答案 0 :(得分:1)

您最喜欢的搜索引擎上有很多有用的文章。您需要自己回答一些问题(http://www.google.co.uk/#hl=en&source=hp&q=transition+from+asp+to+asp.net&aq=f&aqi=&aql=&oq=&gs_rfai=&fp=a53e9ae07f1cc2a8

您打算使用ASP.NET Web窗体还是ASP.NET MVC?这个博客有一篇关于差异的好文章(http://weblogs.asp.net/shijuvarghese/archive/2008/07/09/asp-net-mvc-vs-asp-net-web-form.aspx)。两者都有其价值。

您是否打算尝试移植现有代码或彻底解决问题?

Razor是ASP.NET的新语法,我强烈推荐。它结合了html和c#代码语法,给人一种非常自然的感觉。这个博客(http://blogs.msdn.com/b/davidebb/archive/2010/07/07/how-webmatrix-razor-asp-net-web-pages-and-mvc-fit-together.aspx)在包括Razor在内的最新MS堆栈上发表了很好的帖子。

学习面向对象的编程。这非常重要。

得到http://www.asp.net这是一个很好的资源。使用教程并阅读其他人的代码。

编辑: 我忘了提一下,如果你要专注于ASP.NET WebForms,请学习页面生命周期,因为不了解这会导致围绕动态控件的一类常见错误。 http://msdn.microsoft.com/en-us/library/ms178472.aspx

答案 1 :(得分:1)

我假设您正在转向WebForms(但是您可能会考虑直接跳转到MVC或Silverlight,因为WebForms即将推出)

当我采取行动时,以下可能是主要问题:

  • 拒绝使用经典约定<%=,#include
  • 的诱惑
  • 抵制手动编辑ASPX文件的诱惑 - 尝试使用设计器
  • 如果你还没有这样做,你需要熟悉OO
  • 对于WebForms,您需要采用VB6 / WinForms方法处理按钮处理程序等。
  • 使用ASP.NET控件 - 您不需要像在ASP Classic中那样对微控制控件的状态进行大惊小怪。

接收一些视频: http://www.asp.net/general/videos#Videos%20on%20Migrating%20to%20ASP.NET

答案 2 :(得分:1)

几年前我做了同样的事情。我不能说我发现了任何“陷阱”;事实上,当我转向使用ASP.NET时,总是用来抓住我的经典ASP中的很多烦人的东西都消失了。

我认为最大的区别是从ASP / JScript转向强类型C#。在声明变量时,它迫使我不那么懒惰,结果我遇到了与范围或数据类型转换相关的少得多的错误。在C#中编写可重用的,面向对象的代码也更容易。

如果您刚刚进入它,我会建议您(并且仅仅是我的意见)要远离ASP.NET Web Forms并直接进入MVC。重新调整你的大脑在MVC范例中工作需要一段时间,但一旦它“点击”它就完全有意义。

我们最近在办公室找到this book,我完全推荐它;不要让“Pro”位让你失望,它从基础开始,非常简单易懂。

答案 3 :(得分:1)

当我开始使用Classic ASP时,我没有任何其他编程经验。我还没有在Windows窗体或控制台应用程序中构建任何东西。所以,当我转移到asp.net时,我花了一段时间才弄清楚代码背后发生了什么,控制事件处理程序。在我的前几个项目中,我试图像经典ASP程序员一样编写代码。我会做一些愚蠢的事情......

public void Page_Load(object sender, EventArgs e) {
    if (Request.ServerVariables["REQUEST_METHOD"] == "POST") {
      string myHtmlOutput = "";
      string firstName = "";
      if (Request.Form["ctl0_MainContent_FirstName"] != null) {
        firstName = Convert.ToString(Request.Form["ctl0_MainContent_FirstName"]);
        myHtmlOutput = "<h1>Hello "+ firstName +"</h1>";

        Response.Write(myHtmlOutput);
      }
    }
}

而不是WebForms方式......

public void Button1_Click(object sender, EventArgs e) {
    if (!string.IsNullOrEmpty(FirstName.Text)) {
      MessageLiteral.Text = string.Format("Hello {0}", FirstName.Text);
    }
}

老实说,如果我从经典ASP转移到asp.net MVC时,我会更容易掌握它,因为我不必花这么多时间学习所有的asp.net抽象。

答案 4 :(得分:0)

<强>含

Classic ASP的优秀设计来自于使用包含文件来模块化您的代码。

在.net中,这不可能与基于面向对象的层次结构相同。

答案 5 :(得分:0)

如果您正在进入Webform,请阅读并了解ASP.NET的ViewState;页面如何在帖子后面持续存在。如果您打算参与ASP.NET MVC,请阅读有关模型视图控制器的信息。在任一框架中,ASP.NET都是面向对象的语言,而经典则不然。