【软件结构分析】QQ软件结构分析

前言

QQ是我们熟知的且生活中处处会应用的软件,它主体是C/S架构(客户端—-服务器结构),但是已经被改良,很多界面使用了B/S结构(浏览器—-服务器结构)。查找资料我发现老版的腾讯QQ是标准的C/S结构,而当前的QQ主程序变成了一个框架,而里面很多模块使用了B/S结构,这样就算程序在运行也可以更新,也使占用空间更小对处理器的负荷更小,也使应用更加方便快捷。
关键词:QQ;软件结构分析;C/S架构;B/S架构

一、引言

QQ是我们熟知的且生活中处处会应用的软件,查找资料我们发现QQ运用了C/S架构(客户端—-服务器结构)+部分模块B/S结构(浏览器—-服务器结构)的模式。QQ在架构上已经很成熟了,这种架构使用户的使用感更好,交互性更强,网络通信量低,响应速度快,且利于处理大量数据。更加负荷它移动社交软件的产品定位,给用户带来更好的服务,并在完成移动社交的任务之后还可以添加娱乐模块和生活服务的模块。

二、主要功能模块

QQ的软件功能定位为移动社交,并将娱乐与生活服务相结合的软件。而细细观察QQ的主要功能大体可以分为登录注册,消息,聊天,联系人,动态,侧边栏等几大模块.其中消息模块和聊天模块是核心模块.好友动态及联系人属于次核心模块。
整体模块结构如下图所示:图1—整体模块结构
QQ整体通过的是模块化的设计方式,数据和UI分离保存设计。包含消息,聊天等主要聊天功能的接口封装为独立Target。当有消息进来或发送消息的时候,设计的是会进行相应的UI更新,带给用户直观的使用体验。而查找资料我们也发现为了增强用户体验,消息,聊天,联系人,动态,侧边栏等都采用Native的开发方式,结合热更新技术对UI进行动态调整.游戏,会员,装扮等个性化内容由于变幻多样,无法使用Native的方式,所以qq的设计师采用的是H5的方式。但一般的H5页面都会牺牲部分用户体验,但QQ通过其强大的服务端支持使H5页面也能达到原生的流畅效果。
*消息通知模块:
消息模块的消息类型繁多复杂.消息类型包括普通消息,群消息和系统消息.普通消息仅处理一对一聊天的情况;群消息处理群聊天情形.系统消息则根据用户自定义进行个性化推送.
*聊天界面:
主要是针对多种类型消息的UI处理。这个模块对每种消息类型提供服务支持。内容处理方面,语音信息和图片信息涉及本地缓存,将语音的ID或图片的名称以及语音(图片)内容进行压缩处理并分别作为key和value进行本地化存储。其他信息进行数据库加密缓存起来。时间处理方面,发送消息时间通过毫秒处理,并将发送时间一同发给服务器,服务器以发送的时间为准进行排序,而不以接收到消息时间为准。这样避免多个消息出现顺序错乱的现象。
*动态:
动态页面时时更新,这一部分运用B/S的架构模式,使运行时不需要安装客户端,可以直接运行在Web并可以实现多客户端访问的目的以及交互方式。升级和更新更加方便。
*联系人:
从当前用户输入到用户端的主页面上的信息,传递给服务器进行相应的操作,在用户信息表中做增加删除查找好友的指令,最后再把所需的页面传给用户的用户端主页上,更新现在的信息。

三、整体架构分析:

