.net 客户端服务器应用程序:从本地服务器或版本化界面自动更新?

.net 客户端服务器应用程序:从本地服务器或版本化界面自动更新?,.net,wcf,auto-update,.net,Wcf,Auto Update,我有一个客户机/服务器应用程序,我正在寻找一些关于如何处理两者之间接口的建议。服务器/客户端将通过LAN(可能是WAN,但肯定是客户管理的,而不是集中式服务器)部署。我正在考虑以下两种选择: 客户端和服务器可以是不同的版本。这样,它们之间的WCF接口就必须支持版本控制——如果一个已经更新,而另一个没有更新,应用程序仍然需要工作 服务器将更新推送到客户端,客户端在通信之前自动安装更新。不需要版本控制,因为服务器不会与过期的客户端通信 客户端是一个以LocalSystem运行的窗口服务,因此自动更新

我有一个客户机/服务器应用程序,我正在寻找一些关于如何处理两者之间接口的建议。服务器/客户端将通过LAN(可能是WAN,但肯定是客户管理的,而不是集中式服务器)部署。我正在考虑以下两种选择:

  • 客户端和服务器可以是不同的版本。这样,它们之间的WCF接口就必须支持版本控制——如果一个已经更新,而另一个没有更新,应用程序仍然需要工作
  • 服务器将更新推送到客户端,客户端在通信之前自动安装更新。不需要版本控制,因为服务器不会与过期的客户端通信

  • 客户端是一个以LocalSystem运行的窗口服务,因此自动更新不涉及权限问题#2看起来更干净,因为没有接口版本控制来跟踪,但我恐怕我错过了一个非常明显的理由不这样做,而支持#1。客户端应用程序很小,不到500K,因此推送更新的带宽(我不希望频繁)也不是什么问题。

    选择自动更新。版本控制带来了一种复杂性,在这种情况下,您完全可以不用它。

    选择自动更新。版本控制带来了一种复杂性,在这种情况下,您完全可以不用它。

    我可能建议将两者结合使用。首先,为您希望使用的WCF LIB版本设置基线,其中包括System.Serialization,因为它包括DataContract属性

    在引用中明确定义这些版本,以便在升级.NET版本时,它将继续使用旧版本而不是新版本。然后,您应该可以自由升级所有其他引用库,而不必担心升级会影响您的界面


    至于实现第二个选项,我几乎建议在客户机上设置第二个服务,该服务只处理从服务器获取升级信息。如果有必要升级WCF LIB,则可以推送这些更新(但是,这种情况可能不会经常发生)。

    我可能建议将两者结合使用。首先,为您希望使用的WCF LIB版本设置基线,其中包括System.Serialization,因为它包括DataContract属性

    在引用中明确定义这些版本,以便在升级.NET版本时,它将继续使用旧版本而不是新版本。然后,您应该可以自由升级所有其他引用库,而不必担心升级会影响您的界面

    至于实现第二个选项,我几乎建议在客户机上设置第二个服务,该服务只处理从服务器获取升级信息。如果有必要升级WCF库,那么可以推送这些更新(但是,这种情况可能不会经常发生)