ASP已老,尚能饭否?

我对ASP的感情,跟大海一样深。我用它实现了第一个动态网页,也用它做了毕业设计,毕业设计的名字是《毕业设计管理系统》(是不是有点绕)。在 PHP 和 ASP.NET、Java 高歌猛进的今天,很少程序员还在使用ASP了。

1996年微软公司推出 ASP(Active Server Page),很快成为中小型网站开发的首选。许多企业的门户网站和中小型新闻网站都采用基于ASP开发的内容管理系统。用友软件公司早期几款安身立命的ERP软件,也是采用ASP开发。

2000年微软发布第一个 .NET Framework Beta 版本,在 2003 年升级到 v1.1,推出了 ASP.NET,完善了桌面应用开发和 Web 开发。ASP.NET支持用 C# 或者 VB.NET 开发 Web 应用。无论是底层结构还是开发模式,都和ASP完全不一样。

ASP最大的特点是简单易学,我们来看一个提交表单的代码示例:


Your name:

从代码示例可以看到, <%%><!--%%-->里面是用VB脚本编写的业务逻辑,嵌入在页面的HTML代码中中,倒是一目了然。这样组织代码的坏处也很明显,没有分离页面和逻辑,一旦业务变复杂,很难组织好模块,代码可读性急剧下降。

ASP扩展功能也是个麻烦事。ASP的VB脚本能够直接调用的系统接口非常有限,必须在服务器上安装额外的COM组件才能扩展功能,COM组件通常采用C++开发。相比之下,ASP.NET或者Java平台提供了足够的API,采用C#或者Java就能实现功能,并且可以随着应用程序一起打包上线。

扩展组件和业务代码分离会造成两个问题:ASP程序员要额外学习COM组件开发;服务器部署COM组件,增加运维成本。与ASP同时代的PHP也有类似的问题,但是它一直升级,已经孕育庞大的生态和解决方案,最终发展出PHP + Apache + MySQL的黄金组合,还有一大堆知名的网站如facebook、wordpress、wikipedia。

ASP也只能部署在Windows平台上,系统标配是Windows Server 系列和IIS。限制软件的运行平台,是微软一贯的作风。

曾经做毕业设计的时候,我对ASP爱不释手,也痛骂其诟病。最近我看了一些Go和Rust语言的发展历史和编程资料,突然理解ASP的设计思路了。在当时的环境下,微软作为一个商业公司在ASP上做出了最优的设计,理由如下:

  • 简单易学。简单就是生产力。
  • 功能简单。定位小型网站,完全够用。
  • 复用COM组件技术、VB语言。这两者比ASP还早出现。
  • 运行环境绑定Windows,符合商业利益。

世上只有两种编程语言:一种被人骂,一种没人用,每次看到技术社区讨论语言优劣的话题,我都直接划过不看。与其陷入语言优劣之争,不如多学习计算机基础和系统架构。

COM:COM是component的缩写,微软提出的一种软件的组件对象模型,是关于如何建立组件以及组件之间进行交互的规范。
COM组件:由以Win32动态链接库(DLL)或可执行文件(EXE)形式发布的可执行代码所组成。一个COM组件可以包含多个COM对象,一个COM对象又可以有多个接口。
COM对象:类似于C++语言中的类,类的每个实例代表一个COM,包括属性和方法。

Go:又称Golang,是Google开发的一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言。Go作为服务器编程言语,很适合处理日志、数据打包、虚拟机处理、文件体系、分布式体系、数据库代理、网络等方面。
Rust:Rust是一门系统编程语言,专注于安全 尤其是并发安全,支持函数式和命令式以及泛型等编程范式的多范式语言。Rust最初是由Mozilla研究院的Graydon Hoare设计创造,然后在Dave Herman, Brendan Eich以及很多其他人的贡献下逐步完善的。