QQ的主体是C/S架构,但是已经被改良,很多界面使用了B/S结构。查找资料我们发现老版的腾讯QQ是标准的C/S结构,而当前的QQ主程序变成了一个框架,而里面很多模块使用了B/S结构。所以不难看出QQ运用了C/S架构(客户端—-服务器结构)+部分模块B/S结构(浏览器—-服务器结构)的模式。
优点:主体的C/ S体系结构使整个软件的接口和操作可以非常丰富,且快捷方便。同时安全属性可以轻松保证,实现多层认证。同时因为C/S体系结构一般只进行一层交互,所以软件的反应速度会很快。而里面的部分模块使用B/S体系结构,将模块功能实现的核心部分集中到了服务器上,简化了系统的开发、维护和使用。只需要安装一个浏览器和数据库,就可以让浏览器通过Web Server同数据库进行数据交互。不需要再次安装模块使用的客户端,就可以直接运行在Web浏览器中,而由于不需要安装客户端,因此在更新模块的时候就不存在更新多个客户端以及升级服务器等问题。QQ在架构上已经很成熟了,这种架构使用户的使用感更好,交互性更强,网络通信量低,响应速度快,且利于处理大量数据。更加负荷它移动社交软件的产品定位,给用户带来更好的服务,并在完成移动社交的任务之后还可以添加娱乐模块和生活服务的模块。
缺点:但同时因为使用了这种架构,该程序需要安装后才能使用,因此不适合某些未知用户。同时在维护时会带来大量的成本消耗,一次升级,所有客户端应用程序都需要更改,只能花费大量的资源来提醒更新。而且这种构架加上QQ软件的业务范围庞大,如果不进行新能优化,在之后会使用体验将大大下降,无以支撑腾讯庞大的用户诉求。

四、业务范围:

QQ的业务范围与其可以使用的功能息息相关,看上面的主要功能方面我们就可以知道,QQ的主要功能大体可以分为登录注册,消息,聊天,联系人,动态,侧边栏等几大模块。更加侧重于社交,更娱乐化。而其中消息模块和聊天模块是核心模块.好友动态及联系人属于次核心模块。所以也不难总结出QQ的业务范围主要是一个移动社交的软件,但同时QQ的制作团队还在其上添加了娱乐与生活服务的板块,并利用每个模块自身的特性采用了不同的开发方式。
大体可以分为下面7类:
1.即时通讯:QQ、TM、企业QQ、RTX、浏览器、QQ邮箱、Foxmail、QQ影音等;
2.网络媒体:腾讯网、腾讯搜搜等;
3.无线互联网增值:手机QQ、手机腾讯网、超级QQ、手机游戏、手机QQ音乐等;
4.互动娱乐:大型MMOG网游、FPS游戏、Q版MMOG、休闲游戏、桌面游戏、游戏平台等;
5.互联网增值:QQ空间、QQ秀、QQ音乐、各种会员、QQ音乐、QQlive等;
6.电子商务:拍拍网、财付通;
7.广告:各种广告,视频广告和广告推广。

五、用户群体:

QQ更加侧重于社交,更娱乐化。QQ的用户群体我认为主要可以分为三大类:追求潮流的学生群体,上网络视频课的老师和学生,需要经常传输数据的办公室人员,货代公司,设计人员等。由腾讯公布的2020年财报显示,QQ智能终端月活跃账户数为6.935亿,环比增长7.2%疫情的影响下唤醒了5000万的低活跃度用户。在这个里面超过1.2亿用户参与线上教学和学习,在QQ上单日最多有超过2000万人通过群通话、群课堂参与网课直播,有近1400万人通过群作业功能提交线上作业。小学、初中、高中、大学线上课程,线上作业全面落地,带动了线上教学、线上答题、线上培训、线上作业、线上考试的全面功能推进。
QQ这款软件是80后一代人的记忆,而经过这么久之后仍是人们线上交流的移动社交软件里不可或缺的,原因之一是因为微信产品更注重隐私,隐私大于便利。QQ整体更热闹,功能多样化,方便大于隐私,二是因为QQ的功能充足,比微信等工具功能更加多,方便人们的使用。

六、运行环境:

QQ覆盖了Windows、macOS、iPadOS、Android、iOS、Harmony OS、Windows Phone、Linux等多种操作平台。

七、设计模式:

QQ使用的是工厂方法模式。就如上面架构分析里说的,QQ使用的是C/S+B/S的架构,所以和上面的架构相匹配,工厂方法模式在如果想增加功能时,只需做一个实现类,实现Sender接口,同时做一个工厂类,实现Provider接口,无需去改动现成的代码。这样做,拓展性较好,不需要多次更改客户端的软件。使软件更符合开-闭原则,新增一种产品时,只需要增加相应的具体产品类和相应的工厂子类即可。也更加符合单一职责原则每个具体工厂类只负责创建对应的产品。
但同时这种方法添加新模块时,除了增加新产品类外,还要提供与之对应的具体工厂类,系统类的个数将成对增加,在一定程度上增加了系统的复杂度;同时,有更多的类需要编译和运行,会给系统带来一些额外的开销;由于考虑到系统的可扩展性,需要引入抽象层,在客户端代码中均使用抽象层进行定义,增加了系统的抽象性和理解难度,且在实现时可能需要用到DOM、反射等技术,增加了系统的实现难度。虽然保证了工厂方法内的对修改关闭,但对于使用工厂方法的类,如果要更换另外一种产品,仍然需要修改实例化的具体工厂类;一个具体工厂只能创建一种具体产品。

