none
我的旧的app如何迁移到Windows 8 Metro风格? RRS feed

  • 问题

  • 我的旧的app,可以运行于WinXP~Win7上。它分为两个部分,第一部分运行于Windows Service层,第二部分以普通权限的应用层运行,第一部分主要执行一些高权限的任务,如整理磁盘,清理垃圾文件。第二部分是于用户交互以及任务的下发和反馈。两个部分之间通过一个命名管道交换数据。我的第二部分以一个COM组件实现业务逻辑,上面是其他语言编写的界面逻辑。现在,我打算将其迁移到Win8 Metro风格上,我原本的打算是把UI逻辑使用Metro 风格编写,然后下面调用COM组件实现逻辑,并和第一部分进行通讯。但我测试后发现几个问题:

    1)Metro App不支持 Native C++ 写的COM组件调用,因而我的想法破灭了。

    2)其实我的app跟杀毒软件的架构比较类似,但我迄今没有发现一款采用Metro APP风格的工具软件,是不是无法支持这个应用场景?

    基于我的现状和目标,请专家给予指导。非常感谢。

    2012年3月18日 7:44

答案

  • 我这边只能大概给你点思路,不很很精确地说行还是不行。 因为这个要在实际操作中按照不同的模块分割来讨论的。

    从整体来看,你的Windows Service层是可以迁移的,但仅限于普通权限的功能。 而且这样你还需要将你公开出来的API的设计转换成WinRT的API模式。 只要API使用了WinRT形式,尽量将消耗多的功能使用异步操作封装,那么你就可以用Metro UI来调用了。(Metro无法访问Windows Service,所以你要仔细看下下面的文档,去考虑什么功能你是能做到的:http://msdn.microsoft.com/en-us/library/windows/apps/hh464945.aspx )

    还有一种方法是考虑WCF, 但是Metro中他不允许访问localhost的WCF Service, 所以你需要的是远程部署一个服务,然后根据 下面文章提到的可以做的功能来设计你的Metro App:http://blogs.msdn.com/b/piyushjo/archive/2011/10/19/wcf-for-metro-apps-supported-functionality.aspx  当然,一些权限高的功能还是不能实现的。  Metro沙箱不运行执行类似 整理磁盘,清理垃圾文件 操作。


    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us


    2012年3月19日 8:55
    版主

全部回复

  • 我这边只能大概给你点思路,不很很精确地说行还是不行。 因为这个要在实际操作中按照不同的模块分割来讨论的。

    从整体来看,你的Windows Service层是可以迁移的,但仅限于普通权限的功能。 而且这样你还需要将你公开出来的API的设计转换成WinRT的API模式。 只要API使用了WinRT形式,尽量将消耗多的功能使用异步操作封装,那么你就可以用Metro UI来调用了。(Metro无法访问Windows Service,所以你要仔细看下下面的文档,去考虑什么功能你是能做到的:http://msdn.microsoft.com/en-us/library/windows/apps/hh464945.aspx )

    还有一种方法是考虑WCF, 但是Metro中他不允许访问localhost的WCF Service, 所以你需要的是远程部署一个服务,然后根据 下面文章提到的可以做的功能来设计你的Metro App:http://blogs.msdn.com/b/piyushjo/archive/2011/10/19/wcf-for-metro-apps-supported-functionality.aspx  当然,一些权限高的功能还是不能实现的。  Metro沙箱不运行执行类似 整理磁盘,清理垃圾文件 操作。


    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us


    2012年3月19日 8:55
    版主
  • 谢谢,总的来说,我觉得我的项目只能做成Desktop模式了,增加对触摸的支持即可。
    2012年3月23日 5:01