Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Silverlight 5 MVVM最佳实践_Silverlight_Mvvm_Silverlight 5.0 - Fatal编程技术网

Silverlight 5 MVVM最佳实践

Silverlight 5 MVVM最佳实践,silverlight,mvvm,silverlight-5.0,Silverlight,Mvvm,Silverlight 5.0,鉴于MVVM是如何被高度评价为一个好的系统设计模式,我想我可以跳上去给MVVM一个机会 在我开始提问之前,先了解一下我自己的背景: 我用ASP.NET Webforms进行了几年的开发。我也在ASP.NET MVC中做了一些开发,我对此感到非常满意 目前,我们有许多使用ASP.NET MVC 3编写的“主干”应用程序,我们可以随时定制这些应用程序并将其出售给我们的客户。这些应用程序都是供内部使用的,因此插件不会有太大问题 开发的真正问题是,对于具有复杂业务规则的大型业务应用程序,ASP.NET

鉴于MVVM是如何被高度评价为一个好的系统设计模式,我想我可以跳上去给MVVM一个机会

在我开始提问之前,先了解一下我自己的背景:

我用ASP.NET Webforms进行了几年的开发。我也在ASP.NET MVC中做了一些开发,我对此感到非常满意

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

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

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

所以问题来了:

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

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

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

    2-我没有太多地使用它,但它在很多情况下都很有用。有几个工具包可以将DI与Silverlight(如MVVM Light Toolkit)一起使用:

    4-对于UI之间的交互,可以使用中介模式。同一个MVVM Light Toolkit有一个Messenger,用于订阅、发送和接收消息,并维护每个分离的层


    希望这对您有所帮助;-)

    要添加到上一个答案中:

  • 我们正在开发一个大型企业级Silverlight平台和一组使用MVVM的应用程序。看起来效果不错

  • 我们正在广泛使用DI。我们的系统是建立在棱镜之上的。Prism包含大量不同复杂性的示例应用程序,说明了在MVVM中使用DI

  • 我们使用Unity作为我们的IoC容器。Prism包含MEF和Unity的指南。团结似乎是国际奥委会更传统的做法

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


  • 1.你介意分享你在这方面的经验吗?是因为.xap的文件大小吗?你有没有遇到任何并发症?2.这就是我觉得奇怪的原因。正如您所说,您没有在MVVM中使用多少DI。我可以知道为什么吗?是因为没有必要进一步解耦吗?4.我会调查的。感谢您的反馈。xap的大小现在约为6Mb,因此根本不是问题(以前它更大,因为我们包含的资源比需要的多…)。我们遇到的更大的问题是报告。只有当你想成为“真正的MVVM”时才需要DI,我不需要那么多的解耦。4-MVVM Light也有一个EventToCommand包装器来解决这类问题,这也是一个纯XAML解决方案。@jv42嗯,所有这些对我来说都是新的。我需要一些时间来消化。我一直在Caliburn.micro上查看。与MVVM Light相比,开发复杂性如何?@Jon我只使用过MVVM Light,它使用起来相当简单。我认为Caliburn.micro应该是类似的,而Prism更重。谢谢你的回复。这可能有点离题,但在过去的两天里,我一直在查看Caliburn.micro,它似乎很容易设置和运行。Caliburn.micro与Prism有多大不同(在开发复杂性方面)?对于新手团队,你会推荐Prism而不是Cliburn.micro吗?对不起,我没有Caliburn micro的经验。谢谢。我会检查每一个,看看哪一个最适合我们的团队。干杯