Twisted Django Comet(Orbited):上层和中层的互动

时间:2012-02-29 05:48:10

标签: django architecture twisted

我正在开发一个监控系统(类似于实时网络应用程序)。问题是关于系统架构。 设备连接到服务器并发送有关受控参数状态的信息。 Sever应该将信息保存到数据库并通知Comet服务器。 Comet服务器向用户发送消息,说明新数据可用。用户获取新信息。 关于设备状态分析和保存信息(如果需要,创建警报消息)的最佳方法是什么:

  1. Twisted app自我分析并与DB(adbapi)和Comet服务器(Orbited)进行交互。
  2. Twisted将收到的数据推送到Django(如何推送?),Django分析数据并将数据保存到数据库,并向轨道发送“NEW”标志。
  3. 任何你的建议,如果有更好的方法。
  4. 您可以在下面的图片中找到更多信息: First architecture Second architecture

1 个答案:

答案 0 :(得分:2)

这个问题相当开放。有人可能会在你描述的每个选项上写十几页,而在少数其他方法上再写一次作为奖励。

我会采取另一种方式,而不是那样做。

确保您对自己的要求有充分的了解。考虑哪种方法对于(或团队中的开发人员)来说最容易满足这些要求。采用这种方法,记录整体想法并对您编写的所有内容进行单元测试(最好使用TDD)。

当你完成后,你可能没有最佳的解决方案,但是你将有一个解决方案,并且100个中的99个与最佳解决方案无法区分。

如果我确实考虑了你提出的方法,那么我最常发现的是它们之间并没有太大差别。您的分析只是某些您要调用的Python代码。无论你是使用更接近某些使用Twisted的代码调用它还是更接近某些使用Django的代码,它似乎都没有对结果产生巨大的差异。也许您的部分要求会使一种方法比另一种方法更好。但是,如果您有单元测试并了解您的要求,那么我希望您实际上发现在这两种方法之间切换非常容易。

在您实施某些内容之后,您将对所涉及的权衡有更好的理解,并且您将能够更好地决定一个实现是否会比另一个更好或更差。

请注意,单元测试是这个想法的一个非常重要的部分。没有它们,你不会真正知道你是否已经实现了你的要求,你不会知道你的功能在任何特定的重构之后是否仍然有效,并且重构本身会更难,因为你的单位不会那么明确和孤立就像你在做测试驱动的开发一样。