-1

看到 MVVM 如何被高度视为一种良好的系统设计模式,我想我可能会跳上去尝试一下 MVVM。

在我开始提问之前,请先介绍一下我自己的背景:

我已经使用 ASP.NET Webforms 进行了几年的开发。我还在 ASP.NET MVC 中进行了相当多的开发,对此我很满意。

目前,我们有许多使用 ASP.NET MVC 3 编写的“骨干”应用程序,我们会在与我们接洽时对其进行定制并出售给我们的客户。这些应用程序都是供内部使用的,因此插件不会有太大问题。

开发的真正问题在于,对于具有复杂业务规则的大型业务应用程序,ASP.NET MVC 往往会拖慢我们的速度(编写 jQuery / javascript > 服务器端处理 > 返回结果,使用 jQuery 通知 > 更改视图,沿着这个线)。

然后我开始寻找可以帮助我们提高交付时间和响应能力的答案(好吧,我们都知道 JavaScript 是如何杀死我们的),我的搜索把我带到了 Silverlight(我们有时间改变,不用担心) )。

那么问题来了:

  1. 我在网上遇到过许多 Silverlight MVVM 示例,但它们都展示了应用程序,就像只与一个数据库表进行交互一样简单。MVVM 模式是否非常适合大型应用程序?
  2. 在 MVC 中,我习惯于 Ninject 的依赖注入将 UnitOfWork 的实现传递给我的控制器。在我在网上找到的所有示例中,没有一个使用任何形式的 DI。真的没有必要吗?既然 MVVM 的思想是解耦,那为什么不把 ViewModel 和 Model 也解耦呢?
  3. 我阅读了 Jeremy Likness 出版的一本书,名为《设计 Silverlight 业务应用程序》。他使用 MEF 进行解耦,我认为这并不适合我们的应用程序。我们真的不需要做“热插拔”。你对此有何看法?
  4. MVVM 是关于命令、数据绑定和无代码隐藏的全部内容。如果我想与不暴露给命令的 UI 交互怎么办?(我不太确定,我猜是 ListView OnSelectionChange?)
4

2 回答 2

2

要添加到上一个答案:

  1. 我们正在开发一个大型企业级 Silverlight 平台和一组使用 MVVM 的应用程序。似乎工作得很好。

  2. 我们正在广泛使用 DI。我们的系统建立在 Prism 之上。Prism 包含大量各种复杂性的示例应用程序,说明了 DI 在 MVVM 中的使用。

  3. 我们使用 Unity 作为我们的 IoC 容器。Prism 包含 MEF 和 Unity 的指南。Unity 似乎是一种更传统的 IoC 方法。

  4. 在绝大多数情况下,使用绑定和命令可以满足我们的需求。对于其他人,我们使用表达式触发器和操作。如有必要,您还可以创建自定义触发器/操作。

于 2012-08-25T04:10:43.043 回答
1

我对你所有的答案都没有答案(从未使用过 MEF),但我可以告诉你我的经验:

1-我一直在开发一个相当大的 Silverlight 应用程序,MVVM 非常适合拥有一个可维护的应用程序。由于应用程序大小,我们遇到的更大问题是因为 Silverlight,而不是 MVVM 8-)

2-我没有使用太多,但它在很多情况下都很有用。有几个工具包可以将 DI 与 Silverlight 一起使用,例如 MVVM Light Toolkit: http ://compiledexperience.com/blog/posts/blendable-mvvm-dependency-injection-and-unit-testing

4- 对于 UI 之间的交互,您可以使用中介者模式。同一个 MVVM Light Toolkit 有一个 Messenger 来订阅、发送和接收消息并保持每个层的解耦。

希望这可以帮助你;-)

于 2012-08-24T11:15:12.700 回答