热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

探寻背后的机制化繁为简:网站程序升级不过是文件同步

苹果落到地上而不是天上,这是重力的作用;树叶从树枝上飘落的样子谁也无法预测,这是混沌过程;热恋中的恋人总是难分难舍ÿ
  • 苹果落到地上而不是天上,这是重力的作用;
  • 树叶从树枝上飘落的样子谁也无法预测,这是混沌过程;
  • 热恋中的恋人总是难分难舍,这是荷尔蒙等激素作用于下丘脑的结果;
  • 。。。 。。。


    诸如这些“复杂”的问题,背后总有一个“机制”在作用,找到了这个机制,我们就能化繁为简,解决复杂的问题。

    在软件的生命周期中,维护是一个很重要的过程,我们需要不断的为软件升级,以解决不断变化的新问题,如何升级,这是我们设计系统的时候必须考虑的问题。网站程序也需要不断的升级,不过相对而言比较简单,但工作量不算小,我们看看具体的工作场景:
1,手工使用FTP升级
    确认那些网页文件刚刚修改过,然后将这些文件一个个的使用FTP工具上传到FTP服务器上。该过程大部分都是使用手工完成,靠人来识别那些是要上传得文件,但这种方式仅适用于升级不是很频繁,文件不是很多的情况。

2,采用专用的版本管理软件
    详细登记要升级的每个文件的基本信息和版本信息,通过版本来确定当前文件是否需要升级。由于要升级的文件可能比较多,工作量相当大,而且需要一套严格的版本管理流程,一旦版本管理出现问题就会引起严重的后果。借助于专用的版本管理软件,能够减轻版本管理的问题,但仍然有大量的文件信息需要录入。这种方式适用于需要严格进行版本管理的情况,通常情况下会为每一个版本准备一个“升级包”,将这个文件包上传到服务器后,再由人或者程序解压缩到网站目录。

    对于场景1,我们可以设计一个自动识别新修改文件的程序,将文件自动上传到FTP服务器,从而进一步减少工作量,对于场景2,由于强化了“版本管理”过程,似乎很难找到更优的解决方案。

 

程序升级为什么要使用版本管理?

  • 方便我们知道当前开发的是哪个时候,哪个客户的的程序;
  • 让客户知道当前软件的版本信息,了解新版本软件的新功能,从而决定是否购买我们的新软件;
  • 让老板知道,当前发布的软件有那些功能升级和那些bug被修复了;
  • 出于商业化考虑,推出XX个人版,XX企业版,XX旗舰版,面向不同的客户进行营销;
  • 。。。 。。。


    有很多理由然我们需要有“版本”这个东西,存在既是合理的,我们不用再去深究“版本”和“版本管理”这个词语,看看它们背后的机制是什么:
================推理过程:======================
因为
1,版本代表了新的功能,新的程序;
2,功能体现在对应的程序上;
3,程序就是一个个程序文件;

所以
版本对应一个个文件;

推论1:
不同的版本 区分 不同的文件;

推论2:
发布新版本(升级) 等于 发布新(增加或者新修改)文件;

推论3:
程序升级 等于 文件同步
说明:就是将客户方的程序升级为我们这边一样的程序,也就是双方程序文件的同步。

================================================


    大功告成,我们得到了“网站程序升级”也就是“文件同步”的过程,或者说它背后的机制,就是“文件同步”。
有了“文件同步”这个机制,我们明白“FTP”,仅仅是文件同步的工具而已,“版本管理”,也不过是文件同步的手段(措施)而已。
    有了这个简单的机制,我们还需要复杂的版本管理吗?当然对于市场,对于客户或者老板却是需求,而对于我们技术人员,我们不要在被它的表象蒙蔽了,“版本”这个东西不是我需要的,一边去吧!

    在WXXX项目中,第一次采用了“文件同步”的理念来做网站程序的升级,开发人员将测试通过的程序,重新编译一次,然后全部复制到一个发布服务器上,再运行一个文件同步发送端程序,将新的文件打包,使用邮件发送到客户方的邮箱中,客户方的文件同步接收端程序检查到新文件后,接收并解压缩到网站目录,结束文件同步操作,完成最终的“网站程序升级”功能。
    整个过程,仅需要将编译后的文件不管三七二十一复制到发布服务器即可,其它操作都由程序自动完成。文件的发送过程可以采用邮件,也可以采用FTP或者其它你喜欢的方式。

    有了“文件同步”这个机制,呈现升级是不是非常简单了呢?

    探寻背后的机制,才是解决复杂问题的有效手段!



