17

所以我即将为我的体育俱乐部启动一个用于会员注册的小项目,我正在尝试在 WebForms 或 MVC 之间做出决定。

Allit 将是一个用户登录和数据捕获表单(或和数据检索),所以我最初考虑使用 FBA 的 WebForms,但我想玩 MVC 有一段时间了,我认为它不会是太糟糕的选择。

但是对 MVC 并没有太多的了解,我不知道它是否不合适。

那么什么是确定 WebForms 或 MVC 是否是正确选择的好方法呢?

4

6 回答 6

12

这是一个关键的生产级应用程序还是一个小的一次性应用程序?您能否处理 MVC 的学习曲线所花费的额外时间,或者您是否需要立即完成?如果 MVC 不成功,你能负担得起放弃整个事情并重新开始吗?您是否愿意在开发过程中改变平台(现在它处于测试阶段可能不会改变太多)?是否有另一个不太重要的项目可以使用 MVC 来学习它。

根据您如何回答这些问题,在这个项目中学习 MVC 可能是值得的。就个人而言,我认为它是一个更好的架构,但在这一点上是一个不太成熟的技术。它确实增加了我的 Web 代码的可测试性。我希望在接下来的一年左右的时间里将我所有的开发都朝着这个方向发展,尽管我怀疑我是否会改变我已经开发了一段时间的任何项目。我刚刚开始了我在 MVC 中的第一个新项目。在它进入测试版之前我不愿意承诺它,我认为它会在我完成项目之前投入生产。

于 2008-11-30T05:19:52.623 回答
5

我真的很喜欢 WebControls 方法。很多人都说“在做 MVC 时,单元测试更容易”。首先,无论如何,您应该使用哪种类型的方法将业务逻辑和您的 UI 层完全分离。如果您这样做,那么无论您使用哪种方法,您都可以对您的业务逻辑进行单元测试。当然,使用 MVC 可能会更容易并且“开箱即用”,但这并不是通向罗马的唯一道路……

其次,您可以使用WatiN,它可以让您的应用程序以远远优于传统单元测试的方式进行测试。(请注意,我并不是说它应该取代单元测试,但除了单元测试之外,它还可以将您带到以前无法获得的安全级别)

第三,网络是无状态的。这是因为 HTTP 是一个完全无状态的协议。这正是使 Web 变得美丽的原因,但同时也很难为其开发应用程序。WebControls 方法主要通过拥有诸如 ViewState 之类的概念来完全解决这个问题。这在进行应用程序开发时消除了很多麻烦。看看这个Ajax Calendar 示例,在任何其他范例中使用相同(少量)的代码几乎不可能实现,然后是 WebControls(免责声明;我自己使用 Ra-Ajax)

现在看看Stacked(免责声明;......我也与 BTW 合作)然后意识到我到目前为止花了不到 3 天的时间来开发你在那里看到的东西。也许有人可以用 MVC 实现这一成就,但我对此表示怀疑......

我认为 WebControl 范式非常漂亮。当然它在某些方面有所欠缺,但你猜怎么着,一切都是如此。编程作为一种艺术形式存在的唯一“银弹”是不存在任何银弹。

话虽如此,我知道Grurrah除了使用基于 WebControl 的 Ajax 库外,还使用 ​​Castle Project 的 MVC 层。所以混合 WebControlsMVC 可能很困难,但肯定不是不可能的......

我认为 MVC 已经得到了很多“应得的”炒作,但不幸的是,在这个过程中也有很多不应有的炒作......!:(

下定决心,不要听 MVC 布道者试图说服你他们已经找到了 Web 编程的“银弹”。更重要的是,也不相信我!我也有一个议程(让 Ra-Ajax 采用)

下定决心。问别人你是否应该做 MVC 就像问我应该吃苹果还是橙子......你会得到的唯一好的答案是;“这取决于”...

于 2008-11-30T14:33:58.450 回答
1

IMO,MVC 是前进的方向。如果你有时间学习 MVC 编程方式(因为你暗示你想玩 MVC ..意思是你还没用过),那么这将是一个深入研究产品的绝佳机会。

如果您有以前的 WebForms 经验(我猜您会这样做),那么学习曲线并不高。

如果您需要真正快速地创建一个站点,不要关心它是什么,并且站点会很小,那么请使用 WebForms。这是快速而讨厌的解决方案(仅出于我的意见)。WebForms 100% 完美运行。我所有的网站都是 WebForms,它们都很好。

概括:

  • 有时间想学习制作网站的最佳方法:MVC
  • 没有时间或不在乎:WebForms。

gl 和 hth。

于 2008-11-30T05:21:31.870 回答
1

我们得到了同样的机会。在玩了几个星期的 MVC 之后,我们发现有些事情我们并不完全理解,以及一些事情会涉及到一些变化:

  • 实现存储库设计模式
  • Html Helpers 与标准 Web 窗体控件,如 Repeaters 和 GridView
  • 缓存
  • 是否使用我们目前使用的框架,Csla,或者尝试移动到仅带有部分类的 Linq-To-Sql 来保存业务逻辑
  • 涉及主从类的复杂类和用户界面

我们决定继续使用它,等到它正式发布,然后编写一个内部应用程序,看看它会把我们引向何方。

于 2008-11-30T12:57:30.843 回答
1

Webforms 是来自 gui 世界的人们对 Web 的抽象。我发现它有很多优势,尤其是在 RAD 意义上,但是在编写大型强大的应用程序时,您通常最终会将自己描绘成一个很难摆脱的角落(即:与视图状态有关的一切。)

另一个问题是您在使用网络表单时会陷入不良习惯。你不应该使用拖放数据源、内置网格控件,并且如果你想要一些可扩展和可维护且具有干净架构的东西,那么绝对不能在背后的代码中包含业务逻辑。在网络表单中做到这一点需要深谋远虑和纪律,因为一切都会引导您朝着这些方向前进。

相比之下,使用 MVC,您会陷入最佳实践。它具有更高的性能(整个页面生命周期/视图状态在客户端和服务器上都表现出色),并且从架构的角度来看更清晰。

缺点是你可以和 RAD 说再见,而且你实际上需要对 css/javascript 有相当的了解才能制作好看的页面。

这真的归结为工作的最佳工具,以及您/您的团队拥有的经验/知识类型。

于 2008-12-01T17:48:05.030 回答
0

根据您对 tvanfosson 的评论,听起来 MVC 对您来说是一个不错的选择,因为您将学习的愿望列为选择该技术的理由。我怀疑 MVC 会从它的测试版中发生巨大的变化。因此,这可能是学习新工具的好机会。至于 WebForms 是“快速而讨厌”的解决方案,我担心这是 MVC 宣传。

于 2008-11-30T06:57:04.673 回答