Web客户端编程
当前位置:以往代写 > JAVA 教程 >Web客户端编程
2019-06-14

Web客户端编程

Web客户端编程

Web最初回收的“处事器-欣赏器”方案可提供交互式内容,但这种交互本领完全由处事器提供,为处事器和因特网带来了不小的承担。处事器一般为客户欣赏器发生静态网页,由后者简朴地表明并显示出来。根基HTML语言提供了简朴的数据收集机制:文字输入框、复选框、单选钮、列表以及下拉列表等,别的尚有一个按钮,只能由措施划定从头配置表单中的数据,以便回传给处事器。用户提交的信息通过所有Web处事器均能支持的“通用网关接口”(CGI)回传随处事器。包括在提交数据中的文字指示CGI该如何操纵。最常见的动作是运行位于处事器的一个措施。谁人措施一般生存在一个名为“cgi-bin”的目次中(按下Web页内的一个按钮时,请留意一下欣赏器顶部的地点窗,常常都能发明“cgi-bin”的字样)。大大都语言都可用来体例这些措施,但个中最常见的是Perl。这是由于Perl是专为文字的处理惩罚及表明而设计的,所以能在任那里事器上安装和利用,无论回收的处理惩罚器或操纵系统是什么。

注:本节内容改编自某位作者的一篇文章。那篇文章最早呈此刻位于www.mainspring.com的Mainspring上。本节的回收已征得了对方的同意。

本日的很多Web站点都严格地成立在CGI的基本上,事实上险些所有工作都可用CGI做到。独一的问题就是响应时间。CGI措施的响应取决于需要传送几多数据,以及处事器和因特网两方面的承担有多重(并且CGI措施的启动较量慢)。Web的早期设计者并未预推测当初绰绰有余的带宽很快就变得不足用,这正是大量应用充斥网上造成的功效。譬喻,此时任何形式的动态图形显示都险些不能连贯地显示,因为此时必需建设一个GIF文件,再将图形的每种变革从处事器通报给客户。并且各人应该对输入表单上的数据校验有着深刻的体会。本来的要领是我们按下网页上的提交按钮(Submit);数据回传给处事器;处事器启动一个CGI措施,查抄用户输入是否有错;名目化一个HTML页,通知大概碰着的错误,并将这个页回传给我们;随后必需回到原先谁人表单页,再输入一遍。这种要领不只速度很是慢,也显得很是繁琐。
办理的步伐就是客户端的措施设计。运行Web欣赏器的大大都呆板都拥有足够强的本领,可举办其他大量事情。与此同时,原始的静态HTML要领仍然可以回收,它会一直等随处事器送回下一个页。客户端编程意味着Web欣赏器可得到更充实的操作,并可有效改进Web处事器的交互(互动)本领。
对客户端编程的接头与通例编程问题的接头并没有太大的区别。回收的参数必定是沟通的,只是运行的平台差异:Web欣赏器就象一个有限的操纵系统。无论如何,我们仍然需要编程,仍然会在客户端编程中碰着大量问题,同时也有许多办理的方案。在本节剩下的部门里,我们将对这些问题举办一番归纳综合,并先容在客户端编程中采纳的对策。

1. 插件
朝客户端编程迈进的时候,最重要的一个问题就是插件的设计。操作插件,措施员可以利便地为欣赏器添加新成果,用户只需下载一些代码,把它们“插入”欣赏器的适当位置即可。这些代码的浸染是汇报欣赏器“以后刻开始,你可以举办这些新勾当了”(仅需下载这些插入一次)。有些快速和成果强大的行为是通过插件添加到欣赏器的。但插件的编写并不是一件简朴的任务。在我们构建一个特定的站点时,大概并不但愿涉及这方面的事情。对客户端措施设计来说,插件的代价在于它答允专业措施员设计出一种新的语言,并将那种语言添加到欣赏器,同时不必颠末欣赏器原创者的许可。由此可以看出,插件实际是欣赏器的一个“后门”,答允建设新的客户端措施设计语言(尽量并非所有语言都是作为插件实现的)。

2. 剧本体例语言
插件造成了剧本体例语言的爆炸性增长。通过这种剧本语言,可将用于本身客户端措施的源码直接插入HTML页,而对那种语言举办表明的插件会在HTML页显示的时候自动激活。剧本语言一般都倾向于只管简化,易于领略。并且由于它们是从属于HTML页的一些简朴正文,所以只需向处事器发出对谁人页的一次请求,即可很是快地载入。缺点是我们的代码全部袒露在人们眼前。另一方面,由于凡是不消剧本体例语言做过份巨大的工作,所以这个问题暂且可以放在一边。
剧本语言真正面向的是特定范例问题的办理,个中主要涉及如何建设更富厚、更具有互动本领的图形用户界面(GUI)。然而,剧本语言也许能办理客户端编程中80%的问题。你遇到的问题大概完全就在那80%内里。并且由于剧本体例语言的宗旨是尽大概地简化与快速,所以在思量其他更巨大的方案之前(如Java及ActiveX),首先应想一下剧本语言是否可行。
今朝接头得最多的剧本体例语言包罗JavaScript(它与Java没有任何关系;之所以叫谁人名字,完全是一种市场计策)、VBScript(同Visual Basic很相似)以及Tcl/Tk(来历于风行的跨平台GUI结构语言)。虽然尚有其他很多语言,也有很多正在开拓中。
JavaScript也许是目常用的,它获得的支持也最全面。无论NetscapeNavigator,Microsoft Internet Explorer,照旧Opera,今朝都提供了对JavaScript的支持。除此以外,市面上报告JavaScript的书籍也要比报告其他语言的书多得多。有些东西还能操作JavaScript自动发生网页。虽然,假如你已经有Visual Basic可能Tcl/Tk的深厚功底,虽然用它们要简朴得多,起码可以制止进修新语言的烦恼(办理Web方面的问题就已经够让人头痛了)。

