Diamonds
是一个基于Windows窗体的ERP,我会使用网络技术,而不是Windows窗体重建它..asp.net web表单VS MVC这是最适合业务应用
,但现在我需要决定这是最好的,ASP.NET webforms
(我认为)更容易(设计)我的意思是在这里的用户界面,但mvc
有更简单的HTML输出,和一些其他功能...
你能帮我决定技术使用和为什么?
我使用C#,
干杯
Diamonds
是一个基于Windows窗体的ERP,我会使用网络技术,而不是Windows窗体重建它..asp.net web表单VS MVC这是最适合业务应用
,但现在我需要决定这是最好的,ASP.NET webforms
(我认为)更容易(设计)我的意思是在这里的用户界面,但mvc
有更简单的HTML输出,和一些其他功能...
你能帮我决定技术使用和为什么?
我使用C#,
干杯
我认为这两种技术在经过任何基础知识之后都会变得有些复杂。以下是我在实现必须同时存在于MVC和WebForms主机中的项目时收集的一些简短意见。
WebForms的肯定:
WebForms的否定:
MVC肯定:
MVC否定:
就我个人而言,我是一个MVC粉丝,因为控制,灵活性和透明的依赖注入支持。也许你应该用两种技术做一个小型飞行员,看看你更喜欢哪一个。祝好运并玩得开心点!
如果你关心的可扩展性,易维护性,可扩展性和应用程序的稳健性,以及你的软件开发技能的开发,然后留远尽可能远离网页表单。
通过在窗体中包装所有内容来添加一层状态的想法是错误的。 HTTP是无状态的,并且MVC是围绕该模型构建的,这很好。
编辑 关于提出的意见。 Web表单应用程序不可扩展,因为表示层,业务逻辑和数据访问代码(数据源)都驻留在代码后面。 Web表单提供的控件仅适用于Web表单。这意味着您将无法将这些技能转移到其他Web开发框架。
最后,当然可以使用MVC编写一个紧密耦合的应用程序 - 总有一种方法可以销毁某些东西。对此没有任何争议。主要的一点是,当网络形式实际上把你从你身上带走时,MVC鼓励分离顾虑和单一责任原则。
你也说过,网页表单比较容易。如果您一直在使用它,并且与MVC相比更快,但是从长期来看,MVC可能变得“更容易”。在www.asp.net/mvc上观看一些视频。另外你可能想看看测试驱动的开发(单元测试)。我不认为单元测试适用于网页表单,因为所有内容都紧密结合在一起。如果我错了,请纠正我。
我会非常有兴趣听到其他开发人员对使用这两个框架的经验有兴趣。
这个答案是当场上。你会看到人们支持论证的双方,但作为一个很长一段时间webforms开发者谁最近首先进入MVC,我可以诚实地说,我从来不想再写一个Web表单应用程序:) – stephen776 2011-06-10 11:40:07
恕我直言,MVC显然更好,但所有您所引用的原因与底层框架无关,而是从开发人员提供的代码质量中获得。可伸缩性也与Web前端无关,但始终依赖于基础数据服务。带有重载数据库的MVC站点与webforms数据库一样慢。 – jfar 2011-06-10 12:09:44
请参阅编辑。 – 2011-06-10 13:47:35
这是所有关于您的选择让Web窗体可以让您轻松设计您的应用程序,因为现在MVC已经成为行业标准,甚至MS正在推广它。如果你想保持你的代码清洁,毫无疑问MVC是更好的选择。
尽管我已经完成了大量使用Web表单的项目,但我必须说他们存在的主要原因是通过HTTP提供了一个抽象层,主要是为了促进基于事件的无状态协议模型。不幸的是,像大多数MS解决方案一样,这是有代价的。
从历史上看,Web表单过去一直困扰着标记生成的问题。其中一些问题今天仍然存在,尤其是涉及到ViewState时。事情现在稍微好一点(你可以在ASP .NET 4.0中管理DOM id),但Web表单仍然会导致你的悲伤。在Web表单项目中你会看到的常见事物是在代码隐藏中大量的biz逻辑。
MVC并没有消除这一点,但它提供了一个结构和关注点的分离,使不好的练习变得不太可能。也就是说,尽管从最终用户的角度来看,默认视图引擎在生成清晰标记方面效果更好,但视图中的内联代码是对传统ASP的反拨。
对于它的价值,我已经停止开发web表单项目,并专门转到MVC进行新的工作。
我认为this post from Scott Guthrie是非常有趣的阅读。阅读后,我认为你很可能会去ASP.NET MVC。 :-)
“使用依赖注入很难”使用/实现“ - 如何?在'Page'中注入依赖关系非常简单,类似于设置控制器工厂http://aspnetresources.com/articles/ioc_and_di_with_web_forms – jfar 2011-06-10 15:42:11
对不起,但对我来说,使用nuget将ninject“安装”到我的mvc中项目(然后使用WebActivator将依赖关系无缝注入到我的控制器中)比实现自定义PageHandlerFactory更直观。我有一个解决方案,部分在mvc中运行,部分在webforms中运行,并且我最终为Webforms使用了ServiceLocator模式。我无法将基类更改为我的控件/页面,我想简化它。一个人肯定可以得到它的工作,但我发现MVC更容易设置。 – Jason 2011-06-10 18:43:22
@Jason - 有一个用于webforms的Ninject nuget包。没有看到这与MVC有何不同或更直观。 – jfar 2011-06-10 19:08:33