扭曲的Django彗星(轨道):中高层的相互作用

扭曲的Django彗星(轨道):中高层的相互作用,django,architecture,twisted,Django,Architecture,Twisted,我正在开发一个监控系统(类似于实时web应用程序)。问题是关于系统架构。 设备连接到服务器并发送有关受控参数状态的信息。服务器应将信息保存到数据库并通知Comet服务器。Comet服务器向用户发送消息,表示新数据可用。用户获得新信息。 分析和保存有关设备状态的信息(如果需要,创建报警消息)的最佳方法是什么: Twisted应用程序,它自行分析并与DB(adbapi)和Comet服务器(Orbited)交互 Twisted将接收到的数据推送到Django(如何推?),Django分析并将数据保存到

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

  • Twisted应用程序,它自行分析并与DB(adbapi)和Comet服务器(Orbited)交互
  • Twisted将接收到的数据推送到Django(如何推?),Django分析并将数据保存到DB,并将“新”标志发送到orbited
  • 如果有更好的方法,你有什么建议吗
  • 您可以在以下图片中找到更多信息:

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

    我不会那样做,而是走另一条路

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

    当你完成时,你可能没有最优的解决方案,但你会有一个解决方案,100次中有99次是无法区分的

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

    在您实现了一些东西之后,您将对所涉及的权衡有更好的理解,并且您将能够更好地决定一个实现是比另一个更好还是更差


    请注意,单元测试是这个想法中非常重要的一部分。如果没有它们,你就不会真正知道你是否已经实现了你的需求,也不会知道你的功能在任何特定的重构之后是否仍然有效,重构本身将更加困难,因为您的单元将不会像您进行测试驱动开发时那样定义良好、相互隔离。

    感谢您提供了如此完整的答案。我问这个问题是因为我认为有一个完善的解决方案(比如最好只使用twisted应用程序进行通信,使用其他应用程序进行db交互,反之亦然)。你的问题告诉我没有“唯一正确”的方法。