【问题标题】:Twisted Django Comet(Orbited): the interaction of upper and middle levelTwisted Django Comet(Orbited):上层和中层的交互
【发布时间】:2012-03-18 15:31:15
【问题描述】:

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

  1. Twisted 应用程序自行分析并与 DB(adbapi) 和 Comet 服务器(Orbited)交互。
  2. Twisted 将接收到的数据推送到 Django(如何推送?),Django 分析并将数据保存到 DB 并将“NEW”标志发送到轨道。
  3. 您的任何建议,如果有更好的方法。

您可以在下面的图片中找到更多信息:

【问题讨论】:

    标签: django architecture twisted


    【解决方案1】:

    这个问题是相当开放的。有人可能会在您描述的每个选项上写上十几页,而作为奖励,在少数其他方法上也写了这么多。

    我不会那样做,而是另辟蹊径。

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

    当你完成后,你可能没有最佳解决方案,但你会有一个解决方案,而且 100 次中有 99 次与最佳没有区别。

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

    在您实施某项措施后,您将更好地了解所涉及的权衡取舍,并且您将能够更好地决定一种实施方式是比另一种更好还是更差。

    p>

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

    【讨论】:

    • 感谢您如此完整的回答。我问这个问题是因为我认为有一个完善的解决方案(比如最好只使用扭曲的应用程序进行通信,而使用其他应用程序进行数据库交互,反之亦然)。您的问题告诉我,没有“唯一正确”的方法。
    猜你喜欢
    • 2011-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-08
    • 2011-08-25
    • 1970-01-01
    • 2013-04-07
    相关资源
    最近更新 更多