





















对于比较大型的软件项目,如何设计其架构是有一些经验可以学习的。而这里所说的“架构”,其实包含了很多个层面,最需要关注的有两个:
运行时架构——这种架构关心如何解决运行效率问题,通常以程序进程图、数据流图为表达方式。在大多数开发团队的架构设计文档中,都会包含运行时架构,说明这是一种非常重要的设计方面。这种架构也会显著的影响软件代码的开发效率和部署效率。本文主要讨论的是这种架构。
逻辑架构——这种架构关心软件代码之间的关系,主要目的是为了提高软件应对需求变更的便利性。人们往往会以类图、模块图来表达这种架构。这种架构设计在需要长期运营和重用性高的项目中,有至关重要的作用。因为软件的可扩展性和可重用度基本是由这个方面的设计决定的。特别是在游戏领域,需求变更的频繁程度,在多个互联网产业领域里可以说是最高的。本文会涉及一部分这种架构的内容,但不是本文的讨论重点。
除了上面两个,软件架构还包括下面的几种角度:
物理架构——关心软件如何部署,以机房、服务器、网络设备为主要描述对象。
数据架构——关心软件涉及的数据结构的设计,对于数据分析挖掘,多系统协作有较大的意义。
开发架构——关心软件开发库之间的关系,以及版本管理、开发工具、编译构建的设计,主要为了提高多人协作开发,以及复杂软件库引用的开发效率。现在流行的集成构建系统就是一种开发架构的理论。
对于“逻辑架构”,有一本经典的书对齐有详细的介绍:《面向模式的软件架构》(POSA),这本书后面好像也有了好几版,加入了一些新的面对互联网和 AI 系统的架构模式总结
关于“逻辑架构”的架构模式,是一种比面向对象的“设计模式”更加高层次的一种抽象经验,所以需要有比较多的面向对象开发经验才能深入理解。为了结合游戏行业的特征进行说明,以前我写过一系列文字:
分层、微核:https://cloud.tencent.com/developer/article/1050595
管道与过滤器、MVC:https://cloud.tencent.com/developer/article/1050597
REST、SOA:https://cloud.tencent.com/developer/article/1050599
选择模式的方法:https://cloud.tencent.com/developer/article/1050603
分层模式是最重要的模式思想,可以说是“模式的模式”,一切后续的架构模式,都基于这个模式的思想。 微核模式在大型可扩展系统中应用很广,最著名的就是 Windows 操作系统,QQ、微信等“超级 APP”也有参考这种思想。 管道与过滤器模式用于各种常见的以处理数据流为核心的系统,譬如编译器、Linux Shell、Web 服务器等,我也见过有用这个模式做游戏的,还是比较方便和经典的“主循环”结构结合 REST 模式属于比较新的模式,对于互联网的互操作有很重要的作用,可惜现在很多“开放平台”和“云”厂商并没有真正的理解 REST 的约束,而是拿它和下面的 SOA 模式搅合到一块了。不过世界本身就是不完美的,虽然丧失了 REST 预定的好处,但是剩下的好处还是足够的。 SOA 模式是现在最流行的所谓“微服务”的理论基础,尽管大多数厂商都会把 SOA 退化成最简单的无状态服务集群用法,但也说明了很多应用场景并不是特别“苛刻”,真正能把 SOA 在高实时性要求的网络游戏服务器领域用起来,才是真的牛逼。
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。