版权归原作者所有,如有侵权,请联系我们

[科普中国]-网络应用支持软件

科学百科
原创
科学百科为用户提供权威科普内容,打造知识科普阵地
收藏

在计算中,网络应用支持软件又称网络应用程序或**Web应用程序,**是客户端 - 服务器 计算机程序,客户端(包括用户界面和客户端逻辑)在Web浏览器中运行。常见的Web应用程序包括网络邮件,在线零售,在线拍卖,维基,即时消息服务和许多其他功能。

定义单页面应用程序更类似于应用程序,因为它们拒绝在具有不同URL的不同页面之间移动的更典型的Web范例。像Sencha Touch和AngularJS这样的单页框架可能被用来加速为移动平台开发这样一个Web应用程序。任何类型的动态网页与“网络应用程序”之间的一般区别尚不清楚。最有可能被称为“网络应用程序”的网站是那些与桌面软件应用程序或移动应用程序具有类似功能的网站。HTML5引入了明确的语言支持,可以使应用程序作为网页加载,但可以在本地存储数据并在离线时继续运行。

移动web应用程序在制作Web应用程序时,有几种定位移动设备的方法:

1)响应式网页设计可用于制作网络应用程序 - 无论是传统网站还是可在小屏幕上查看的单页应用程序,并且可以与触摸屏配合使用。

2)渐进式Web应用程序是常规网页(或网站)和移动应用程序的混合体。

3)原生应用程序或“移动应用程序”直接在移动设备上运行,就像传统软件应用程序直接在台式计算机上运行一样,没有Web浏览器(并且可能不需要Internet连接);这些通常用Java(用于Android设备)或Objective-C或Swift(用于iOS设备)编写。最近,像React Native,Flutter和Xamarin这样的框架允许使用除每种标准本地语言以外的语言开发所有平台的本地应用程序。

