我们即将开始大型企业应用程序.我正在认真考虑使用ASP.NET MVC,因为:
我们需要使用Microsoft技术(商业逻辑是所有C#)
表现至关重要
我想尽可能多地测试一下
我的团队只使用PHP进行Web开发,但对.NET winforms非常有经验(所以无论哪种方式我们都有学习曲线).我担心的是有些人对ASP.NET MVC对大型应用程序的可扩展性表示担忧.但是从我读到的内容来看,webforms也有自己的问题.
我应该重新考虑webforms,还是坚持我的直觉并使用ASP.NET MVC?
有关:
我应该在ASP.NET MVC中构建我的下一个Web应用程序吗? /sf/ask/17360801/
小智.. 30
ASP.NET webforms是重量级的,并且在html/javascript和序列化视图状态中放弃了网页上的内容.我记得我的第一个ASP.NET网站导致GC爆炸,因为所有短暂的对象都从那个神圣的观点状态重新水化.哦,当我年轻和天真(即2年前)...你必须非常好地了解webforms,以便从中构建可扩展的网站.可能?当然.简单?不.
ASP.NET MVC是很难的代码开始,但SO更容易比web表单开发.最难学的东西是1)惯例又名"魔术字符串",2)Html +内联代码又名ASP和3)html表单.
使用MVC,你无法摆脱webforms开发中常见的状态噩梦,这意味着这意味着你的网页很容易瘾.这也意味着你必须更聪明地编写你的状态.该代码也更简单,并且比传统的webforms,imho更好地扩展.
此外,使用ASP.NET进行测试几乎是不可能的,因为框架中存在硬编码和不可插入的依赖关系.ASP.NET MVC用System.Web.Abstractions成员替换了所有这些成员,这些成员是围绕这些设计糟糕且不可测试的对象的可模拟包装器.
跑步,不要走路,去MVC.
对于显而易见的问题,如果您使用位于ASP.NET框架顶部的框架,例如MVC或您编写的任何其他框架或其他人编写的框架,那么显然这些评论中的一些不适用.
另一方面,如果你像早期人类对ASP.NET webforms模型进行编码(例如,Page_Load中的Response.Write()),我的评论适用.
你能编写一个可以对ASP.NET测试的代码吗?当然.你可以不用包括你或别人写的特殊测试代码吗?当然.如果你有TypeMock.
ASP.NET webforms是重量级的,并且在html/javascript和序列化视图状态中放弃了网页上的内容.我记得我的第一个ASP.NET网站导致GC爆炸,因为所有短暂的对象都从那个神圣的观点状态重新水化.哦,当我年轻和天真(即2年前)...你必须非常好地了解webforms,以便从中构建可扩展的网站.可能?当然.简单?不.
ASP.NET MVC是很难的代码开始,但SO更容易比web表单开发.最难学的东西是1)惯例又名"魔术字符串",2)Html +内联代码又名ASP和3)html表单.
使用MVC,你无法摆脱webforms开发中常见的状态噩梦,这意味着这意味着你的网页很容易瘾.这也意味着你必须更聪明地编写你的状态.该代码也更简单,并且比传统的webforms,imho更好地扩展.
此外,使用ASP.NET进行测试几乎是不可能的,因为框架中存在硬编码和不可插入的依赖关系.ASP.NET MVC用System.Web.Abstractions成员替换了所有这些成员,这些成员是围绕这些设计糟糕且不可测试的对象的可模拟包装器.
跑步,不要走路,去MVC.
对于显而易见的问题,如果您使用位于ASP.NET框架顶部的框架,例如MVC或您编写的任何其他框架或其他人编写的框架,那么显然这些评论中的一些不适用.
另一方面,如果你像早期人类对ASP.NET webforms模型进行编码(例如,Page_Load中的Response.Write()),我的评论适用.
你能编写一个可以对ASP.NET测试的代码吗?当然.你可以不用包括你或别人写的特殊测试代码吗?当然.如果你有TypeMock.
ASP.NET WebForms与Winforms非常相似,允许RAD(快速应用程序开发).在没有时间得到东西的速度非常快.问题是测试可能是一个主要的痛苦,如果用于任何公共面临可能意味着ViewState的一些主要问题.WebForms可以轻松使用状态,使得向导变得轻而易举.
另一方面,ASP.NET MVC可能需要更长的时间来开发,并要求开发人员了解HTTP的工作原理.它是一种无状态架构,意味着每个请求都是它自己的小世界,并且通常不了解先前的请求.该框架还允许高可测试性.
就性能而言,它们可能是相同的,因为ASP.NET MVC只是构建在现有ASP.NET体系结构之上的框架.虽然对于客户端体验我会说MVC更快一些.
就可扩展性而言,我认为就技术而言,它们大致相同.如何使用API并集成它MVC可能会更容易一些.
您现在使用的网站询问此版本问题是基于ASP.NET MVC构建的,它们有2个Web服务器和一个强大的数据库服务器.
ASP.NET MVC对于Enterprise来说不是问题,但ASP.NET,Silverlight等也不是问题.它们都是UI技术.大多数应用程序逻辑应该存在于UI层下面的库中,因此几乎可以使用任何UI.
我们需要使用Microsoft技术
表现至关重要
我想尽可能多地测试一下
基于以上所述,ASP.NET MVC将起作用.但是,您可以将代码移到UI下方并进行测试.如果您的算法低于UI,则可以在不更改UI的情况下调整它们.并且,如果UI层非常薄,则UI的性能命中可忽略不计.