Original: https://www.cnblogs.com/xiaoyangjia/p/16378175.html
Author: 编码砖家
Title: ASP已老,尚能饭否?

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/578113/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Unity中Button的一些基础用法

    Button的功能探究 Interactable(是否可交互) 可交互简单来说所指的是按钮能否被点击,有true和false两种状态 public Button testButto…

    Linux 2023年6月7日
    0122
  • 提升git clone速度

    查看github.global.ssl.fastly.Net的ip地址 nslookup github.global.ssl.fastly.Net Original: https:…

    Linux 2023年6月7日
    0125
  • POJ1475(Pushing Boxes)–bbffss

    假设只有一个箱子。游戏在一个R行C列的由单位格子组成的区域中进行,每一步, 你可以移动到相邻的四个格子中的一个,前提是那个格子是空的;或者,如果你在箱子旁边,你也可以推动箱子前进一…

    Linux 2023年6月7日
    0108
  • NTP服务器实现

    时间服务器是一种计算机网络仪器,它从参考时钟获取实际时间,再利用计算机网络把时间信息传递给用户。虽然还有一些比较少用或过时的协议仍然在使用,但现时最重要及广泛使用,作为时间信息发送…

    Linux 2023年6月7日
    086
  • rsync

    rsync简介 rsync是linux系统下的数据镜像备份工具。使用快速增量备份工具Remote Sync可以远程同步,支持本地复制,或者与其他SSH、rsync主机同步。 rsy…

    Linux 2023年6月6日
    088
  • Linux文件属性详述

    一、文件属性信息概述 文件属性信息组成如下: 文件索引属性信息——inode编号; 文件类型权限信息; 文件链接属性信息——硬链接数; 文件属主信息——文件所有者; 文件属组属性信…

    Linux 2023年5月27日
    0103
  • MySQL半同步复制的实现和复制过滤器

    当客户端发送给服务端请求时,在等待服务端响应的时候,客户端可以做其他的事情,这样节约了时间,提高了效率。 当客户端发送请求给服务端,在等待服务端响应的请求时,客户端不做其他的事情。…

    Linux 2023年6月7日
    0103
  • 一个轻量级的C++ log日志库

    一、简介 为了自己使用写的一个简单日志库,使用仅需包含一个头文件,支持Windows和Linux平台,支持多线程控制台输出以及写日志文件。 二、调用方式 #include &quo…

    Linux 2023年6月7日
    090
  • manjaro镜像官方下载

    manjaro国内下载地址,收藏 https://mirrors.tuna.tsinghua.edu.cn/osdn/storage/g/m/ma/manjaro-jp/ http…

    Linux 2023年6月8日
    0509
  • 网络设备配置–10、利用ACL配置访问控制

    一、前言 同系列前几篇:网络设备配置–1、配置交换机enable、console、telnet密码网络设备配置–2、通过交换机划分vlan网络设备配置&#8…

    Linux 2023年6月8日
    0114
  • 08_Linux基础-vim-tmux-字符编码

    08_Linux基础-vim-tmux-字符编码 一. vim 文本编辑器-vim(编辑文本) Windows:记事本、word、sublime、pycharm能编辑音乐、视频、图…

    Linux 2023年6月6日
    0108
  • Ubuntu 18.04安装sysv-rc-conf

    sudo nano /etc/apt/sources.list &#x52A0;&#x5165;deb http://archive.ubuntu.com/ubun…

    Linux 2023年6月13日
    088
  • 翻车!误删/usr/lib/引发的血案,从棺材边成功抢救的过程分享。

    写在开篇 血案:本地开发机是CentOS 7,本想删除在/usr/lib/下的一个软链,如:/usr/lib/xxx。当正想删除时,突然被别的事情打扰了一下,回过神之后莫名奇妙的执…

    Linux 2023年6月7日
    0105
  • 渐变色搭配网站(模仿)

    html;gutter:true; 渐变色</p> <pre><code> * { margin: 0; } body { display: f…

    Linux 2023年6月13日
    090
  • 嵌入式软件架构设计-消息交互

    1、前言 在熟悉任务调度、程序分层和模块化编程关于软件架构、分层和模块设计后,除了函数调用设计中出现的情况外,还会遇到同层模块之前如何进行消息交互,通常是应用层之间。 比如一个设备…

    Linux 2023年6月7日
    0112
  • 运维自动化之ansible,轻松实现企业级自动化运维

    Original: https://www.cnblogs.com/magecxy/p/15561194.htmlAuthor: 程序员面试吧Title: 运维自动化之ansibl…

    Linux 2023年5月27日
    090
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球