Architecture 如何为设计目的可视化通信协议?

Architecture 如何为设计目的可视化通信协议?,architecture,network-programming,protocols,api-design,Architecture,Network Programming,Protocols,Api Design,我正在开发一个通过http api与服务器通信的桌面应用程序 我意识到我在开发过程的一开始就犯了一个错误,现在我必须修改这些应用程序中的整个通信代码(何时发送内容和回复内容,等等) 有没有一种方法可以让我直观地(像思维导图一样)规划两个软件之间的所有通信?我不知道你的应用程序需要做什么,但在为手机和桌面设计了一些应用程序之后,我对这些问题有一些经验 通常有两个主要特征: 推 拉 系统的任何一方都可以实现这些功能,但另一方必须支持这一点。 例如,从本地应用程序推送->服务器只能在应用程序运行时

我正在开发一个通过http api与服务器通信的桌面应用程序

我意识到我在开发过程的一开始就犯了一个错误,现在我必须修改这些应用程序中的整个通信代码(何时发送内容和回复内容,等等)


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

我不知道你的应用程序需要做什么,但在为手机和桌面设计了一些应用程序之后,我对这些问题有一些经验

通常有两个主要特征:

系统的任何一方都可以实现这些功能,但另一方必须支持这一点。 例如,从本地应用程序推送->服务器只能在应用程序运行时工作-前台/后台,其可以访问一些本地资源:互联网连接、cpu、磁盘、ram。为了生成http调用并传递一些数据,我们需要获得internet连接。因此,您可以将其设计为在应用程序启动后运行,或将其添加到操作系统调度程序中。 可以在Mac OS、Linux和Windows上找到OS Scheduler,您可以访问此功能并使用此功能定义即使您的应用程序未启动也会运行的任务

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

另一个问题是考虑到与服务器的连接,您可能会有一些停机时间。因此,您的本地应用程序应始终获得服务器上发送和接收数据的确认,以及所有必要的操作:日志、数据库保存等。只有在获得确认后,您的本地应用程序才能删除消息

拉取功能非常简单,您的本地应用程序在午餐或日程任务中拉取数据。另一种方法是从本地拉服务器,除非您知道如何构建现在可用的实时流套接字代码,并将其应用于meteor框架。但总的来说,大多数情况下没有必要这样做


我希望这将帮助您并产生一些有帮助的想法。

可视化通信协议的一种方便方法是使用UML。具体而言,与此类似:

有很多常见通信协议的序列图

其他通常有用的图表包括:

以及:


创建这样的图表有多种方法。

@Malt:谢谢你澄清我的标题。