背景

我有一个商业想法,其中一个组件涉及一个客户端,该客户端将由数千名用户通过网页下载和安装。

申请要求

版本1:

申请必须:

  • 监控用户桌面上的互联网使用情况,并监控以下区域:

    • 使用的浏览器,
    • 使用小时数
    • 访问的站点
    • 考虑哪个浏览器选项卡处于“活动”状态
  • 生成此使用情况的报告(在 CSV 或其他易于导出的格式)

  • 用户需要轻松监控它(例如,在 Windows 中,通过系统托盘中的图标允许用户暂停或停止程序)。
  • 可通过自动更新轻松升级。
  • 在内存使用方面需要轻量级。
  • 需要轻松快速地安装,
    • 必须能够完全卸载。
  • 不会对浏览器或用户的系统性能体验产生不利影响
对于版本 2:
  • 能够呈现图形输出(饼图和条形图)
  • 是多平台的(版本 1 仅针对 Windows)
  • 集成在线组件

问题

考虑到这些要求,您会推荐什么技术实现,以及您会推荐什么平台/语言架构?关键方面是功能和广泛定义的对用户的低影响。预计到达时间或成本不太重要。

有帮助吗?

解决方案

去年我构建了与此非常相似的东西。我用的是C#。最初它利用了一些 3.5 框架,但由于安装大小限制,我不得不将其缩减回 2.0 框架。目前它正在监控大约 13,000 台机器。每分钟收集并发送回报表服务器约 3MB 的数据。

客户端机器范围从具有 256MB RAM、运行 XP 的 Pentium 4 机器到双核 2GB 机器。

我构建的应用程序不会被最终用户触及,因此它作为 Windows 服务和 IE 浏览器帮助程序对象插件的组合运行。BHO 对于准确捕获浏览器中发生的情况是必要的。

唯一真正的挑战是让它在 XP 和 Vista(所有服务包级别)以及 IE 6 和 7 下工作。XP 和 Vista 有不同的安全隐患需要考虑;IE 6和7也有不同的访问模型。

最后,我们决定使用 Firefox 或其他浏览器,因为客户根本不关心它。

更新

Firefox 仅支持 javascript、c++ 和 xul 来编码扩展;使用 C# 将是一个完整的 PITA。如果 javascript 能满足我的需要,我可能会尝试它,因为它更容易。

就 Chrome 而言,他们最近才开始支持扩展(2009年3月19日)。您必须更改快捷方式启动属性才能运行它们。因此,我可能会跳过该浏览器,直到它成熟一点。我想明年插件的构建方式将会发生很多变化。

关于每分钟的数据量,这是一个汇总值。每个客户每十五分钟左右才登记一次;或在断开连接时重新连接到网络。所以个人流量很低,不会影响用户体验。

防火墙

防火墙对我们来说并不重要的原因是数据使用 Web 服务通过端口 80 传输回我们的报告服务器。如果 80 被阻止,那么他们无论如何都无法浏览,所以没有什么可收集的......就带宽而言,限制您收集和广播的内容。具有长描述性属性/值名称的 XML 不适合您。

其他提示

听起来 C# 会满足您的需求,只要它仅限于 Windows 客户端。

Qt 和 C++ 非常适合跨平台客户端——尤其是。如果他们需要以垃圾收集语言中没有解决方案的方式“节省内存”(即,基本上所有其他人;-) 通常是。

我们需要更多信息:

开发时间是一个问题吗?使用C#,可以快速开发这样的应用程序;但它不一定具有与 C++ 相同的低级性能。您可以使用 C++ 开发某些部分(内存密集型位),而使用 C# 开发其他部分,但是您的客户必须安装 .NET 框架;更不用说他们可以相当轻松地对 C# 部分进行逆向工程。

有一个项目三角形,我们需要知道哪两个对您最重要:

alt text

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top