然而 , 网络本身对于应用程序的编写还是有极大影响的 , 从软件设计到代码编写都有深远的影响 , 以下是一些显著的变化点 。
- 网络编程最基础的模式是异步编程 , 以及对异常的处理和恢复 。 TCP 和 UDP 不仅是两个传输协议 , 更是两种编程思想 。 它们指导我们如何设计和编写服务器程序和客户程序 。
- 对于在网络环境下运行的程序 , 我们编写的可能只是半个程序 。 另外半个程序可能在完全不熟识的人手里进行开发 , 可能在地球的另一侧 , 甚至不在地球上 。 我们需要遵守网络双方的约定、遵守对方的规范 , 或者要有足够的灵活性来应对可能的意外 。
- 网络功能容易遭受性能和体验的问题 。 网络往往是一个共享资源 , 所以它的不稳定通常是可以预料的 , 编写网络功能的时候若处理得好 , 就有可能化解掉不稳定的因素;若处理不恰当 , 就会造成性能极差 , 乃至体验极差 , 甚至进程死锁或崩溃等 。 从这个角度而言 , 网络编程总是有优化改进的空间 。
- 网络的不稳定带来了不确定性 , 导致网络程序的诊断变得困难 。 一方面 , 程序的网络环境可能会有抖动 , 导致网络行为可能无法重现 , 从而增加了诊断难度;另一方面 , 网络程序可能运行在物理上不可达的环境( 比如云主机 )中 , 这要求程序员对网络环境的理解要更加全面 , 否则难以从现象或错误代码来分析问题的根源 。
文章图片
计算机网络经历了大量的技术择优和淘汰 , 今天我们享受到的稳定网络和良好的网络应用程序是历史沉淀的结果 。 硬件上 , 我们的网络越来越稳定 , 无线网络的基站(或访问点)之间可以做到无缝切换;软件上 , 操作系统解决了大量的网络复杂性问题 , 留给应用程序的是相对容易实现的处理逻辑 , 比如方便处理的 HTTP 协议、无状态的远程请求、自动的离线缓存等等 。 在移动数据网络的早期 , 很多应用程序一遇到网络不稳定 , 就出现白屏、不响应 , 为了改善用户体验 , 应用开发人员需要编写大量的代码 。 随着移动数据网络的普及和稳定 , 以及移动操作系统的成熟 , 这一类应用代码已经大大减少了 。
特别声明:本站内容均来自网友提供或互联网,仅供参考,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
