在应用程序上的执行效果

客户端Comet的性能优化目的是:减少数据传输的延迟、HTTP连接的保存和管理、远程消息和处理跨域问题。服务器端的性能优化目的是:保存和共享HTTP的连接数、并尽量较少每个连接所消耗的内存、CPU、I/O和宽带。

       连接管理

    即便是很少的数据,服务器也会永久地为每一个用户打开一个HTTP连接,这导致打开很多连接。连接有两个限制:内存和CPU。但无论如何,每个连接都会因操作系统或开发语言而产生内存占用。如果每个连接使用一个线程就会导致一个完整执行堆栈的内存占用,即使它能被降到几乎合理的程度,通常大小也为2MB。另外,如果线程数的增加超过进程数,那么我们将会以超负荷而告终,因为操作系统在线程与进程之间切换的开销比我们实际执行代码的开销还要多。正是这个原因,我们需要选择一个异步网路架构。

常见的网络程序设计语言

目前最常用的动态网页语言有Perl、PHP、JSP、ASP和ASP.NET,下面对这五种语言进行一些技术性的比较。

    1、Perl

    Perl是一种很古老的脚本语言。最初的Web应用大多是用Perl编写的,Perl很像C语言,使用非常灵活,对于文件操作和处理具有和C语言一样的方便快捷。

    也正是因为Perl的灵活性和“过度”的冗余语法,也因此导致许多Perl程序的代码令人难以阅读和维护,因此使用的人在逐渐减少,并且目前有被python替代的可能。另外,Perl对于CPU的消耗似乎较高,效率有一些不足。

调试程序

程序开发的过程中难免会发生错误,有时错误是在编写程序代码时输入错误,有的则是客户端使用者因操作不当引起的,但最终提交高效的无措的代码是程序开发人员的重要职责。因此,如何避免错误、找出程序中的错误是程序设计中不可缺少的步骤,这就需要对程序进行调试。

    程序中常出现的错误大致有三类:

    1)语法错误。程序在编写的时候没按规定的语法进行,如:程序关键字输入错误等,程序会出错。这类错误通过程序调试容易发现,随着编程技术的提高也会逐渐减少,并且容易改正。

配置应用程序

 ASP.NET将应用程序定义为所有文件、页、处理程序、模块和可执行代码的综合,该应用程序可在Web应用程序服务器上的给定虚拟目录(及其子目录)的范围内调用或运行,它由一个虚拟目录及其子目录下的所有文件组成。通常情况下,一个应用程序包含一个或多个以下文件类型:包含Web.config文件;一个包含全局应用元素的Global.asax文件;包含该应用程序所用到的自定义类型的DLL文件。

       一个应用程序可以包含多个ASPX文件和ASCX文件,每个文件代表不同的Web页或页面的不同部分;Global.asax文件只能有一个,Web.config文件的数量虽没有限制,但是每个文件必须位于不同的目录下;DLL文件通常放在应用程序根目录下的bin目录下。

代码生成器中的目标程序

构造一个能够产生高质量机器代码的代码生成器的难度会受到目标机器的指令集体系结构的极大影响。最常见的目标机体系结构是RISC(精简指令集计算机)、CISC(复杂指令集计算机)和基于堆桟的结构。

RISC机通常有很多寄存器、三地址指令、简单的寻址方式和一个相对简单的指令集体系结构。相反,CISC机通常具有较少寄存器、两地址指令、多种寻址方式、多种类型的寄存器、可变长度的指令和具有副作用的指令。

在基于栈的机器中,运算是通过把运算分量压人一个栈,然后再对栈顶的运算分量进行运算而完成的。为了获得高性能,栈顶元素通常保存在寄存器中。因为人们觉得堆栈组织的限制太多,并且需要太多的交换和拷贝操作,所以基于堆栈的机器几乎已经消失了。

解决应用程序部署问题

目前在一台web服务器上部署一个ASP应用程序可不是一件轻松的事情,特别是如果该应用程雪由COM组件组成,而且要求对IIS元数据的配置做出修改的话,问题就变得更加复杂了。我们必须将ASP文件复制到每个服务器中,复制并注册COM组件,创建COM+应用程序,并注册相关联的COM+组件,还要根据配置要求来使用ADSI更新IIS元数据。这种安装工作不是轻易就能完成的,通常需要一位操作熟练的系统管理员,同时还需要时间和耐心,这才能保证程序顺利安装和运行,否则就需要一个很高级的安装开发人员。

ASP.NET应用程序的部署就变得非常简单了,ASP.NET之所以能解决这个问题是因为对我们开发web应用程序的方法进行了几项修改。为了简化现有应用程序的重新部署,ASP.NET使用了CLR的Shadow Copy功能来确保组件文件不会被锁定。这样就从根本上杜绝了IIS部署和计算机重启情况的发生,该功能意味着在任何时候都可以简单复制新的组件重写老组件文件来及时地进行组件升级。CLR的Shadow Copy功能之所以如此,是因为组件文件在被加载之前先被复制到了某个高速缓存区域。这也就表明原来的文件不会从最初的位置进行加载了。CLR的Shadow Copy功能是在一个应用程序域的基础上实现的。系统为每个应用程序域进行了潜复制,一旦某个组件发生了变化,为了重新加载该组件,ASP.NET会创建一个新的应用程序域,这样可确保修改后的文件能够被复制到高速缓存中并继续使用它。

n层应用程序的非数据连接

当我们从客户端/服务器模型转换至n层应用程序模型时又出现处理非连接数据的另一个问题。分布式的环境意味着客户端和服务器在网络上是由网络分离和连接的。要在这种环境下创建能正常工作的应用程序,我们需要采用新的设计方案,在应用程序的各层次之间进行更细微的区分。

例如,在应用程序(数据层)中我们经常要创建组件来执行数据访问操作,而不是通过ASP代码直接访问数据存储。通常还要遵循一系列的规则。这些规则也能在组件内部执行。它们可能是执行数据访问操作的部分组件,也可能是单独的组件,是它们构成了业务层(或者是应用程序层)。它们可以是客户端应用程序(表示层)中的一套单独的组件,用以执行数据管理、格式设置或表示数据等特定的任务。

应用程序安全性需求

网站建设时当开始考虑保护应用程序安全性时,必须首先考虑我们试图达到的实际目标。例如,应用程序是否包含高度敏感的信息,或者允许用户实施绝对禁止误用的任务——例如银行给客户提供了在线账户访问。或者说,有些信息不太敏感但仍然有用,例如想让访问者付费订阅后再访问的内容。

最后,所有这些都归结到量化出所涉及的风险和安全漏洞的后果。提高应用程序的安全性远不是允许每个人都能访问那样简单,还涉及到使用防火墙等设备构建复杂的多层系统,以及非军事和各种其他高度安全的功能。然而,上述方法通常只有当系统需要最高安全级别时才用到,例如当需要保护整个网络免受外界入侵时才用到。

«1»
最近发表
控制面板
您好,欢迎到访网站!
  [查看权限]
网站分类
搜索
Tags列表
网站收藏
图标汇集
  • 订阅本站的 RSS 2.0 新闻聚合
友情链接

热门搜索: 外链域名 高外链域名 高收录域名

Copyright www.thyst.cn. Some Rights Reserved.