Windows 8 metro,移动和桌面应用程序之间的代码共享

时间:2012-09-03 14:14:24

标签: c# windows-8 microsoft-metro

我正在考虑将应用程序移植到Windows 8 metro。主引擎是一个C++库,所以我要做的就是创建GUI(然后将其挂钩到C++引擎)。

我想知道如果创建一个metro应用程序,我是否可以使用相同的代码并为桌面构建它(Windows 7等)?如果有额外的工作多少?

此外,未来我将研究创建一个Windows 8移动应用程序,我能够共享任何城域GUI代码,还是最好从头开始?

该项目规模庞大,因此代码重用是一个很大的积极因素。

1 个答案:

答案 0 :(得分:2)

每个平台的UI层都完全不同;然而,他们如何接近是有共同之处的。例如,C#/ VB / XAML可以在Phone,Windows,Desktop(甚至web:Silverlight)中使用,但是在特定功能,支持的属性等方面存在差异,因此难以“重新编译”

我认为你最好的选择是采用差异被隔离的模式; MVVM is a great candidate用于跨平台的GUI应用程序。它需要为每个目标使用不同的UI层 - 但是您仍然希望它能够利用形状因子,用户期望等。在每种情况下,代码可能是C#/ VB XAML,但可能会重复使用多个构造和资产(即使通过复制粘贴)。在幕后,“管道”可能完全相同,无论是内部业务对象层还是云中的Web服务。

就后端而言,还存在平台差异,Portable Class Library可以帮助缓解未来的努力。展望未来,像Windows 8 Shared Core这样的公告肯定有望让这样的工作变得更容易。

有许多帖子和指南可以在WPF和Silverlight等平台上重复使用,而且许多主题都是类似的,但细节可能并不特定于您的目标平台。以下是其中一些可以帮助您构建方法的方法,同样不再关注“Silverlight”的使用,而是关注文章中提到的技术和关注点。

Sharing Code Between Silverlight and WPF
Reusing your existing Silverlight components with Windows Phone 7