如何可视化用于设计目的的通信协议?

How to visualize a communication protocol for design purposes?

我正在开发一个通过 http api.

与服务器通信的桌面应用程序

我意识到我在开发过程的开始犯了一个错误,现在我必须修改那些应用程序中的整个通信代码(什么时候发送什么以及回复什么等等)。

是否有一种方法可以让我直观地(如思维导图)规划两个软件之间的所有通信?

我不明白你的应用程序需要做什么,但在为移动和桌面设计了几个应用程序后,我对这些问题有了一些经验。

大体上有两个主要特点:

  • 推送

您系统的任何一方都可以实现这些功能,但另一方必须支持此功能。 例如,从本地应用程序推送 -> 服务器只能在应用程序处于 运行ning - 前端/后台时才能工作,并且它可以访问一些本地资源:互联网连接、cpu、磁盘、内存。我们需要获得互联网连接才能生成 http 调用并传递一些数据。因此您可以将此设计为 运行 一旦应用程序启动或将它们添加到 OS 调度程序。 OS 调度程序可以在 Mac OS 、 Linux 、 Windows 上找到,您可以访问此功能并使用它来定义任务运行 即使您的应用没有午餐。

如果您的本地应用程序可以 运行 没有互联网连接,例如在没有 3G 网络或 Wifi 的区域运行手机游戏。您可以将您的应用程序设计为将数据本地存储在磁盘/Ram 上,并在连接到互联网后将其发送到服务器。

另一个问题是考虑与服务器的连接,您可能会有一些停机时间。所以你的本地应用程序应该总是得到确认数据在服务器上发送和接收并且所有必要的操作都发生了:日志,数据库保存和etc.only在得到确认后你的本地应用程序可以删除消息。

拉取功能非常简单,您的本地应用程序在午餐时间或计划任务中拉取数据。服务器从本地拉取的另一种方法更加棘手,除非您知道如何构建现在可用的实时流套接字代码并应用于例如流星框架。但一般来说,大多数时候不需要这样做。

我希望这对您有所帮助,并产生一些有用的想法。

可视化通信协议的一种便捷方式是使用 UML。具体来说,sequence diagrams类似于:

This site有不少常用通信协议的时序图

其他经常有用的图表是 communication diagrams:

state diagrams:

创建此类图表的方式多种多样UML modeling tools