#p#分页标题#e#

3. Java
假如说一种剧本体例语言能办理80%的客户端措施设计问题,那么剩下的20%又该怎么办呢?它们属于一些高难度的问题吗?今朝最风行的方案就是Java。它不只是一种成果强大、高度安详、可以跨平台利用以及国际通用的措施设计语言,也是一种具有旺盛生命力的语言。对Java的扩展是不绝举办的,提供的语言特性和库可以或许很好地办理传统语言不能办理的问题,好比多线程操纵、数据库会见、连网措施设计以及漫衍式计较等等。Java通过“措施片”(Applet)巧妙地办理了客户端编程的问题。
措施片(或“小应用措施”)是一种很是小的措施,只能在Web欣赏器中运行。作为Web页的一部门,措施片代码会自动下载返来(这和网页中的图片差不多)。激活措施片后,它会执行一个措施。措施片的一个利益表此刻:通过措施片,一旦用户需要客户软件,软件就可从处事器自动下载返来。它们能自动取得客户软件的最新版本,不会堕落,也没有从头安装的贫苦。由于Java的设计道理,措施员只需要建设措施的一个版本,谁人措施能在险些所有计较机以及安装了Java表明器的欣赏器中运行。由于Java是一种全成果的编程语言,所以在向处事器发出一个请求之前,我们能先在客户端做完尽大概多的事情。譬喻,再也不必通过因特网传送一个请求表单,再由处事器确定个中是否存在一个拼写可能其他参数错误。大大都数据校验事情均可在客户端完成,没有须要坐在计较机前面焦虑地期待处事器的响应。这样一来,不只速度和响应的敏捷度获得了极大的提高,对网络和处事器造成的承担也可以明明减轻,这对保障因特网的流畅是至关重要的。
与剧本措施对比,Java措施片的另一个利益是它回收编译好的形式,所以客户端看不到源码。虽然在另一方面,反编译Java措施片也并不是件难事,并且代码的埋没一般并不是个重要的问题。各人要留意别的两个重要的问题。正如本书以前会讲到的那样,编译好的Java措施片大概包括了很多模块,所以要多次“掷中”(会见)处事器以便下载(在Java 1.1中,这个问题获得了有效的改进——操作Java压缩档,即JAR文件——它答允设计者将所有须要的模块都封装到一起,供用户统一下载)。在另一方面,剧本措施是作为Web页正文的一部门集成到Web页内的。这种措施一般都很是小,可有效淘汰对处事器的点击数。另一个因素是进修方面的问题。不管你平时听别人怎么说,Java都不是一种十分容易便可学会的语言。假如你以前是一名Visual Basic措施员,那么转向VBScript会是一种最快捷的方案。由于VBScript可以办理大大都典范的客户机/处事器问题,所以一旦上手,就很难下定刻意再去进修Java。假如对剧本体例语言较量熟,那么在转向Java之前,发起先熟悉一下JavaScript可能VBScript,因为它们大概已经可以或许满意你的需要,不必经验进修Java的费力进程。

4. ActiveX
在某种水平上,Java的一个有力竞争敌手应该是微软的ActiveX,尽量它回收的是完全差异的一套实现机制。ActiveX最早是一种纯Windows的方案。颠末一家独立的专业协会的尽力,ActiveX此刻已具备了跨平台利用的本领。实际上,ActiveX的意思是“如果你的措施同它的事情情况正常毗连,它就能进入Web页,并在支持ActiveX的欣赏器中运行”(IE固化了对ActiveX的支持,而Netscape需要一个插件)。所以,ActiveX并没有限制我们利用一种特定的语言。好比,假设我们已经是一名有履历的Windows措施员,能纯熟地利用象C++、Visual Basic可能BorlandDelphi那样的语言,就能险些不加任何进修地建设出ActiveX组件。事实上,ActiveX是在我们的Web页中利用“汗青遗留”代码的最佳途径。

#p#分页标题#e#

