库,框架,架构,平台,有什么明确的区别? |
您所在的位置:网站首页 › 框架框架下载 › 库,框架,架构,平台,有什么明确的区别? |
库(Library)是一系列预先编写好的代码集合,供开发者在编程中调用,大大减少重复工作量。 库的概念很宽泛。程序员第一次输出hello world用的printf就来自C语言标准库; 各种SDK都是库; 从npm、Maven、Nuget下载的包都是库; 你自己写一个字符串处理函数,包装好之后调用,也是库。 框架(Framework)是库的一种。很多人会把框架和普通库的区别仅仅理解为规模和复杂度,其实不然。 jQuery的规模够大了,但仍然是库,不是框架。 框架的最大特征是它会接管程序的主控制流,开发者只需编写业务逻辑代码,具体执行工作由框架来调用。实践中经常会用到控制反转(IoC)以及模板类继承等方式。 比如用Spring开发Web项目,你只需编写Controller和配置文件。具体到项目如何启动、如何监听端口、每一次网络请求的响应处理,这些都由框架来实现。 所以一般来说单个项目可以引入很多库,却不能用多个框架。 同时用jQuery和Vue没问题,Vue和React就不行。因为主控制流只有一个。 架构(Architecture)与前面两个的区别不仅仅是规模更大,而且它是个抽象概念,不涉及具体语言和代码实现。 它可以是编程模式,比如MVC架构、MVVM架构,只是规定了代码如何进行逻辑分离。每种语言都有自己的MVC框架; 也可以是客户端形式,比如多年前常谈的B/S、C/S架构; 还可以是服务器端结构,比如分布式架构、微服务架构; 再比如说数据库,为了让客户放心你可以吹自己用的是业内顶端的高可用高一致性弹性伸缩多机房异地容灾双活架构(实际是阿里云每月八百块买的); 等等等等。 所以说架构师的价值并不在于写代码快、bug少、熟练使用某些库与框架,而是掌握并评估项目的什么地方适合用什么架构。大方向一旦出了问题,比写几处错误代码的影响可大多了。 平台(Platform)又是另一回事,区别就在于前三者属于技术领域的概念,平台则属于业务领域的概念。 只要是运行中的程序通过本机或网络API对外提供服务,无论是小规模的单个接口、大规模的云端集群服务,都可以称为平台。 操作系统是平台,它提供你的应用程序与硬件、软件、网络交互的渠道; 浏览器是平台,与操作系统的主要区别在于开发语言单一、权限控制较严; 各互联网服务商自然是平台,提供物理主机、虚拟主机、云主机、容器、Serverless等等并通过网络进行部署和访问; 以及常见的通知推送平台、短信平台、统计分析平台等等等。 当然,以上所有概念在网上经常出现混淆,但也不算什么严重的错误。某些较大规模的库经常被称为框架,一些框架也会自称平台来撑场面。就像罗老师做个手机UI也敢叫OS一样。 有的领域不必太较真,严格揪着定义来看,所有ORM都只能是库而非框架,因为数据库的读写跟程序控制流无关。但你要说MyBatis不算框架还勉强能接受,难道Hibernate和Entity Framework都要开除出框架行列?这也未免太原教旨了。人家接管了全套数据库操作,连语法都大规模解耦,还能要求什么呢? 我们分清这些概念是为了更好地开发和交流,最终目的还是让程序稳定高效地跑起来。有些东西单靠理论、举例和比喻没法彻底搞清楚,在实践中边学边思考就简单多了。 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |