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

时间:2016-06-18 08:06:28

标签: architecture network-programming protocols api-design

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

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

是否有一种方法可以在视觉上(如思维导图)规划两个软件之间的所有通信?

2 个答案:

答案 0 :(得分:1)

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

enter image description here

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

其他常用的图​​表是communication diagrams

enter image description here

state diagrams

enter image description here

有许多UML modeling tools用于创建此类图表。

答案 1 :(得分:0)

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

一般来说有两个主要特征:

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

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

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

拉取功能非常简单,您的本地应用程序在午餐或计划任务中提取数据。除了你知道如何构建现在可用的实时流套接字代码并应用于流星框架之外,服务器从本地拉出的另一种方式更加棘手。但总的来说,大部分时间都没有必要这样做。

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