什么是Web开发 / BS&CS架构 / 服务器 / 企业应用

更多
2021年04月14日 08点31分 作者:叶飞 修改

计算机上运行着各种各样的软件。


按是否需要联网

可以分为:

  • 单机程序:在当前电脑上独立运行,比如:WPS、PhotoShop、单机小游戏(扫雷)
  • 联网程序:需要通过网络连接到服务器才能正常运行,比如:QQ、哔哩哔哩、知乎、一起帮,这类软件又被分为两种架构:

    • C/S(Client/Server):客户端/服务器,表现为用户需要下载一个软件安装在自己电脑上,然后通过这个软件联网(和服务器相连),比如:QQ
    • B/S(Browser/Server):浏览器/服务器,表现为用户直接打开浏览器(比如:IE/Chrome/360浏览器),输入网址,和服务器相连,比如:一起帮

广义上,所有需要联网的程序开发都可以称之为Web开发,但一般我们会认为B/S架构的、基于浏览器的项目才是Web开发(实际上B/S也占绝对份额)。


网络和服务器

网络又分为局域网和互联网(后文详述)。

最初,人们利用网络把各自的电脑直接连接:

但随着网络规模的扩大(互联网的发展),这样做有两个问题:

  • 安全:我的电脑直接“暴露”在其他电脑面前,但你不知道那些电脑面前是不是坐着一个“黑客”
  • 性能:我的电脑得响应无数的请求,还要不要干自己的工作了?

于是大家觉得应该专门用一台电脑作为节点负责响应其他电脑的请求,这台电脑就被称之为服务器

对外提供“服务”(为大家服务嘛,^_^)的“机器”(电脑/计算机)。


服务器究竟可以干啥呢(响应什么请求)?

  • 网页:事先存储在服务器
  • Email中继:发送和收取都要通过服务器
  • 即时交流:QQ/直播
  • ……

服务器和我们用的电脑有什么区别呢?本质上没有区别。服务器为什么被称为服务器?就像警察被称之为警察一样:

  • 警察也是人,因为从事警察工作,我们就称其为警察
  • 服务器也是计算机,因为它用于提供服务,所以我们就称其为服务器

一定要说区别的话:

  • 可以没有显示器,或者多台服务器共用一个显示器
  • 外形更简洁:刀片式/塔式
  • 要求更稳定更强大的性能
  • 通常放置在专门的机房(布置在主干网络节点/恒温/除尘/防静电……)

各种服务器/机房图片


所谓云计算

飞哥认为:本质上就是一个“新瓶装旧酒”的概念炒作。

云,实际上就是指服务器端。

我估计云计算名称的来源就是因为:我们以前在用图表示服务器端的时候,经常用这个图标:

