代码之家  ›  专栏  ›  技术社区  ›  JBRWilkinson

远程管理和数据捕获:wcf、sql sync、syncframework、bits或其他什么?

  •  3
  • JBRWilkinson  · 技术社区  · 15 年前

    我们在不同的客户站点上有几千台Windows XP客户机,它们都运行一些交互式软件,这些软件被用来收集匿名使用数据。客户机使用一些旧的、旧的、旧的客户机服务器软件,这些软件将数据上载到基于Internet的服务器,将配置信息向下推送,并可以要求客户机执行一些任务,如重新启动。

    本质上,我们有以下特性(伪C/idl):

    interface IClientToServer
    {
      void LogUsage(clientMachineName, anonymousUserID, Pair[] usageData, startTime, endTime);
      void LogError(clientMachineName, errorMessage);
      void LogUptime(clientMachineName, bootTime);
      DateTime SyncClock(clientMachineName, timezone);
    }
    
    interface IServerToClient
    {
      void UpdateSettings(Pair[] settings);
      Bitmap GetScreenshot();
      void Reboot();
      string Execute(cmdLine);
    }
    

    …但是这段代码已经到了生命的尽头(由于缺乏技能,它很脆弱,不可维护)。

    我们将要开始一个新的领域,从一个全新的项目开始,用现代的工具、sdk和框架重新编写这个软件。

    我们有一些功能需求,它们是:

    1. 由于可用的工程资源,基于.NET的环境。
    2. 防火墙友好-我们只能通过HTTP/80从客户端站点“向外”与基于Internet的服务器对话,而且Internet访问非常脆弱,客户端带宽相对较差。vpn在我们的客户群中不受欢迎。

    我们被我们可以在这里利用的大量技术所淹没:net远程处理,.net Web服务,wcf,同步框架,sql pub sub,sql sync,bits等等。

    我们可以深入了解哪些技术选择最适合这里的设计。

    有“天然”的吗?

    1 回复  |  直到 15 年前
        1
  •  1
  •   Jonathan van de Veen    15 年前

    我会和WCF一起去。您可以轻松地将其配置为使用基本HTTP。当需要时,您可以更改两端的绑定,这样就可以使用不同的协议进行通信。这使得它很灵活。此外,您还可以选择以满足您需要的方式(IIS、NT服务或您可以想到的任何其他.NET进程)承载WCF服务。 此外,WCF也很容易设置,.NET为您提供了通信所需的所有工具,因此您不必尽可能少地进行管道工程。