17611538698
webmaster@21cto.com

LAMP vs. MEAN:哪个技术栈更适合你

资讯 0 5843 2019-05-13 11:57:33
5.13_.8_.1_.png

 
Web技术栈是用于构建Web应用程序的软件或技术的集合。它有很多种产品供我们选择,但最终去选择其中一个可能会比较困难。
 
在与同事,开发者或客户交流时,对使用哪种技术和堆栈的建议不会有太大的不同。当我开始作为Web开发人员时,我当时采用了通常的方式:学习HTML和CSS,使用PHP开发 - 当然还有MySQL。
 
如果你还没有用Java或ASP.NET这些技术栈。不论是想要托管博客,论坛还是成为图像托管平台,您都会经常需要这些东西:Linux,Apache/nginx,MySQL和PHP(LAMP)。
 
以下是LAMP和相对较新的MEAN技术栈的详细概述,这些堆栈是目前最流行的开源
Web技术栈和其他技术栈的简要概述。
 
无论你选择哪种技术栈,Bitbucket都可以与它们协作。
 
LAMP技术栈
 
LAMP为开发和托管大型高性能Web应用程序提供了强大的平台。拥有最大和最古老的社区,无数的库和工具,你将获得很大的支持,并且很容易找到开发人员。
 
它的组成部分包括:
 
L inux(OS)
A pache(Webserver)
M ySQL(数据持久性)
P HP(编程语言)
 
这个堆栈也有一些衍生品:
 
LAMP(用Perl或Python代替PHP)
LAMP(使用MongoDB而不是MySQL)
WAMP(Windows作为操作系统)
MAMP(Mac OS X as OS)
XAMPP(任何OS + Perl或PHP + FTP服务器)
LAPP(PostgreSQL作为数据库)
 
LAMP已经是web开发的一种恐龙,已被成千上万的网站所使用,因此得到了很好的维护和支持。通过很多开源的模块,库和附件,还可以根据公司需求进行调整。
 
以Linux为基础,我们可以在大型开源社区中找到任何主题的帮助。MySQL是一种非常可靠和可扩展的解决方案。PHP目前版本为7,并且也受到成熟且大型社区的支持。PHP速度也非常快,并且与技术栈的其余部分很好地集成。
 
你可以控制服务器并确定安装的版本和软件,不必依赖客户端的浏览器。如果你有许多服务器端的任务,它最有效。
 
因为它易于学习,所以有很多开发人员没有遵循最佳实践去构建了一些垃圾应用程序。PHP的入门很容易,但掌握它很难。对于这些PHP应用程序中的安全性也是如此。有些人还会将PHP描述为脚本语言而不是真正的编程语言,因为它不是强类型的,也不是预编译的。我建议你深入研究PHP,Python和Perl的优缺点。
 
至于MySQL,其他类似的数据库也正变得越来越成熟。像MongoDB这样的NoSQL数据库,由于其可扩展性在当今企业中大受欢迎。此外,像MEAN这样的纯JavaScript技术栈每年都会获得很大的吸引力,新开发人员可能对学习LAMP兴趣不大。
 
MEAN
 
与LAMP相比,MEAN技术栈是相当新的。其最大的区别之一是MEAN不依赖于特定的操作系统 - 用Node.js负责服务器端的执行。
 
MEAN Stack特别推荐给JavaScript爱好者 - 因为它在所有层别都使用JavaScript。这也使它成为新开发人员的首选。
 
与MySQL的关系型数据库系统相比,MongoDB是一种流行且灵活的基于文档的NoSQL数据库。
 
而Angular有助于构建渐进和现代的Web应用程序。
 
其组成部分包括:
 
M ongoDB(数据持久性)
E xpress.js(服务器端应用程序框架)
一个 ngular(客户端应用程序框架)
N ode.js(服务器端环境)
 
这个技术栈也有一些衍生物:
 
MERN(React而不是Angular)
MEEN(Ember.js代替Angular)
 
使用JavaScript作为主要编程语言是MEAN技术栈的一个巨大优势。一切都可以在JS中快速设置并完成,这使招聘开发人员变得更加容易,而LAMP开发人员通常也了解JavaScript。MongoDB因其简单的无模式数据持久性而非常受欢迎,如果有大量读取请求,它比MySQL速度更快。
 
Angular由Google维护的事实也是一个很大的优势。它不断发布新版本和功能。另一个巨大优势是能够轻松构建移动或桌面应用程序,例如使用Ionic,可以轻松地重用或添加代码与组件。
 
