网页使用JavaScript语言。在JavaScript中,网络通讯可以这样写:
如果点击某按钮:
激活后台的某PHP文件。
给该PHP文件传递某参数。
如果该PHP文件回复消息:设消息为X,执行函数F(X)。
桌面软件一般使用C++或C#。在C++或C#中,如果想要制作一个聊天室或者论坛、要跟服务器通讯,那么需要这样写:
如果点击某按钮:
给服务器发送某消息。
这带来了一个问题:服务器无法分辨该如何处理这个消息。
比如,如果用户在输入框输入“测试”二字,点击发送按钮,那么JavaScript可以直接给后台发送【测试】,而C++/C#需要给后台发送【输入:测试】。【输入】二字用来告诉后台【要把后面的文本视为用户输入的信息来处理】,从而将这条消息与其他发给后台的消息区分开来;其他消息不可以再以【输入】为标题。
但这带来了一个更深的问题:应该先写前台、还是先写后台?
如果先写前台,那么不确定应该以什么样的格式给后台发送消息。
如果先写后台,那么不确定一共需要哪些功能。
这个问题的答案是:既不先写前台,也不先写后台。而是先制定协议。制定协议,就是明确【通讯中一共有哪些类型的消息?这些消息的标题都是什么?内容都是什么格式的?】
比如,一个聊天室需要如下类型的消息:
【标题】 | 【发出与接收】 | 【效果】 |
---|---|---|
输入 | 客户端发给服务器 | 用户发送聊天消息 |
下载 | 客户端发给服务器 | 用户要下载文件 |
请求消息记录 | 客户端发给服务器 | 用户点击了某一好友,要显示消息记录 |
消息记录 | 服务器发给客户端 | 客户端显示消息记录 |
好友列表 | 服务器发给客户端 | 客户端显示好友列表 |
还有添加好友、删除好友、建群加群等。每个功能都对应一种通讯消息类型。这些都需要先设计好。
设计完毕之后,再写前台后台的代码。
新手常犯的错误就是直接写代码,觉得可以边写边设计。的确,一般功能可以边写边设计,但当你遇到难以边写边设计的功能时(比如网络通讯),你不要觉得【编程好难】,不要想着【我是该放弃?还是该坚持?】,而要去先设计、再书写。你会发现编程并不难。
先设计,再书写。这是一个很好的方法,一个很好的习惯。