有关使用ASP.net WebForms或MVC的建议

时间:2010-01-15 07:45:50

标签: asp.net asp.net-mvc asp-classic webforms

我有一个面向公众的爱好网站,每天约有3000名独立访客,用经典的ASP编写,不太需要改造和重新设计。我已经意识到升级到ASP.net是实现功能的最佳方式,这些功能对于业余爱好者来说太难了(消费RSS提要,身份验证和用户配置文件),但我很想得到一旦我完成了重新设计/升级,就陷入困境。

但是,我已经陷入了不确定性的瘫痪状态:Web Forms或MVC - 加上似乎总会有一些新版本即将发布,似乎值得坚持改进学习曲线。所以我花了几个小时阅读WebForms,然后读了一些东西告诉我,我可能会更好地考虑MVC,然后阅读MVC,并想知道它是否真的适合我想要做的事情。

这些教程和入门网站都没有真正谈论哪些网站适用于传统的旧静态信息网站(不是目录或用户内容驱动)。

我的网站大约有75%的静态信息页很少改变。但是,ASP脚本在所有这些页面的用户界面中是必不可少的 - 动态或随机选择设计元素(如标题照片)或根据一年中的某一天或随机提供特定的侧边栏。

我所拥有的脚本就像是一个脚本,可以随机选择并显示页面的30个标题图像之一,一个显示文本的脚本和基于一年中某一天的链接,一个允许我的脚本声明特定搜索关键字与特定页面的内容相关,并在页面加载时将其预先加载为搜索输入框中的文本。

对于大多数其他页面,它们都是关于显示数据。其中一些是小记录集(关于一年中特定日期的重要内容的年历类型信息),我将其保存并从页面本身的Array变量中提取。其他人从Access数据库中提取信息,该数据库变化很少,我从未在网站上实现CUD功能(以及必要的角色和身份验证以保护它),但只是离线更新数据库并上传它以实时发送更改

使用ASP.net,我可以很好地转移到SQL Server并构建实时管理页面。我不需要坚持使用Access。

但是,我更习惯于编写原始HTML和CSS,而且我发现WebForms(尤其是Viewstate和事件/回发)是一个挑战,可以从概念上理解。即使它似乎更适合文件系统中的静态页面,但我已经习惯了一些服务器端代码。

另一方面,MVC似乎非常适合手工编码的设计,但是从数据库中提取所有内容。

你会推荐什么?我应该将所有静态页面拉入数据库并通过MVC中的“文章”视图提供它们吗?

我不是一名专业的开发人员 - 所以这不是关于什么在我的简历上看起来最好。我只是在寻找(a)来自经典ASP中来自VBScript内联表达式的人的最少学习曲线,以及(b)最适合我的网站的内容和(c)让我对标记有一些控制权 - 和CSS。

7 个答案:

答案 0 :(得分:7)

绝对是MVC,特别是如果你作为一个HTML / CSS家伙更舒服的话。对于一个基本上是静态的站点,回发没有任何优势,并且您需要几个月的时间来了解页面生命周期(我还没有遇到一个开发人员,他在编码6个月之后就是生命周期的主人。 )

将ASP经典网站转换为MVC基本上涉及将HTML和ASP标记移动到视图中,并使用路由机制复制现有URL。您需要升级脚本以使用更现代的功能,但这应该是我想象的相当简单。

我不同意在MVC中从数据库中提取所有内容的想法 - 这与架构有点无关。我在MVC框架中编写了100%静态站点,并且喜欢它:)

我的经验法则趋向于:“网站的MVC,企业网络应用程序的WebForms - 也许。”

答案 1 :(得分:4)

MVC非常适合你正在做的事情。

如果需要的话,拥有静态视图是完全可以的。例如,只需看看MVC的File-> New Project模板生成的内容。

考虑到你已经习惯于编写HTML / CSS并且两个框架都会呈现学习曲线,我肯定会推荐MVC。我认为你会发现MVC适合要求A和C也比WebForms好(并且都满足B)。

答案 2 :(得分:2)

考虑到您的经验,我建议您使用ASP.NET MVC。因为你熟悉HTML& CSS你必须习惯MVC模式,不到一周的工作。此外,MVC对于显示数据更好,更快,并且它支持输出缓存,因此您可以缓存静态页面并实现极佳的速度。使用两者之间的混淆也不是问题 - 你仍然可以拥有WebForms页面并使用你需要它们的控件。

答案 3 :(得分:2)

根据我从ASP传递到ASP.NET和ASP.NET MVC的经验,从ASP传递到ASP.NET MVC更容易。 然而,学习的曲线并不那么容易 请阅读并关注http://nerddinnerbook.s3.amazonaws.com/Intro.htm 并且,在阅读之后,请查看版本2中的新功能,例如:

weblogs.asp.net/scottgu/archive/2010/01/10/asp-net-mvc-2-strongly-typed-html-helpers.aspx

它将成为经验丰富的开发人员的RAD!

答案 4 :(得分:0)

使用效率最高的内容,如果您熟悉网络表单,并且喜欢事件驱动模型,则可以随时查看MVP ( Model-View-Presenter )

ASP.NET MVC非常棒,对我而言,它可以提高工作效率。

答案 5 :(得分:0)

首先,您确实需要确保重写值得付出努力。根据我的经验,重写需要比预期更多的工作,并且有很长的投资回收期。这并不意味着它们不应该被完成,它确实意味着必须有一个非常好的理由来启动它。您提到的功能可以在很短的时间内轻松地在经典ASP中实现。遗留应用程序通过调整,错误修正和隐藏功能而受到惊吓。改写通常意味着失去那些年的经验。这一切都取决于当前的功能/新功能比率。

其次,如果您要重写,您可能还想检查除asp.net之外的技术。您描述的网站似乎非常注重内容,可能比asp.net mvc更适合django。祝你的网站好运。

答案 6 :(得分:0)

我还建议您使用ASP.NET MVC,因为您非常熟悉HTML / CSS。此外,通过路由功能,您可以更好地组织网站的结构。此外,由于URL的原因,您的网站对访问者的预测性更强。

示例:

www.domain.com/hobbies/photography