4)混合应用程序将移动网站嵌入到本机应用程序中,可能使用Apache Cordova和Ionic或Appcelerator Titanium等混合框架。这允许使用Web技术进行开发(并且可能直接从现有移动网站复制代码),同时还保留本机应用程序的某些优点(例如,直接访问设备硬件,离线操作,应用程序商店可见性。

历史Web应用程序使用以各种Web浏览器支持的标准格式(HTML和JavaScript)编写的Web文档。Web应用程序可被视为客户端 - 服务器软件的特定变体,其中客户端软件在使用诸如HTTP的标准程序访问相关网页时被下载到客户端机器。每次访问网页时都可能会发生客户端网页软件更新。在会话期间,Web浏览器解释并显示页面,并充当任何Web应用程序的通用客户端。在早期的计算模型(如客户端服务器)中,应用程序的处理负载在服务器上的代码和本地安装在每个客户端上的代码之间共享。换句话说,一个应用程序有自己的预编译客户端程序作为其用户界面,并且必须分别安装在每个用户的个人计算机上。升级到应用程序的服务器端代码通常还需要升级到安装在每个用户工作站上的客户端代码,这增加了支持成本并降低了生产力。另外,应用程序的客户端和服务器组件通常都与特定的计算机体系结构紧密相连,除了最大的应用程序外,操作系统和将它们移植到其他操作系统的成本往往非常昂贵。(现在,用于移动设备的本地应用程序也受到一些或所有上述问题的困扰。)

在Web早期,每个单独的网页都以静态文档的形式提供给客户端,但由于用户输入是通过嵌入在页面标记中的Web表单元素返回的,因此页面顺序仍然可以提供交互式体验。但是,每次对网页的重大更改都需要往返服务器以刷新整个页面。

1995年,Netscape引入了一种称为JavaScript的客户端脚本语言,允许程序员在客户端运行的用户界面中添加一些动态元素。因此,下载页面的嵌入脚本可以执行各种任务,如输入验证或显示/隐藏页面的某些部分,而不是将数据发送到服务器以生成整个网页。

1996年,Macromedia引入了Flash,这是一款矢量动画播放器,可以作为插件添加到浏览器中,以在网页上嵌入动画。它允许使用脚本语言来编程客户端的交互,而不需要与服务器通信。

在1999年,Servlet规范2.2版中的Java语言中引入了“Web应用程序”概念。当时JavaScript和XML都已经被开发出来,但Ajax还没有被创造出来,并且XMLHttpRequest对象最近才作为ActiveX对象在Internet Explorer 5上引入。

2005年,Ajax一词被创造出来,像Gmail这样的应用程序开始使他们的客户端变得越来越互动。网页脚本能够联系服务器以存储/检索数据而无需下载整个网页。

2011年,HTML5已经完成,它提供了图形和多媒体功能,而无需客户端插件。HTML5也丰富了文档的语义内容。API和文档对象模型(DOM)不再是事后的,而是HTML5规范的基础部分。WebGLAPI为基于HTML5画布和JavaScript语言的高级3D图形铺平了道路。这对于创建真正的平台和浏览器独立的富Web应用程序具有重要意义。

界面通过Java,JavaScript,DHTML,Flash,Silverlight和其他技术,诸如在屏幕上绘图,播放音频以及访问键盘和鼠标等应用程序特定的方法都是可能的。许多服务都致力于将所有这些组合到一个更熟悉的界面中,该界面采用操作系统的外观。通用技术,如拖放也受到这些技术的支持。Web开发人员经常使用客户端脚本来添加功能,特别是创建不需要页面重新加载的交互式体验。最近,开发了一些技术来协调客户端脚本与诸如ASP.NET,J2EE,Perl / Plack和PHP等服务器端技术。

Ajax是一种使用各种技术组合的Web开发技术,它是创建更多交互式体验的技术示例。

结构应用程序通常分成称为“层”的逻辑块,其中每个层都分配了一个角色。1传统的应用程序只包含1层,驻留在客户端机器上,但Web应用程序本身就是一种n层的方法。尽管可能有许多变化,但最常见的结构是三层应用程序。按照其最常见的形式,这三层被称为演示,应用和存储,按此顺序。网页浏览器是第一层(演示文稿),一个引擎使用一些动态网页内容技术(如ASP,CGI,ColdFusion,Dart,JSP / Java,Node.js,PHP,Python或Ruby on Rails)是中间层(应用程序逻辑),数据库是第三层(存储)。Web浏览器向中间层发送请求,中间层通过针对数据库进行查询和更新来为它们提供服务,并生成用户界面。

对于更复杂的应用程序,三层解决方案可能不足,使用n层方法可能会有所帮助,其中最大的好处是将驻留在应用程序层的业务逻辑分解为更细粒度的模型。另一个好处可能是增加一个集成层,通过提供易于使用的界面来访问数据,从而将数据层与其他层分开。例如,通过调用“list_clients()”函数可以访问客户端数据,而不是直接对数据库上的客户端表进行SQL查询。这允许替换底层数据库,而不对其他层进行任何更改。

有些人将Web应用程序视为两层架构。这可以是一个“聪明”的客户端,它执行所有的工作并查询一个“愚蠢”的服务器,或者一个依赖于“智能”服务器的“愚蠢”客户端。客户端将处理表示层,服务器将具有数据库(存储层),并且业务逻辑(应用层)将在其中一个或两个上。虽然这增加了应用程序的可伸缩性,并将显示和数据库分开,但它仍然不允许真正的图层专业化,所以大多数应用程序将超出此模型。

商业用途这类应用程序的安全漏洞是一个主要的问题,因为它可能涉及企业信息和私人客户数据。保护这些资产是任何Web应用程序的重要组成部分,并且在开发过程中必须包含一些关键的操作区域。这包括认证,授权,资产处理,输入以及日志和审计的流程。从一开始就将安全性构建到应用程序中可能会更加有效,并且从长远角度来看具有较小的破坏性。应用软件公司的新兴策略是提供对以前作为本地应用程序分发的软件的Web访问。根据应用程序类型的不同,它可能需要开发完全不同的基于浏览器的界面,或者仅适应现有应用程序以使用不同的演示技术。这些程序允许用户每月或每年支付使用软件应用程序的费用,而无需将其安装在本地硬盘驱动器上。遵循该策略的公司被称为应用服务提供商(ASP),并且ASP目前在软件行业中受到很多关注。

云计算模型Web应用程序是软件即服务(SaaS)。有固定或使用相关费用的企业应用程序作为SaaS提供给企业。其他Web应用程序是免费提供的,通常从Web应用程序界面中显示的广告中获得收入。

开发编写Web应用程序通常通过使用Web应用程序框架(如Django,Ruby on Rails和Symfony)来简化。这些框架通过允许开发团队专注于其应用程序中独特于其目标的部分而无需解决诸如用户管理之类的常见开发问题,便于快速开发应用程序。许多使用的框架都是开源软件。

使用Web应用程序框架通常可以减少程序中的错误数量,通过简化代码,并允许一个团队专注于框架,而另一个专注于指定用例。在因特网上经常遭受黑客攻击的应用程序中,安全相关的问题可能由程序中的错误引起。框架还可以促进使用最佳实践例如POST之后的GET。

此外,有可能在互联网操作系统上开发应用程序,尽管目前没有很多适合此模型的可行平台。

本词条内容贡献者为:

王慧维 - 副研究员 - 西南大学