远程管理和数据捕获:WCF,SQL Sync,SyncFramework,BITS还是其他什么?

时间:2010-01-14 16:47:24

标签: .net wcf networking microsoft-sync-framework

我们在各个客户站点上都有几千台Windows XP客户端计算机,这些计算机都运行一些交互式软件,这些软件用于收集匿名使用数据。客户端计算机使用一些旧的,旧的,旧的客户端 - 服务器软件将数据上传到基于互联网的服务器,将配置信息推送回给他们,并可以要求客户端执行重启等任务。

本质上,我们有以下功能(在伪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从客户端站点向外联系我们的基于互联网的服务器,并且互联网接入很差,客户端带宽相对较差。 VPN不受我们客户群的欢迎。
  3. 我们在这里可以充分利用的技术数量让我们感到不知所措:.NET Remoting,.NET Web服务,WCF,Sync Framework,SQL Pub-Sub,SQL Sync,BITS等。

    我们可以使用一些洞察力来了解哪种技术选择最适合这里的设计。

    有“自然”适合吗?

1 个答案:

答案 0 :(得分:1)

我会选择WCF。您可以轻松地将其配置为使用基本HTTP。需要时,您可以更改任一端的绑定,以便您可以使用不同的协议进行通信。这使它变得灵活。您也可以选择以满足您需求的方式托管WCF服务(IIS,NT服务或您可以提出的任何其他.NET进程)。 此外,WCF易于设置,.NET为您提供了通信所需的所有工具,因此您不必进行尽可能少的管道工作。