代码之家  ›  专栏  ›  技术社区  ›  Mikko Rantanen

在本地和XBAP上双重部署WPF应用程序

  •  2
  • Mikko Rantanen  · 技术社区  · 17 年前

    1. 如果可能的话,部署方法应该忠实于他们的平台。也就是说:在XBAP中使用有意义的页面,在Windows应用程序中使用有道理的对话框。

    限制

    1. 平台优化。XBAP所需的东西不应该影响Windows客户端,反之亦然。
    2. 部署选项共享尽可能多的代码。这有助于测试和维护。
    3. 运行XBAP应该尽可能简单。证书的先决条件将破坏XBAP的目的。

    我所了解到的是,第一个要求需要两个单独的项目。第二个限制可以通过拥有一个包含所有UI并由两个部署项目引用的用户控件项目来解决。WCF web服务可以绕过XBAP的限制。

    如果采用与上述行类似的解决方案,则第一个限制将需要一些工作,因为Windows客户端已经在完全信任模式下运行,因此可以在没有WCF服务的情况下完成。此外,第三个要求需要一些特定于部署的代码,因此所有UI代码都不能在用户控件项目中。

    全部

    对此感兴趣的原因是,解决方案意味着不需要在WPF Windows应用程序和XBAP之间进行思考,因为这两个应用程序都可以轻松创建,客户端可以选择最适合它们的应用程序。

    3 回复  |  直到 17 年前
        1
  •  3
  •   Glorfindel Doug L.    7 年前

    This scorbs article 解释如何做到这一点,它甚至有一个应用程序模板来实现这一点。

    alt text
    (来源: scorbs.com )

        2
  •  2
  •   Jarek Kardas    16 年前

    at codeplex ) 它有助于以最少的代码更改来定位Wpf、Xbap和Silverlight(额外的工作量取决于您的项目)。

    Prism and XBap Applications

        3
  •  0
  •   Ray Burns    16 年前

    多年来,我尝试了几种方法。对我来说最有效的方法是在一个解决方案中有四个项目:

    • 构建包含业务对象、通信和UI的dll的主要项目。

    在主项目中,既没有页面也没有窗口,只有用户控件和自定义控件。还有一个用于显示UI的服务类。在Windows和XBAP项目中,此类被子类化,以更改显示方式。在每种情况下,子类都会在应用程序启动时安装在静态属性中。其余的代码只是引用这个静态属性并调用它的方法。这些方法执行的服务在Windows和XBAP应用程序之间有所不同。

    我的主应用程序还定义了一个客户端-服务器接口,并将WCF属性应用于其数据对象。所有代码都使用一个静态属性来访问服务。此静态属性(在类构造函数中)初始化为具体实现类的实例,但XBAP项目中的启动代码将其替换为WCF客户端,因此XBAP运行客户端-服务器,Windows应用程序实际上正在进行本地调用。在每种情况下,它都是服务器端的同一个对象。