Web 应用程序的关键特性
每个企业应用程序都必须具备上述特性,以及可靠性、可升级性、可收益性、可支持性、可购性和可售性。本文主要分析了前四种特性。
可伸缩性
应用程序的可伸缩性有两个独立的方向——向上扩展和向外扩展。向上扩展包括升级硬件或优化软件以确保单个服务器机组能够支持更多用户。例如,如果一个机器在向上扩展前支持 100 个用户,则在应用向上扩展后,它支持的用户可能增加到 125 个。
向外扩展就是在能添加更多服务器来执行同样的功能时,无需中断软件,即可增加应用程序所支持的用户数。添加另一组服务器后,用户可能从 100 个增加到 175 个。用户数不会倍增,原因在于共享负载的服务器之间进行通信也需要系统开销。这也决定了软件要能够无缝地在多个这类服务器之间共享单个服务器的负载。
可用性
通常,我们所说的可用性即是指高可用性。具有高可用性的应用程序应该在一年中的大部分时间里都处于启动且运行的状态,因而对高可用性的衡量方法就是看它在一年里的停机时间。有关衡量技巧的详细信息,请参阅衡量可用性。这里说的停机时间还包括为应用程序维护和升级所规划的停机时间。
可维护性
如果应用程序在生命周期内始终能够满足用户需求,则可认为该应用程序具有可维护性。如果应用程序可以根据需要增加用户数、升级用户需要的功能并可根据需要将新功能添加到应用程序中,则应用程序具有可维护性。
可靠性
由于软件中的错误而造成应用程序停机称为不可靠性因素。应用程序应该具有高可靠性因素以确保它同时具有高可用性,这一点十分重要。任何一次停机,包括由于软件错误造成的停机,都会降低可用性。
衡量方法
必须要能够衡量应用程序的各种性能,这样才能在产品的生命周期内对其进行监视。此部分将探讨一些衡量方法。
衡量可伸缩性
衡量可伸缩性时经常采用以下两种衡量方法:
特定的机器配置能够支持的用户数,可以衡量应用程序的向上扩展能力。例如,配有 4 GB RAM 和 80 GB HDD 的 Pentium 4 PC 能够支持 100 个用户。
在通过服务器机群增加支持应用程序的服务器后最多可支持的用户数,可以衡量应用程序的向外扩展能力。您还可以通过服务器机群最多可支持的服务器数目来衡量向外扩展能力。
虽然这些方法可以在顶层衡量可伸缩性,但您还需要针对支持的用户数来定义工作流。如果不把它考虑在内,则有可能出现不同级别的工作流复杂度所支持的用户数也不同的情况。
精确定义工作流和各类用户的比例是一项复杂的任务,并不在本文讨论范围之内。
衡量可用性
可用性是用应用程序在一年内非停机时间的百分比来衡量的。表 1 给出了可用性百分比与一年内可接受的停机时间。
表 1. 可用性与一年内可接受的停机时间
可用性百分比 可接受的最长停机时间
99.9% 8.8 小时
99.99% 53 分钟
99.999% 5 分钟
99.9999% 32 秒
一些重要的系统(例如空中交通控制系统或医疗系统)需要在 99.9999% 的时间里都处于运行状态。也可以用可用性百分比中包含 9 的数目来表示可用性,例如 99.9% 被称为三个 9s 可用性。从三个 9s 可用性到六个 9s 可用性,最长的可停机时间将急剧缩短。
衡量可维护性
要衡量应用程序的可维护性,请检查由应用程序造成的系统开销的百分比。例如,如果重新开发一种特性需要 x 小时,而在应用程序顶层开发需要 y 小时,则该特性的应用程序可维护性为 y/x。对于一个理想的应用程序,可维护性应当为 0,这意味着任何特性都能在应用程序中立即实现。当这个数字是通过很多特性获得的平均值时,则实际的可维护性就确定了。
系统的可维护性还随着解决问题花费时间的增长而降低。通过在分子中增加解决问题花费时间的方法可以获得系统可维护性的一个实际度量单位。
衡量可靠性
应用程序的可靠性可通过每千行代码中识别出的错误数来衡量。例如,每千行代码(KLOC)中的 0.1 个错误可能就是系统可靠性的一个度量单位。但是,在某些应用程序中,对错误和增强功能加以分类可能是一项复杂的任务。对于十分重要的软件,不管软件是大是小,可能以任何形式危及到软件生存的错误始终应当为零。
分享到:
相关推荐
文件名称"第八章 Web应用程序的开发"可能是一个教程或课程的章节,涵盖了Web应用程序开发的关键概念和技术。这部分内容可能讲解了如何创建ASP.NET Web Forms应用,或者深入探讨了ASP.NET MVC和Web API的使用。可能...
C# Web应用程序是基于.NET...总结来说,C# Web应用程序开发涵盖了从基础的C#语法到ASP.NET框架的高级特性,再到数据库交互、前端技术和部署策略等多个层面。通过学习这些知识点,你将具备开发现代Web应用程序的能力。
【面向.NET的Web应用程序设计】是针对微软技术栈中的一项重要技能,主要涉及使用.NET框架构建高效、可扩展且安全的Web应用。这个主题涵盖了多种技术和概念,包括ASP.NET、Web Forms、MVC、Web API以及.NET Core。在...
Web服务器和应用程序服务器是两种不同的服务类型,它们在互联网应用中扮演着各自的关键角色。本文将详细解释这两者的概念、功能以及它们之间的差异。 首先,Web服务器主要负责处理HTTP协议,它的核心任务是接收来自...
数据库交互是Web应用程序开发的关键部分。在这个项目中,你可能需要用到ADO.NET,它是.NET Framework的一部分,用于访问各种数据源,包括SQL Server。学习如何创建数据库连接,执行SQL查询,以及填充和绑定数据到...
Web应用程序开发是一个广泛的领域,涵盖了从前端到后端的各种技术和工具。这个教程旨在提供一个全面的指导,帮助学习者掌握创建交互式、动态和高效Web应用的技能。书中的实例源码和电子课件是强化理解和实践的重要...
尽管给定的部分内容主要涉及的是一个重复的链接到一个Java学习社区,并没有直接提供关于ExtJS的任何信息,但是基于标题“ExtJS Web应用程序开发指南(第2版).pdf高清下载”和描述,我们可以围绕ExtJS框架进行深入...
ASP.NET Web应用程序设计教程是针对使用Microsoft的.NET框架开发Web应用程序的一个全面指南。.NET框架是微软提供的一个软件开发平台,它包含了一系列用于构建、运行Web应用和服务的库和工具。ASP.NET是.NET框架的一...
Web应用程序和.NET程序设计是构建基于互联网的交互式系统的基石,它们涉及到许多关键概念和技术。在本实验中,主要目标是理解和掌握Web应用程序的状态管理、应用程序缓存的使用,以及会话状态与Cookie的关系。 首先...
### 亚马逊部署Web应用程序知识点详解 #### 一、AWS Elastic Beanstalk **AWS Elastic Beanstalk** 是亚马逊提供的一种简化Web应用程序部署的服务。它允许开发者快速地在云端部署和管理应用程序,而无需关心底层...
《Visual C#.NET Web应用程序设计(第2版)》是一本深入探讨如何使用C#语言构建Web应用程序的专业书籍。此书的程序源代码是学习和理解书中理论与实践结合的关键资源,涵盖了各种Web开发技术的核心概念和应用。 C#是一...
Web应用程序设计是构建基于互联网的交互式系统的学科,它涵盖了多个关键领域,包括网页设计、服务器端编程、数据库管理和客户端脚本。在这个主题中,我们主要关注网站开发、Web Engineering (WED)、Active Server ...
这对于处理敏感信息的WEB应用程序尤其关键,例如在线交易、个人信息管理等。 【HTTPS双向认证】则进一步增强了安全性。在双向认证中,不仅服务器会验证客户端的身份,客户端也会验证服务器的身份。这种方式可以防止...
《Web应用程序开发教程——ASP.NET+SQL Server》是由岳学军和李晓黎主编的一本专业教程,由人民邮电出版社出版。这本书深入浅出地介绍了如何使用ASP.NET技术和SQL Server数据库来构建高效的Web应用程序。ASP.NET是...
《C# Web应用程序入门经典电子书2》是一本专为初学者设计的教程,旨在帮助读者快速掌握使用C#语言开发Web应用的基础知识。这本书详细介绍了C#编程语言与Web开发技术的结合,包括ASP.NET框架、MVC模式、Web API以及...
描述 "一个基于17kb Preact&Redux的渐进式Web应用程序" 强调了项目的轻量化特性。17kb的大小表明项目采用了Preact的精简版,这使得整个应用程序的初始加载更快,用户体验更佳。渐进式Web应用程序是一种旨在提供原生...
学习C# Web应用程序开发,你需要掌握以下几个关键概念: 1. **ASP.NET生命周期**:理解页面从请求到响应的整个过程,包括初始化、加载、回发和卸载阶段。 2. **控件和事件处理**:学会使用ASP.NET控件,如按钮、...
《C# Web应用程序入门经典》是一本针对初学者编写的指南,旨在帮助读者掌握使用C#语言构建Web应用程序的基础知识。这本书的pdg版本可能是PDF的拼写错误,通常指的是电子版格式,方便读者在电脑上阅读或打印。以下是...
《Web应用程序进销存系统管理系统的深度解析》 在当今数字化时代,企业管理和运营的效率至关重要,而进销存系统正是提升这方面效率的关键工具。Web应用程序进销存系统管理系统是基于Web技术,集进货、销售、库存...
作为一种动态网页技术,JSP的主要优势在于其强大的功能性和跨平台特性,这使得开发者能够轻松地构建高度交互性的Web应用程序。 #### JSP与传统HTML的区别 在传统的网页开发中,通常使用的格式是*.htm或*.html文件...