5. 安详
自动下载和通过因特网运行措施听起来就象是一个病毒制造者的空想。在客户端的编程中,ActiveX带来了最让人头痛的安详问题。点击一个Web站点的时候,大概会伴同HTML网页传回任何数量的对象:GIF文件、剧本代码、编译好的Java代码以及ActiveX组件。有些是无害的;GIF文件不会对我们造成任何危害,而剧本体例语言凡是在本身可做的工作上有着很大的限制。Java也设计成在一个安详“沙箱”里在它的措施片中运行,这样可防备操纵位于沙箱以外的磁盘可能内存区域。
ActiveX是所有这些内里最让人担忧的。用ActiveX编写措施就象体例Windows应用措施——可以做本身想做的任何工作。下载回一个ActiveX组件后,它完全大概对我们磁盘上的文件造成粉碎。虽然,对那些下载返来并不限于在Web欣赏器内部运行的措施,它们同样也大概粉碎我们的系统。从BBS下载返来的病毒一直是个大问题,但因特网的速度使得这个问题变得越发巨大。
今朝办理的步伐是“数字签名”,代码会获得权威机构的验证,显示出它的作者是谁。这一机制的基本是认为病毒之所以会流传,是由于它的体例者匿名的缘故。所以如果去掉了匿名的因素,所有设计者都不得不为它们的行为认真。这好像是一个很好的主意,因为它使措施显得越发正规。但我对它能消除恶意因素持猜疑立场,因为如果一个措施便含有Bug,那么同样会造成问题。
Java通过“沙箱”来防备这些问题的产生。Java表明器内嵌于我们当地的Web欣赏器中,在措施片装载时会查抄所有有嫌疑的指令。出格地,措施片基础没有权力将文件写进磁盘,可能删除文件(这是病毒最喜欢做的工作之一)。我们凡是认为措施片是安详的。并且由于安详对付营建一套靠得住的客户机/处事器系统至关重要,所以会给病毒留下裂痕的所有错误都能很快获得修复(欣赏器软件实际需要强行遵守这些安详法则;而有些欣赏器则答允我们选择差异的安详级别,防备对系统差异水平的会见)。
各人或者会猜疑这种限制是否会故障我们将文件写到当地磁盘。好比,我们有时需要构建一个当地数据库,或将数据生存下来,以便日后离线利用。最早的版本好像每小我私家都能在线做任何敏感的工作,但这很快就变得很是不现实(尽量低价“互联网东西”有一天大概会满意大大都用户的需要)。办理的方案是“签了名的措施片”,它用民众密钥加密算法验证措施片确实来自它所声称的处所。虽然在通过验证后,签了名的一个措施片仍然可以开始排除你的磁盘。但从理论上说,既然此刻可以或许找到建设人“计帐”,他们一般不会干这种蠢事。Java 1.1为数字签名提供了一个框架,在须要时,可让一个措施片“走”到沙箱的外面来。
数字签名漏掉了一个重要的问题,那就是人们在因特网上移动的速度。如下载回一个错误百出的措施,而它很不幸地真的干了某些蠢事,需要多久的时间才气觉察这一点呢?这也许是几天,也大概几周之后。发明白之后,又如何追踪当初闯祸的措施呢(以及它其时的责任有多大)?

6. 因特网和内联网
Web是办理客户机/处事器问题的一种常用方案,所以最好能用沟通的技能办理此类问题的一些“子集”,出格是公司内部的传统客户机/处事器问题。对付传统的客户机/处事器模式,我们面对的问题是拥有多种差异范例的客户计较机,并且很难安装新的客户软件。但通过Web欣赏器和客户端编程,这两类问题都可获得很好的办理。若一个信息网络范围于一家特定的公司,那么在将Web技能应用于它之后,即可称其为“内联网”(Intranet),以示与国际性的“因特网”(Internet)有别。内联网提供了比因特网更大的安详级别,因为可以物理性地节制对公司内部处事器的利用。说到培训,一般只要人们领略了欣赏器的通例观念,就可以很是轻松地把握网页和措施片之间的差别,所以进修新型系统的开销会大幅度淘汰。
安详问题将我们引入客户端编程规模一个好像是自动形成的分支。若措施是在因特网上运行,由于无从知晓它会在什么平台上运行,所以编程时要出格寄望,防御大概呈现的编程错误。需作一些跨平台处理惩罚,以及适当的安详防御,好比回收某种剧本语言可能Java。
但如果在内联网中运行,面对的一些制约因素就会产生变革。全部呆板均为Intel/Windows平台是件很泛泛的工作。在内联网中,需要对本身代码的质量认真。并且一旦发明错误,就可以顿时纠正。除此以外,大概已经有了一些“汗青遗留”的代码,并用较传统的客户机/处事器方法利用那些代码。但在举办进级时,每次都要物理性地安装一道客户措施。挥霍在进级安装上的时间是转移到欣赏器的一项重要原因。利用了欣赏器后,进级就变得易如反掌,并且整个进程是透明和自动举办的。假如然的是牵涉到这样的一个内联网中,最明智的要领是回收ActiveX,而非试图回收一种新的语言来改写措施代码。
面对客户端编程问题令人狐疑的一系列办理方案时,最好的方案是先做一次投资/回报阐明。请总结出问题的全部制约因素,以及什么才是最快的方案。由于客户端措施设计仍然要编程,所以无论如何都该针对本身的特定环境采纳最好的开拓途径。这是筹备面临措施开拓中一些不行制止的问题时,我们可以作出的最佳姿态。

    关键字:

在线提交作业