共享WP7和WP8的代码库

时间:2012-06-24 15:00:52

标签: codebase windows-phone-8

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

由于WP8也支持xaml和C#,你有什么特别的建议如何组织app结构,选择合适的方法。

总结以下建议:

  1. 单独的代码和用户界面。
  2. 对于业务逻辑,您可以使用C#Windows Phone类库(7.1适用于WP7和WP8)
  3. 如果你做了很多异步,请考虑使用Windows Phone的任务并行库。
  4. 为WP8特定功能使用单独的lib。仅将其连接到WP8。
  5. 您可能希望将公共UI移动到单独的lib,因为它应该在Wp7和Wp8中都受支持(根据我的实验)。

3 个答案:

答案 0 :(得分:4)

  

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

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

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

Windows Phone 8中最重要的变化是新的,性能更好的控件。如果要支持具有相同代码库的两个平台,则需要尝试将UI代码与应用程序的其余部分分开。很可能你也想要分离UI逻辑,比如ViewModels。

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

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

答案 1 :(得分:2)

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

您可以在下面看到的是我的应用程序的结构,它有4个版本:(WP7,WP8)X(专业版,广告资助)

代码和输出文件夹(bin7,bin8,...)放在第一个子目录中。项目文件放在适当命名的子目录中。代码文件和资产链接到单个项目中。 “属性”文件夹中的文件对每个版本都是特殊的(其他GUID,名称,实时图块图标等)。这样我必须点击一次F6,我的当前版本都有XAP。 (只需用一个小脚本收集它们)

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

My WP7+WP8(+"PRO"-version) project structure

答案 2 :(得分:0)

Silverlight是一个基于C#的框架,你在帖子中混合语言和框架,唯一要考虑的是WP7 only support C# 3.0 features,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作为操作系统,我正在讨论考虑到眼前的未来和你正在计划的事情的便利性。微软的一些项目缺乏支持和新闻。

与微软的团队保持联系,讨论这些事情https://twitter.com/#!/wpdev,看看你是否能得到更详细的图片。

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