八、参考文献:

【1】QQ需求分析报告 (https://www.docin.com/p-733230562.html)
【2】21种设计模式(https://blog.csdn.net/qq_42349617/article/details/86661852)
【3】QQ架构分析(https://www.jianshu.com/p/877c07baa44e)
【4】工厂方法模式(Factory Method)-最易懂的设计模式解析(https://blog.csdn.net/varyall/article/details/82355964)

总结

以上就是今天要讲的内容,本文仅仅简单叙述了QQ软件结构,有出错或者不严谨的地方欢迎大家给出意见。

### 回答1: 腾讯QQ的软件体系结构可以分为客户端和服务器端两部分。 首先是客户端的部分,QQ客户端是针对终端用户设计的软件,提供了聊天、语音通话、视频通话、文件传输等功能。它的体系结构主要包括UI界面层、业务逻辑层和网络通信层。UI界面层负责用户界面的展示,包括聊天窗口、联系人列表等,可以通过用户的操作来触发相应的事件。业务逻辑层负责处理用户的请求和业务逻辑,比如发送消息、接收消息、好友管理等。网络通信层负责与服务器进行通信,传输数据,保证数据的安全性和稳定性。 其次是服务器端的部分,QQ服务器端也被称为QQ云服务,主要负责用户账号管理、好友关系管理、消息传输等功能。它的体系结构主要包括应用服务器、数据库和网络通信层。应用服务器负责处理用户的请求,根据业务逻辑在数据库中查询或修改数据,并返回相应的结果。数据库用于存储用户的账号信息、好友列表、消息记录等数据。网络通信层负责与客户端进行通信,接收客户端的请求并将请求传递给应用服务器处理。 总结来说,腾讯QQ的软件体系结构分为客户端和服务器端两部分,客户端包括UI界面层、业务逻辑层和网络通信层,服务器端包括应用服务器、数据库和网络通信层。这种体系结构可以保证用户界面的友好性和稳定性,同时实现了用户账号管理、消息传输等核心功能。 ### 回答2: 腾讯QQ是一款集成了多种功能的即时通讯软件,它的软件体系结构经过了长期的发展与演进。QQ的软件体系结构可以分为客户端、服务器和基础设施三个主要部分。 首先是QQ客户端,它是用户使用QQ的界面和工具,提供了即时通讯、语音、视频通话等功能。QQ客户端采用了模块化的设计思路,将各种功能模块分别封装,使得软件的维护和开发更加方便。同时,客户端还有用户界面和用户交互模块,通过友好的界面和便捷的操作使用户使用起来更加愉快。 其次是QQ服务器,它是负责处理各种数据传输和通讯的核心部分。QQ服务器由多个分布式节点组成,通过各个节点之间的负载均衡和数据同步来保证系统的稳定性和高可用性。服务器与客户端之间通过协议进行通信,实现用户之间的即时消息传输和在线状态管理。另外,服务器还具备实时监控和异常处理的功能,以及用户管理和权限控制的策略。 最后是QQ的基础设施,它包括了网络通信、存储系统和安全保障等方面。QQ的网络通信基于互联网,利用TCP/IP协议提供可靠的数据传输。存储系统使用了分布式数据库和缓存技术,以提供高效的数据访问和存储能力。安全保障方面,QQ采用了多层次的安全策略,包括用户身份验证、防止黑客攻击和数据加密等措施,保护用户隐私和数据的安全。 综上所述,腾讯QQ的软件体系结构是一个分布式的系统,它通过客户端、服务器和基础设施三个层次协同工作,提供了稳定、安全和多功能的即时通讯服务。它的设计考虑了模块化和可拓展性,以适应日益增长的用户需求和技术发展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值