随着技术的不断进步,正逐渐步入一个无线连接无处不在的时代。智能手机、平板电脑、智能手表等设备层出不穷,它们通过无线网络与世界相连。这种趋势不仅改变了生活方式,也对应用开发者提出了新的挑战。
据AT&T的数据显示,2015年的前五周内,其网络传输的数据量就相当于2010年全年的数据量。这一惊人的增长速度,凸显了无线网络在现代社会中的重要性。然而,随着越来越多的用户通过智能手机等设备消费数据,上传和下载照片和视频,无线网络的拥堵问题也日益凸显。
影响无线网络的因素有很多,包括但不限于:
- 智能手机用户数量的增加
- 频谱、基站、天线和家庭用户的增加
- 移动运营商的带宽限制
- 服务器与目标设备之间的通信延迟
考虑到这些因素,开发者不能再像以前那样开发应用程序和服务,而不考虑网络相关问题。因为这些因素将极大地影响用户体验。用户体验(UX)不仅仅与用户界面(UI)有关,它关乎用户在使用应用程序时的整体体验。
为了开发出能够支持数百万设备的出色应用程序,需要考虑规模化的问题。以下是一些实现规模化的方法:
- 构建几乎不被触碰的数据库,避免让每个设备直接连接和操作数据库。相反,应该开发多层应用程序,将设备与数据库隔离,从而减轻数据库的压力,同时实现服务的扩展。
- 在普通硬件上放置数千台Web服务器,通过扩展应用程序来实现规模化。
- 复制数据。
- 水平扩展。
- 在边缘使用NoSQL数据库。
- 使用小表共享数据,以实现快速访问。
- 在每个层级放置负载均衡。
- 使用分布式缓存存储数百TB的数据(例如,Facebook使用MemCache,并拥有约300TB的数据在缓存中)。
- 使用预编译元素,因为编译过程较慢(例如,Facebook使用PHP,因为它认为这对他们来说非常高效,但在编译方面表现不佳,因此他们组建了一个团队来创建一个PHP到C++的编译器,以提高性能)。
- 使用MapReduce模式并行分析“大数据”。
一些应用程序,如Bing、Facebook、Twitter、Google、Zynga等,已经在这方面取得了进展。
为了实现这种规模,可以使用Windows Azure。但是,应该如何充分利用Windows Azure为连接设备提供最佳服务呢?
- 水平扩展。在Windows Azure中,这很容易实现,因为可以定义特定角色的实例数量。
- SQL Azure不应该被设备直接访问。相反,应该使用:
- 对于出站数据:
- 工作角色将SQL Azure的出站数据复制到NoSQL Azure表存储。
- 对于入站数据:
- 工作角色将Azure队列中的入站数据移动到SQL Azure。
- 使用分布式缓存,Windows Azure中由AppFabric缓存处理。
- 提供无线高效的服务。例如,使用Web角色公开REST + JSON WCF服务非常有趣,因为它节省了消息大小,从而节省了时间和金钱。
- 同样重要的是让设备缓存数据并离线工作。并非所有内容都需要实时在线,也不要过度依赖无线连接。
希望这些信息能帮助更好地思考连接设备应用程序。
在构建应用程序时,还需要考虑如何优化数据传输和处理,以适应无线网络的限制。例如,可以:
- 优化数据传输协议,减少数据包的大小。
- 在设备上实现数据缓存,以便在没有网络连接时也能使用应用程序。
- 使用压缩技术来减少数据传输量。
- 设计应用程序以支持断点续传,这样即使在网络连接不稳定的情况下,用户也可以继续使用应用程序。
在本文中,探讨了无线网络的现状,以及它如何影响移动设备应用开发。讨论了网络拥堵的问题,以及如何通过规模化来解决这些问题。还讨论了如何使用Windows Azure来实现应用程序的规模化,并提供了一些优化无线网络应用的建议。