1

我正在研究针对 WP7 和 WP8 的新业务应用程序的架构。对于 WP7,我们将使用 silverlight 应用程序模型,并希望在迁移到 WP8 时准备重用代码(我们将希望使用 WP8 上的附加功能)。

由于 WP8 也将支持 xaml 和 C#,您对如何组织应用程序结构有什么特别的建议,请选择适当的方法。

总结以下建议:

  1. 分离代码和 UI。
  2. 对于业务逻辑,您可以使用 C# Windows Phone 类库(7.1 适用于 WP7 和 WP8)
  3. 如果您执行大量异步操作,请考虑使用 Windows Phone 的任务并行库。
  4. 为 WP8 特定功能使用单独的库。仅将其连接到 WP8。
  5. 您可能希望将通用 UI 移动到单独的库中,因为 Wp7 和 Wp8 都应该支持它(根据我的实验)。
4

3 回答 3

4

如何组织应用程序结构,选择合适的方法。

好吧,在使用 Windows Phone 时,MVVM 总是很受欢迎。任何良好的干净结构,遵循SOLID原则都可以。

Windows Phone 8 将支持新的 C# 5.0 语言功能,因此如果您有大量异步代码,请考虑使用适用于 Windows Phone 7 的Task Parallel Library,因为所有返回 Task 的调用都将支持awaitC# 5.0 中的新运算符。

Windows Phone 8 中最重要的变化是新的、性能更好的控件。如果你想用相同的代码库支持两个平台,你想尝试尽可能地将你的 UI 代码与应用程序的其余部分分开。您很可能还希望分离 UI 逻辑,例如 ViewModel。

考虑为您的业务逻辑提供至少一个单独的程序集,用于处理数据查询操作和/或计算。

至于新功能,如 C++ 开发/WinRT 互操作,将通过单独的程序集完成,无论如何您只能从 Windows Phone 8 程序集中引用;这意味着它不应该为您当前的应用程序结构提供任何问题。

于 2012-06-24T19:24:43.790 回答
2

当前的答案似乎没有详细说明实际项目结构的样子,所以我想我可以在这里分享我的:

您在下面看到的是我的应用程序的结构,它有 4 个版本:(WP7,WP8)X(Pro,ad funded)

代码和输出文件夹(bin7、bin8、...)放在第一个子目录中。项目文件放置在适当命名的子目录中。代码文件和资产链接到单个项目中。“属性”文件夹中的文件对于每个版本都是特殊的(其他 GUID、名称、动态磁贴图标等)。这样我必须按一次 F6 并且我拥有当前版本的所有 XAP。(只需要用一个小脚本来收集它们)

(仅供参考,“Pro”版本是使用 #ifdef 编译器标志实现的。)

我的 WP7+WP8(+

于 2013-01-02T23:06:12.633 回答
0

Silverlight 是基于 C# 的框架,您在帖子中混合了语言和框架,唯一需要考虑的是WP7 仅支持 C# 3.0 功能,WP8 可能会是一个更高级的工作台,带有 DirectX 和 C# 4 或更好,我们不还不知道,但是 WP8 还提供对 C 和 C++ 的全面支持。

Silverlight 很长时间没有收到重大更新或新闻。如果您真的想针对这 2 个操作系统,我建议使用共享的 C# 3.0 代码库,尽可能避免使用 Silverlight,考虑到 WP7 设备在以下方面几乎已死,这可能是一个更好的选择更新和核心功能;它们是基于 Silverlight 的设备,带有 XNA 用于游戏,但一些硬件相关功能非常低端,加上微软很长时间没有谈论 Silverlight,这个关于 C/C++ 支持的新更新可能会改变游戏规则开发商。

还有 C# 5.0 即将推出,WP7 已经很旧了,它可能会在几周内变旧,我也不知道你的项目的细节,但你可能需要计划几个月/几周的时间来提供支持和各种修复,我认为你可能应该有一个很好的理由来启动一个针对 WP7 平台的 C# 3.0 项目,我不是在讨论 WP7 作为操作系统,我是在讨论考虑近期和缺乏Microsoft 的一些项目的支持和新闻。

与讨论此事的 Microsoft 团队保持联系https://twitter.com/#!/wpdev,看看您是否可以获得更详细的图片。

最后请记住,可能唯一值得考虑的共同点是对 C# 3.0 语言的支持,框架可能会有所不同,或者可能更方便地采用新的框架,同样使用 C/C++,您可以获得无限大量的新图书馆。

于 2012-06-24T15:31:37.823 回答