推荐阅读
  • 优化联通光猫DNS服务器设置
    本文详细介绍了如何为联通光猫配置DNS服务器地址,以提高网络解析效率和访问体验。通过智能线路解析功能,域名解析可以根据访问者的IP来源和类型进行差异化处理,从而实现更优的网络性能。 ... [详细]
  • 本文深入探讨了Linux系统中网卡绑定(bonding)的七种工作模式。网卡绑定技术通过将多个物理网卡组合成一个逻辑网卡,实现网络冗余、带宽聚合和负载均衡,在生产环境中广泛应用。文章详细介绍了每种模式的特点、适用场景及配置方法。 ... [详细]
  • 掌握远程执行Linux脚本和命令的技巧
    本文将详细介绍如何利用Python的Paramiko库实现远程执行Linux脚本和命令,帮助读者快速掌握这一实用技能。通过具体的示例和详尽的解释,让初学者也能轻松上手。 ... [详细]
  • 使用Python在SAE上开发新浪微博应用的初步探索
    最近重新审视了新浪云平台(SAE)提供的服务,发现其已支持Python开发。本文将详细介绍如何利用Django框架构建一个简单的新浪微博应用,并分享开发过程中的关键步骤。 ... [详细]
  • 创建项目:Visual Studio Online 入门指南
    本文介绍如何使用微软的 Visual Studio Online(VSO)创建和管理开发项目。作为一款基于云计算的开发平台,VSO 提供了丰富的工具和服务,简化了项目的配置和部署流程。 ... [详细]
  • 深入解析TCP/IP五层协议
    本文详细介绍了TCP/IP五层协议模型,包括物理层、数据链路层、网络层、传输层和应用层。每层的功能及其相互关系将被逐一解释,帮助读者理解互联网通信的原理。此外,还特别讨论了UDP和TCP协议的特点以及三次握手、四次挥手的过程。 ... [详细]
  • 为了解决不同服务器间共享图片的需求,我们最初考虑建立一个FTP图片服务器。然而,考虑到项目是一个简单的CMS系统,为了简化流程,团队决定探索七牛云存储的解决方案。本文将详细介绍使用七牛云存储的过程和心得。 ... [详细]
  • 本文详细介绍了 phpMyAdmin 的安装与配置方法,适用于多个版本的 phpMyAdmin。通过本教程,您将掌握从下载到部署的完整流程,并了解如何根据不同的环境进行必要的配置调整。 ... [详细]
  • 本文详细介绍了Java编程语言中的核心概念和常见面试问题,包括集合类、数据结构、线程处理、Java虚拟机(JVM)、HTTP协议以及Git操作等方面的内容。通过深入分析每个主题,帮助读者更好地理解Java的关键特性和最佳实践。 ... [详细]
  • 邮件(带附件,模拟文件上传,跨服务器)发送核心代码1.测试邮件发送附件接口***测试邮件发送附件*@parammultipartFile*@return*@RequestMappi ... [详细]
  • 360SRC安全应急响应:从漏洞提交到修复的全过程
    本文详细介绍了360SRC平台处理一起关键安全事件的过程,涵盖从漏洞提交、验证、排查到最终修复的各个环节。通过这一案例,展示了360在安全应急响应方面的专业能力和严谨态度。 ... [详细]
  • 解读MySQL查询执行计划的详细指南
    本文旨在帮助开发者和数据库管理员深入了解如何解读MySQL查询执行计划。通过详细的解析,您将掌握优化查询性能的关键技巧,了解各种访问类型和额外信息的含义。 ... [详细]
  • 本文详细介绍了如何准备和安装 Eclipse 开发环境及其相关插件,包括 JDK、Tomcat、Struts 等组件的安装步骤及配置方法。 ... [详细]
  • 本文详细介绍了网络存储技术的基本概念、分类及应用场景。通过分析直连式存储(DAS)、网络附加存储(NAS)和存储区域网络(SAN)的特点,帮助读者理解不同存储方式的优势与局限性。 ... [详细]
  • 嵌入式开发环境搭建与文件传输指南
    本文详细介绍了如何为嵌入式应用开发搭建必要的软硬件环境,并提供了通过串口和网线两种方式将文件传输到开发板的具体步骤。适合Linux开发初学者参考。 ... [详细]
author-avatar
天旺店浪莎内衣_318
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有