网站开发(后端)

本文介绍一些常用的网站开发语言和框架。之所以介绍一些,而不是一个,是因为不同选择有不同的优缺点——没有一种能够“放之四海而皆准”的语言。

[% callout %] 建立一个干净的开发环境

如果想建立一个干净的开发环境,可以使用虚拟机。幸运的是,有人开发了一个基于虚拟机的构建软件 Vagrant,这样就可以轻松构建干净的开发环境,甚至在团队中使用相同开发环境了。

该软件有 for VirtualBox 和 for VMware 两个版本。因为 VMware 和 Vagrant for VMware 都是要掏钱的,所以建议用 VirtualBox。 [% endcallout %]

1. PHP

PHP 是最流行的 Web 服务器语言。PHP 语言最容易学习,也最容易部署,基于 PHP 的解决方案也最多——例如博客系统 WordPress、论坛系统 Discuz!、微信后台系统 WeiPHP……

很多时候你甚至都不需要再从头制作网站了,只要找到一个接近自身需求的,稍微改改代码,然后就可以拿去用了!这种行为叫做“二次开发”,所以只要不侵犯版权就不必觉得太内疚:smirk:——至于自由软件那就更不用说了。

流行框架

解决方案

既然有身经百战见得多了的应用,为什么不拿来稍微改改就投入生产呢?一般开源项目的安全性、功能和效率要比自己写的好多了。

  • 博客:WordPress、Typecho
  • 论坛:Discuz!
  • CMS(内容管理系统):Joomla!、Drupal(需要大量学习)等
  • 百科系统:MediaWiki
  • 微信后台:多到罄竹难书,随便捡一个都能用。决定使用之前先考察一下安全性如何,免得因为漏洞被爆!

起步

开发一个产品,纯粹从零开始,如果自身经验不足,为什么不用一些成熟的东西呢?

常用的就是 MVC(模型-视图-控制器)架构的框架,例如 Lavarel、CodeIgniter、CakePHP 等。这些框架都吸收了其他设计模式的长处,适合敏捷开发。

从零开始当然可以,不过一定要认真设计一下系统的结构,免得在扩展功能的时候瘫坐在地上哭。

缺点

因为 PHP 非常容易上手,所以新手很容易写出能够实现功能,但存在安全漏洞并且难以维护的代码。因此强烈建议新手注意以下几个问题:

  1. 尽量使用经受检验的现有框架和应用。
  2. 如果自己开发,尽量学习如何写出一个前后端分离的程序。可以借鉴优秀作品的思路。
  3. 务必注意安全性问题。

PHP 本身不支持多线程,也不支持实时系统,有此类需求的应当使用其他语言。

2. JSP

Java 也非常流行——从桌面应用、网站、嵌入式设备(手机)都有 Java 的影子,可见 Java 无处不在。JSP 自然就是用 Java 开发了。

基于 Java 的 MVC 框架有 Spring 等。

因为 Java 支持 socket,所以可以用 Java 开发实时应用。

缺点

Java 有一个重要缺点就是对硬件要求比较高,内存占用比较大,速度稍慢。但是 Java 伸缩性非常好,如果需要一个巨大的系统,不妨使用 Java 开发。

此外,JSP 新手也容易写出有一堆安全漏洞的东西。

3. ASP.NET

ASP 和 ASP.NET 是微软的东西(在有些人例如 Linuxer 眼里,微软的东西往往是”另类”)。ASP 已经过时,所以自然要用新一代的 ASP.NET。ASP.NET 一般用 C# 语言开发。C# 是一个可以和 Java 竞争的语言,尤其是在 .Net 部分开源,以及 ASP.NET 开源之后……

ASP.NET 和 JSP 功能都很强大,使用领域类似,而且 ASP.NET 也容易学习。

ASP.NET 有一个致命缺点,就是它一般需要在 Windows 服务器上运行。虽然它开源了,别忘了 SQL Server 还需要 Windows……

4. Node.js

Node.js 是服务器端的 JavaScript。创造 Node.js 就是为了解决高并发的问题,因此 Node.js 更适合高并发的应用。

Node.js 采用事件驱动、异步执行的模式。这种与众不同的设计方式使得它有良好的高并发支持。

Node.js 擅长的领域有:

  1. JSON API
  2. 实时系统(如聊天室)
  3. I/O 密集应用
  4. 单页应用
  5. 工具

比较流行的框架有 ExpressJS 等。

此外 Node.js 也可以用于基于浏览器的桌面应用的开发——例如 Atom 编辑器就是一个基于浏览器的桌面应用。

5. Python

Python 是轻巧的脚本语言,对网络功能有良好的支持,因此可以被用于服务器端的开发。

值得一提的是,Python 除了可以架网站,也适合用于执行一系列耗时和需要定时执行的后台任务,例如抓取数据或者数据维护。因此可以使用其他语言制作网站,然后用 Python 脚本来“干活”。

流行的基于 Python 框架有 Django 等。

6. Ruby on Rails

Ruby on Rails 是基于 Ruby 语言开发的框架。虽然 Ruby on Rails 也比较火,但是在国内并不如其他语言流行,甚至很少有能够直接部署 Ruby on Rails 应用的应用引擎。

Rails 是一个 MVC 框架,适合敏捷开发。正是因为 Rails 的出现,带动了 Ruby 使用者的增长。

不幸的是,Ruby 对 Windows 非常不友好——在 Windows 中安装 Rails 就是在浪费生命,而且很可能失败。即使安装成功,运行速度也让人难以忍受。因此不建议狂热的 Windows 爱好者使用 Ruby 开发应用。因为 Ruby 是日本人创造的东西,所以粪青们一定要抵制一切和 Ruby 有关的东西,包括在系统里预置了 Ruby 的苹果手机和苹果电脑。

7. Go

Go 是谷歌创造的一门编译型语言,它的特点是开发快、性能高、稳定性好,适合分布式系统。有人说 Go 是“网络时代的 C 语言”。

Go 比较适合 API 类应用的开发。

常用的框架有 Revel、beego 等。

8. CGI

纯粹的 CGI 效率并不高,而且服务器解决方案那么多,什么时候会用纯 CGI 呢?答案:嵌入式系统。

由于嵌入式设备本身性能不高,网页后台甚至会用 C 语言开发。但是 C 语言的字符处理能力很差,并不适合处理这些不难但是比较麻烦的东西,所以有人开发了 cgic 库,可以节省不少精力。

除了 C 语言之外,也可使用 lua 开发。典型的例子是 OpenWrt 的设置页面。