【问题标题】:Development time of ASP.NET MVC application with MVVM [closed]使用 MVVM 开发 ASP.NET MVC 应用程序的时间 [关闭]
【发布时间】:2012-06-09 20:16:22
【问题描述】:

我们正在与团队讨论使用 ASP.NET MVC 构建 Web 应用程序的不同选项。一种选择是在渲染视图的任何地方都使用 MVVM(即,knockoutjs)。方法看起来非常强大,但需要考虑开发工作。

我希望其他人根据他们的经验(或指向某些资源)提供一些粗略的“行业标准”开发时间比较建议。例如“对于一个普通的 ASP.NET Web 应用程序,使用 MVVM 平均需要 N 倍更多/更少的努力”。

【问题讨论】:

  • “平均”网络应用程序很难量化。您是否包括时间来学习淘汰赛和 mvvm 模式?
  • Tyrsius,不包括淘汰赛/mvvm 学习的时间(假设团队对此有所了解)。
  • 非常主观的问题,可能会导致非常固执的答案。不同的团队设置以不同的速度工作。在我看来,有很多变量可以为overall 这样的问题发布明确的答案。
  • François Wahl,我同意这是主观的。但仍然希望人们分享他们对该主题的知识。

标签: asp.net-mvc-3 mvvm knockout.js estimation


【解决方案1】:

我们组终于决定在这个时候放弃knockout.js

knockout.js的问题是写代码的时候不会有很好的intellisense。与 MVC 中的 ViewModel 相比,这使得开发容易出错且耗时。

特别是当需要在线提交表单时,我们仍然喜欢利用可以在视图模型上设置的DataAnnotation 属性。这种做法仍然为我们节省了大量的服务器端和客户端验证时间。

但我想说knockout.js 有它的好处,因为更多的客户端编程确实改善了用户体验。如果更少的回发意味着很多,请考虑knockout。特别是当一页上的客户端有很多东西要更改时。否则,我会简单地使用 ajax 调用并在 success: 子句上使用 jQuery 更新页面内容。

至少有一个未来的项目我想用广泛的knockout 来处理。毕竟这将是必要的知识。这不是很困难。只需按照网站上的优秀示例进行操作即可。

【讨论】:

  • Blaise,感谢您分享淘汰赛的经验和技巧。
【解决方案2】:

我发现knockoutjs 的开发速度非常快。但是,我发现有几件事可以使它更快。

首先,是使用coffeescript 而不是javascript。 (使用 web 工作台,如果您最终使用,也切换到使用 SASS for css)。但是,没有智能感知或任何东西......虽然我个人认为这不是一个问题。然而,coffeescript 比 javascript 简洁很多,并且与 knout 结合得非常好。

接下来是数据从 C# 到 json 到淘汰赛的转换。

通常在这里,在您的控制器中,您从数据库中获取数据(使用您最喜欢的 ORM),将其投影到 C# 视图模型,并将其传递给视图(Razor),然后使用它并将其转换为 json 映射它是一个淘汰视图模型。

如果你将所有这些都移到 Razor 视图中(基本上你的控制器将参数传递给视图)。然后查询数据库并在 Razor 视图中创建 C# 视图模型。然后这使开发速度更快,因为您基本上只需编辑视图、刷新网页、编辑、刷新(无需编译步骤)。

虽然写下来这听起来有点令人困惑,但实际上这样做非常简单,只需少量代码,您就可以非常快速地构建一些功能丰富的页面。

根据您的工作,我会说基于淘汰赛的解决方案往往快 1->10 倍。但是,在个别情况下,asp.net 中的特定控件会使某些事情稍微容易一些,但是,在淘汰赛中复制该行为通常并没有那么多工作,更重要的是,将事情自定义为您所需要的更容易想。

【讨论】:

  • 基思,感谢您的详细回复。您尝试过什么类型的应用程序?以及它们有多大。丰富的数据录入、企业级解决方案、电子商务等,还是不同类型的应用?
  • 它被用于订单/交付类型系统、计费系统、用于查看数据的交互式诊断类型系统。我看不出应用程序的类型有太大的不同。 (好吧,对我来说)。学习曲线相当显着,我们很快就取得了成效,但回顾这段代码,它非常混乱和混乱。
  • 另外,我发现页面慢慢开始变得像迷你 SPA(单页应用程序)
猜你喜欢
  • 2018-01-09
  • 2010-12-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-13
  • 1970-01-01
  • 1970-01-01
  • 2016-01-09
相关资源
最近更新 更多