【问题标题】:winrt application frameworkwinrt应用框架
【发布时间】:2012-11-16 08:24:18
【问题描述】:

开发 Windows Store 应用程序的更好框架是什么?

我曾经使用过http://metroprism.codeplex.com/,但现在我想在另一个项目中使用 Caliburn.Micro 或 MVVM light。

我查看了这些框架的几个应用程序示例,但它们还不够复杂,我无法估计在更大项目中的使用情况。

这两个已完全记录在案,但我认为问题在于 winrt 的文档与 WP7、Silverlight 和 WPF 混合在一起,我怀疑是否支持完全用于 Windows 应用商店应用程序的所有功能和实践。

你能告诉我什么是更好的吗?或者在 Prism 中为 WPF 和 Silverlight 提供模块化支持的 Winrt 开发中的良好实践是什么。 谢谢。

【问题讨论】:

  • VS2012/Blend 模板项目中包含的框架你不喜欢什么?您面临哪些具体问题等?
  • 我没有任何特殊问题,我只是问了可能有人知道任何最佳实践。从今天开始,我正在尝试使用 Caliburn.Micro,乍一看它非常酷。但我要求确定。我无法预料一切。
  • 我的 2 美分,如果不是 CM,我可能会放弃做 SL 开发 :)。而且,屏幕和指挥棒极了。 github windows 客户端使用 CM 作为屏幕和导体。

标签: windows-runtime mvvm-light caliburn.micro


【解决方案1】:

MVVM Light 和 Caliburn.Micro 基本上做同样的事情,但他们在 MVVM 中使用相反的“开发哲学”。

MVVM Light 是一种“查看优先”的方法。在这种方法中,ViewModel 由 View 实例化。在 MVVM Light 中,这是通过称为 ViewModelLocator 的东西完成的,这是一个将公共属性直接绑定到 View 的 DataContext 的静态类。

Caliburn.Micro 是一种“视图模型优先”的方法。在这里,您会发现 viewmodel 和 view 是由将两者绑定在一起的 IOC 机制创建的。您从 viewmodel 导航到 viewmodel,并生成视图以响应导航到 ViewModel。

它们都有不同的功能:

MVVM Light 有一个非常好的消息传递系统,允许视图模型以松散耦合的方式相互通信。

MVVM Light 有一个非常简单的机制,可以将设计时数据注入到您的视图中。基本上,它将您的运行时服务替换为设计时服务,这些服务将数据提供给您的视图模型,然后是您的视图。这使得设计时数据非常易于使用。

Caliburn.Micro 有一个惊人的数据绑定设置,它可以为您处理大部分数据绑定脚手架。基本上,它将方法和属性的名称映射到视图中控件的名称并自动装配它们。这可以节省大量代码,并且是一个非常非常好的功能。

Caliburn.Micro 使用“约定优于配置”机制将视图映射到视图模型。 MainView 映射到 MainViewModel 等。这意味着你没有配置,你只需要确保你已经整理好了命名约定。

我使用过这两种框架(用于 WP7 的 Caliburn.Micro 和用于 Windows 8 应用商店应用的 MVVM Light),并且出于不同的原因喜欢它们。 MVVM Light 更容易开始使用,但 Caliburn.Micro 可能更强大。我发现它们都足以快速编写中等复杂的应用程序。

【讨论】:

  • CM 可以同时做,先查看和先虚拟机,在手机和 WinRT 上先查看是强制的,但是一旦页面被绑定,它就是虚拟机。
  • 非常感谢您的回答。我找不到这两者的比较文章,但你把它给了我。
【解决方案2】:

Caliburn.Micro 以一些魔法为代价为您提供干净的 XAML。 MVVM Light 是一个干净简单的框架,易于理解且运行良好。 Prism 似乎比 MVVM Light 重一些,而且更面向商业应用程序——它不仅仅是 MVVM。有很多事情需要考虑。选择你已经知道的可以让你专注于添加功能,但是学习一个新的框架肯定会是一个很好的学习体验,对未来的选择很有帮助——所以如果你想学习的话,你可以选择以前没有使用过的东西。您也可以编写自己的框架,只包含您需要的内容。我通常会在 roll your own 和 MVVM Light 之间徘徊,因为这是我所知道的,但如果我要构建一个更大的企业应用程序 - Prism 可能更适合这项任务。我没有使用 Caliburn.Micro,因为不同 MVVM 方法的新颖性对我来说已经消失了,我只想创建应用程序。使用 WinRT,滚动你自己的框架方法比使用任何平台更容易,因为基本项目模板已经为您提供了一些基础,正如我在我的 Minimalistic MVVM 博客文章中所写的那样。如果您已经尝试过 MVVM 并且只想使用您需要的部分,我会推荐这种方法 - 该框架将随着您的应用程序而增长。如果需要,您可以从其他框架中获取代码片段,或者编写自己需要的模式的实现。

总结

  • 如果您想学习 - 尝试以前从未尝试过的东西或编写自己的框架
  • 如果您想快速创建一个应用程序并且它不是一个庞大的应用程序 - 使用您所知道的或极简主义,除了从模板中获得的内容之外不要使用任何东西
  • 如果您要构建一个具有许多功能的大型应用程序 - 考虑 Prism,或者首先考虑一下 Windows 应用商店是否是适合您的目标平台,因为它似乎更侧重于简单的进出平板电脑应用程序

【讨论】:

  • 感谢您的回答。你是对的,你给了我需要的答案。真的,这个项目比我之前使用 Metroprism 的项目更简单。这正是我想尝试一种更轻量级的框架的原因。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多