架构读后感
今天建民老师在课上给我们推荐了几篇关于架构的博客,读后我收获了许多
首先什么是架构呢,我个人理解是复杂问题简单化,简单问题流程化。将一个整体切分成不同的部分,各个部分之间相互联系,共同组成整体,并且由不同的人担任不同的部分分工,提高整个系统效率,完成这个整体所需要的所有活动。
其次,为什么会产生架构,因为每个人擅长的东西不同,而且个人精力有限,这样就导致了分工的产生。有了分工,就自然而然的有了架构。
架构是为了解决什么问题,架构解决的是人的问题,让每个人各司其职,只专注于自己擅长的事,提高工作效率
以一个家庭为例子,在mvc模式中,父母和孩子共同完成家庭中的各项任务。爸爸负责家庭的经济支出和决策,是controller层,儿子和妈妈进行大的决策需要和爸爸商量;妈妈负责家庭的日常生活和家务管理,是view层,儿子是model层负责学习。家人之间通过控制器进行协调和沟通,确保家庭的运作顺畅。家庭成员的角色和职责在MVC架构中明确分工,可以更好地管理家庭中的各项任务和活动,提高家庭的效率和协作能力。
根据网上查阅的资料,架构是指在设计和构建复杂系统时所采用的整体结构和组织方式,旨在确保系统的稳定性、可靠性、可维护性和可扩展性。架构不仅仅是系统的外观和组织结构,更是系统内部各个组件之间的关系、交互方式和行为规则的总和。在软件开发领域,架构是指软件系统的整体设计方案,包括系统的结构、组件、模块、接口、数据流等方面的规划和设计。
架构在软件开发中扮演着至关重要的角色,它直接影响着软件系统的质量、性能和可维护性。良好的架构能够确保系统的稳定性和可靠性,减少系统出错的可能性,提高系统的可用性和健壮性。合理的架构能够降低系统的维护成本,使软件的修改和更新更加容易和快捷。良好的架构能够方便系统的扩展和升级,满足系统在未来发展中的需求变化。优秀的架构能够提高系统的性能,减少资源消耗,提高系统的响应速度和吞吐量。合理的架构能够加强系统的安全性,保护系统免受恶意攻击和数据泄露。
在设计架构时,通常会遵循一些基本原则,以确保系统的良好设计和实现:将系统拆分为独立的模块,每个模块负责特定的功能,降低系统的复杂度,提高系统的可维护性。模块之间的依赖关系应该尽量减少,模块之间的通信应该简单明了,降低模块之间的耦合度,提高系统的灵活性。模块内部的元素之间应该紧密相关,模块的功能应该单一明确,提高模块的内聚性,降低模块的复杂度。将系统划分为不同的层次,每一层负责特定的功能,降低系统的耦合度,提高系统的可维护性和可扩展性。:尽量设计可重用的组件和模块,减少重复开发,提高开发效率和系统的稳定性。
每种架构模式都有其适用的场景和优势:Model-View-Controller模式是一种常见的架构模式,将系统分为数据模型、视图和控制器三个部分,实现了数据、界面和业务逻辑的分离,提高了系统的可维护性和可扩展性。微服务架构是一种将系统拆分为多个小型、独立部署的服务的架构模式,每个服务负责特定的功能,通过轻量级通信机制进行协作,提高系统的灵活性和可伸缩性。Representational State Transfer(REST)是一种设计风格,通过资源的表述和状态转移实现系统的架构,提供了一种简单、轻量级、可扩展的架构方式。事件驱动架构通过事件的发布和订阅机制实现系统的解耦和灵活性,每个组件之间通过事件进行通信,提高系统的可扩展性和响应速度。
在进行架构设计时,通常会遵循以下步骤:深入了解系统的需求和功能,确定系统的功能和性能需求。:根据需求分析的结果,设计系统的整体结构和组织方式,确定系统的模块、组件、接口等。对系统进行模块化设计,确定各个模块的功能和职责,设计模块之间的交互方式。设计系统的接口和通信方式,确保模块之间的良好协作和通信。对设计的架构进行评估和优化,确保系统的性能、可维护性和可扩展性符合要求。根据设计的架构方案进行系统实施和测试,确保系统按照设计要求正常运行。
总之,架构在软件开发中扮演着至关重要的角色,它不仅仅是系统的外部结构和组织方式,更是系统内部各个组件之间的关系和规则的总和。良好的架构能够提高系统的稳定性、可维护性、可扩展性和性能,使软件系统更加健壮、灵活和高效。因此,在软件开发过程中,合理设计和实施架构是至关重要的一环。