但云计算也有点“新”东西:

  1. 最初,一个网站使用一台服务器太奢侈了,所以产生了:虚拟(共享)主机,一台服务器大家共用操作系统,独享磁盘空间
  2. 虚拟主机不能通过操作系统自主的控制,所以产生了:VPS(Virtual Private Server,一台服务器被分隔成多个虚拟的操作系统,每个人都有自己的一份
  3. 后来一个网站一台服务器都有可能不够了,就产生了集群:把多台服务器的资源组合使用,对外看起来还是一台服务器一样
  4. 再集群的基础上再进行VPS的划分,这就产生了现目前意义上的服务器/计算/存储。

云服务的诞生,极大的减少了(中小型)互联网公司服务器维护的人力成本负担(以前的服务器运维失业)。

PS:现在所谓的“云计算”培训班,其实就是以前的Linux运维培训班(升级版)


企业应用

其实并不是所有的和网络相关的编程开发都是(我们通常意义上说的)Web开发。Web开发除了好网络相关,和浏览器相关,还应该是一种企业应用

“企业”(enterprise)这个翻译其实是有问题的,容易把人引向:企业/公司级别所开发/使用的应用……让人挠头!但木已成舟,约定俗成。

同学们最好回归其本义:(英英词典

a large or important project, especially one that is new or different

或者,大家想一想:企业号航母……航母和企业(公司)也没关系是不是?

关于“应用”(Application),复习:操作系统


Martin Fowler的定义

那么,究竟什么是企业应用?在这本号称“企业应用开发圣经”的《企业应用架构模式》(强烈推荐!)中

Martin Fowler花了一章节的来进行解释。我总结出来了一些关键字:

  1. pesistent data  
  2. a lot of data
  3. access data concurrently  (要使用“数据库”)
  4. a lot of user interface screens    (很多“用户界面”)
  5. integrate with other enterprise applications
  6. conceptual dissonance:比如:评价(赞/踩/评论……)
  7. complex business "illogic"   (繁杂:业务逻辑)


数据库

Martin的定义1-3:都和数据相关,更通俗粗糙的解释:就是要利用数据库

因为目前来说,数据库是完成大量 数据的持久化,并有效处理 并发冲突 的不二选择。

PS:为什么我学的数算都没用呢?这锅就该数据库来背,^_^

所有的应用,按其是否使用数据库,或者说,看软件的主要目的/功能是不是:

  • 录入/保存数据:添加和修改(包括删除)
  • 检索数据:查找

又可以分为:

  • 数据型:比如一起帮(注册登录/发布/浏览)、淘宝(上架/购物车订单/后台账目)、医院挂号、银行取款……
  • 功能型:几乎不需要数据库,比如WPS、CAD、360安全管家……

用户交互

Martin的4:用户使用大量的UI界面和应用进行交互。

Web开发里面就是浏览器里面的一个又一个的网页,里面包含了:内容、链接、表单元素(文本框/选项/按钮……)

复杂的业务逻辑

首先大家要习惯的第一个词:业务(business),有点商业的味道,实际上代指应用应该实现的功能。比如:注册/登录、发布、评论、提交订单……

那么业务逻辑(Buisness Logic)的特点:

  1. complex:复杂的。和数据结构和算法里面的复杂度不是同一个意思。这里用“繁杂”可能更为贴切,意思是造成“复杂”的原因是:繁多、琐碎、七零八落……整个应用是由无数个小功能小模块构成,每一个单个的小功能小模块都很简单;但是,把这些功能糅合在一起,问题就复杂了!
  2. illogic:这里Martin进行了调侃:业务逻辑不逻辑。这个,只有等同学们接触了各种“千奇百怪”的业务之后才会有所体会(参考)。这里说了也是白说,因为“一起帮”的业务逻辑是非常有逻辑性的,^_^
    反对的童鞋可以上来领一个轮椅……

  3. dissonance:概念上的“不一致”。理解一个应用,你首先要理解它里面大量的“概念”,比如“一起帮”里的:帮帮币、悬赏、冻结、求助……但是,不同的应用之间他们的概念完全有可能是不相同的。比如,最简单的用户(User)
    • “一起帮”里面,注册的才算用户;
    • 另外一个系统,只要访问网站的都算用户。
    这种概念上的不一致,对我们理解需求也造成了非常大的困扰。


作业

  1. 我能不能把我自己在用的这台电脑用作服务器?为什么?
  2. 思考一下:以下这些软件哪些属于Web开发,属于B/S还是C/S,哪些属于企业应用,为什么?
    1. 一起帮

    2. 哔哩哔哩
    3. QQ和微信
    4. 百度和google
    5. 超市收银(进销存)系统
    6. 源栈的扫地机器人内嵌控制程序
    7. 华为的鸿蒙操作系统
    8. .NET Framework
    9. AlphaGo
    10. WPS 或 office
软件分类 W
赞: 0 踩: 0

打赏
已收到打赏的 帮帮币

你的 打赏 非常重要!
为了保证文章的质量,每一篇文章的发布,都已经消耗了作者 1 枚 帮帮币
没有“帮帮币”,作者无法发布新的文章。

全系列阅读
评论 / 0

编程基础


项目管理相关

需求发布、开发规划、部署、测试,源代码版本管理(git)等……

逸闻史话

认识计算机

编程语言

数据结构和算法

Web开发基础

全部
关键字



帮助

反馈