像所有新技术一样,MEAN的魅力在于创造一些流行技术。开发人员倾向于这种流行并用JavaScript构建他们的应用,它变得很时髦。其中许多库和框架都很新,新版本不断快速发布,因此维护应用程序可能会变得非常麻烦。
 
由于许多技术在几年后会消失,可持续性可能成为MEAN的一个问题。随着应用程序的增长,维护干净的代码库并遵循最佳实践也更加困难。此外,我们必须依赖客户端和客户端的可用技术,例如,如果目标是IE用户,嵌入式系统或低端PC,则可能存在兼容性和可用性问题。
 
我们要考虑的,还有其他几个技术栈:
 
WISA
 
Windows Server / IIS / Microsoft SQL Server / ASP.NET
非开源,但所有组件都来自Microsoft,所以它应该无缝地工作。
lamp(使用MongoDB)
Linux,Apache,MongoDB,PHP
像MongoDB这样的NoSQL数据库也可以在经典的LAMP环境中使用。
 
Ruby Stack
 
Ruby / Ruby on Rails / RVM(Ruby虚拟机)/ SQLite
这个堆栈正在失掉人气。Ruby on Rails曾经是一个经常使用的框架,因此也是整个一个技术栈。
 
Java+Spring
 
Spring提供了一个用Java编写的完整的全栈框架,这是大型企业的首选,并且因独立开发人员的复杂性而有所逃避。
 
Django Stack
 
Python / Django / Apache / MySQL
Django框架深受Python开发人员的喜爱,提供了性能,通常被称为易于学习的堆栈。
 
用哪个技术栈最常见?
 
很难比较堆栈的受欢迎程度,但您可以使用Google趋势来比较编程语言,并了解人们搜索的内容。如下图所示,JavaScript现在搜索的不仅仅是PHP。
 
我建议不时使用Google的趋势工具检查开发趋势。
 

5.13_.8_.2_.jpg

 
 
谷歌趋势:PHP,JS,Ruby
 
我还建议深入研究数据库(SQL与NoSQL)以获得对这两个概念的基本理解并做出选择。
 
那么,你如何选择一个技术栈?
 
挑选技术栈取决于许多因素。如果您是开发人员或项目所有者,这里有几个问题要问自己。
 
我打算开发什么样的Web应用?
它的预计生命周期是多少?
我的客户/客户/猫/ ...基础设施提供哪些技术?
找到开发人员维护应用程序有多容易?
 
让我举个例子。假设你有一个二手车网站,它是在不久前用LAMP技术栈开发的。但是您的网站缺乏二手车经销商的后端,他们可以在您的网站上管理他们的列表。根据您公司的规模,时间和预算,您必须自问上述所有问题。如果您有一个小团队,将现有应用程序扩展到LAMP环境可能是有意义的。由于您的开发人员了解生态系统并且速度会快得多。如果您有足够的时间和资源,您可以采用另一种方法并使用API扩展现有的LAMP应用程序。之后,您的团队可以专注于开发一个小型的独立(M)EAN应用程序,该应用程序可以轻松维护,使用新功能进行改进,并使用更快的周期进行发布。
 
另一个例子:你想建立一个时事通讯平台,人们可以在那里注册,上传邮件列表,撰写邮件等等。你当然可以使用MEAN,但你有大规模和高流量潜力。使用LAMP堆栈作为您的基础可能更有意义,因为Linux,MySQL和Apache提供了一个稳定,可扩展的环境,并为任何问题提供了大量社区支持。您还将拥有许多服务器端任务和cron作业,并将遇到SMTP等邮件主题。在这种情况下,我建议根据您的需求定制Linux环境。
 
以下是需要了解/考虑的事项的摘要。
 
node.js
lamp
单代码库(JavaScript)。
适用于现代网络应用和混合应用。
得到Google等大公司的支持。
对于在客户端发生大量逻辑的应用程序更好。
由于快速发展的javascript生态系统,更难以长期维护。
最适合渐进式网络应用。
更适合大型应用。
更成熟,更庞大的社区。
完善的应用程序框架,如Symfony,Zend,Laravel。
更容易遵循标准,更容易保持代码清洁。
如果您不熟悉编程和Web开发,请这样问自己:
 
您和您的团队最容易学到的是什么?
从长远来看,哪些技术趋势是什么?
如果是开源的,您能想象为项目做出贡献吗?
从长远来看,哪些技术可以为您提供服务?
 
StateOfJS项目 - https://stateofjs.com/是查找JavaScript技术答案的绝佳资源。这是一个每年进行调查的项目,要求成千上万的开发人员就当前的技术和薪水发表意见!


作者:克里斯托夫.海克
编译:老夏


评论