⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 210001.htm

📁 探索Windows 2000发展策略以及中介层技术设计的基本概念
💻 HTM
📖 第 1 页 / 共 2 页
字号:
<html><body><span  id=Layer1><p><font size=2 color=#3c3c3c face=arial>若说迄今为止,大部份的分散式应用程式都能允许透过浏览器来存取,这是一种很恰当的说法。因为浏览器已成为一种无所不在的工具,所以让应用程式可透过Web存取潜在的意思便是能允许每个人使用。同样地,也因为网际网路已经无所不在,这个样子所带来的好处便是能让你从任何地方存取。虽然使用DCOM建立自订的客户端应用程式来与远端伺服器上的商业逻辑沟通这种情形仍然普遍存在,但是透过浏览器存取已变为一种理所当然、义不容辞的选择。</span><span  id=Layer2></font></p><p><font size=2 color=#3c3c3c face=arial>大部份应用程式必需允许透过浏览器存取</span><span  id=Layer3></font></p><hr><font face=Arial Black color=#3e77d7 size=3><b></b></font><p><font size=2 color=#3c3c3c face=arial>大部份应用程式必需允许透过浏览器存取</span><span  id=Layer4></font></p><hr><p><font size=2 color=#3c3c3c face=arial>Web存取的基本模型并非特别复杂。客户端(典型的浏览器,如Microsoft Internet Explorer)传送要求到Web伺服器(如Microsoft Internet Information Services 5.0,IIS,内含在Microsoft Windows 2000之中的Web伺服器)。这些要求都是透过Hypertext Transfer Protocol (HTTP) 传送。Web伺服器便以一连串资讯回应,同样是透过HTTP传送,然後使用Hypertext Markup Language (HTML) 。</span><span  id=Layer5></font></p><p><font size=2 color=#3c3c3c face=arial>浏览器透过HTTP 存取Web伺服器,取回以HTML标注的资讯</span><span  id=Layer6></font></p><hr><font face=Arial Black color=#3e77d7 size=3><b></b></font><p><font size=2 color=#3c3c3c face=arial>浏览器透过HTTP 存取Web伺服器,取回以HTML标注的资讯</span><span  id=Layer7></font></p><hr><p><font size=2 color=#3c3c3c face=arial>然而较复杂的部份是在於,从Web伺服器回传资讯的方式可能有很多种。若使用的是IIS伺服器,它所回传的资讯可能由许多的资源而来,如图10-1所示。这些资源包含:</span><span  id=Layer8></font></p><font size=2 color=#3c3c3c face=arial><ul><font size=2 face=arial color=#3c3c3c><li><font size=2 face=arial color=#3e80d7><b>&nbsp;一般的档案</span><span  id=Layer9>&nbsp;</b></font>这些档案包含HTML,IIS读取这些档案,然後传送到浏览器。这些档案中的HTML也可以包含简单的内嵌程式,通常称之为script。这些script以非常简单的开发语言撰写,诸如JavaScript与Microsoft VBScript。当浏览器取得这些script时便进行执行的动作。</span><span  id=Layer10></li><br></font><font size=2 face=arial color=#3c3c3c><li><font size=2 face=arial color=#3e80d7><b>&nbsp;Common Gateway Interface</span><span  id=Layer11>&nbsp;</b></font>(</span><span  id=Layer12><font size=2 face=arial color=#3e80d7><b>&nbsp;CGI</span><span  id=Layer13>&nbsp;</b></font>)</span><span  id=Layer14><font size=2 face=arial color=#3e80d7><b>&nbsp;应用程式</span><span  id=Layer15>&nbsp;</b></font>CGI是一开始应用在Web伺服器与应用程式介面间最广泛使用的技术。通常一个CGI应用程式是以Perl或C++这样的程式撰写的,你可以从客户端传送参数,然後因应客户端的要求,动态地产生HTML与其它的资讯回传之。针对每个客户端提出的要求,CGI会产生一个新的行程以便处理这个要求。</span><span  id=Layer16></li><br></font><font size=2 face=arial color=#3c3c3c><li><font size=2 face=arial color=#3e80d7><b>&nbsp;Internet Server API</span><span  id=Layer17>&nbsp;</b></font>(</span><span  id=Layer18><font size=2 face=arial color=#3e80d7><b>&nbsp;ISAPI</span><span  id=Layer19>&nbsp;</b></font>)</span><span  id=Layer20><font size=2 face=arial color=#3e80d7><b>&nbsp;延伸程式库与过滤器</span><span  id=Layer21>&nbsp;</b></font>ISAPI和CGI相似的地方在於,从浏览器传送的参数可以透过IIS所实作的一个简单的介面传送到应用程式,再将结果送回浏览器。而不同之处是ISAPI应用程式撰写成DLL的型式,通常以C++撰写,让ISAPI执行更有效率,但同样它也难以撰写。</span><span  id=Layer22></li><br></font><font size=2 face=arial color=#3c3c3c><li><font size=2 face=arial color=#3e80d7><b>&nbsp;Active Server Page</span><span  id=Layer23>&nbsp;</b></font>(</span><span  id=Layer24><font size=2 face=arial color=#3e80d7><b>&nbsp;ASP</span><span  id=Layer25>&nbsp;</b></font>)  就和HTML档案可以包含script,传送到浏览器,并透过浏览器执行一样,ASP也可以包含由IIS执行的script。一个ASP网页是一个储存在一般HTML档案中的script,不过它将在伺服器上执行,再将结果传送回浏览器。它们通常都是以相当简单的语言建立的,如VBScript。这些程式从浏览器取得输入的资讯,然後将结果回传,很像CGI应用程式与ISAPI DLL。由於非常容易撰写,ASP俨然为今日最常用在建立IIS应用程式的方法。</span><span  id=Layer26></li><br></font></ul></font><p><font size=2 color=#3c3c3c face=arial>IIS支援许多机制,以产生回传到客户端的资讯</span><span  id=Layer27></font></p><hr><font face=Arial Black color=#3e77d7 size=3><b></b></font><p><font size=2 color=#3c3c3c face=arial>IIS支援许多机制,以产生回传到客户端的资讯</span><span  id=Layer28></font></p><hr><br><center><a target=_new href=imagesh/10-1.gif><img border=0 src='imagesl/10-1.gif'></a></center></span><span  id=Layer29><center><table border=0 ><td align=center><font color=#3c3c3c face=arial size=2><font size=2 face=arial color=#3e80d7><b>&nbsp;图 10-1</span><span  id=Layer30>&nbsp;</b></font>IIS回传的资讯可能从许多地方而来的</span><span  id=Layer31></td></table></font></center><p><font size=2 color=#3c3c3c face=arial>最後这叁种选择:CGI应用程式、ISAPI DLL与ASP网页,也可以建立COM物件,并使用COM物件。它们可以存取交易性的COM应用程式,透过ActiveX Data Objects (ADO),经由Active Directory Services Interface (ADSI),Microsoft Message Queuing (MSMQ)等等来储存资料。若要了解上述所有东西运作的原理,那麽从简短的Web基本技术说明开始着手是很有帮助的。</span><span  id=Layer32></font></p><p><font size=2 color=#3c3c3c face=arial>IIS应用程式可以使用COM物件</span><span  id=Layer33></font></p><hr><font face=Arial Black color=#3e77d7 size=3><b></b></font><p><font size=2 color=#3c3c3c face=arial>IIS应用程式可以使用COM物件</span><span  id=Layer34></font></p><hr><a name=210001><font color=#3e70d7 face=arial size=5><b>Web基础概念</span><span  id=Layer35></b></font><p><font size=2 color=#3c3c3c face=arial>Web已快速地风行世界,在西方世界几乎每个人都对它运作的情形具备了基本的概念。不过,了解包含在Windows 2000的服务,以便用来建立Web存取的应用程式还需要比平均水平更多的知识。本章的目标就是提供这些知识。</span><span  id=Layer36></font></p><font color=#3e72d7 face=arial size=4><b>存取HTML档案</span><span  id=Layer37></b></font><p><font size=2 color=#3c3c3c face=arial>现在的学生都知道,存取Web上的资讯只消在浏览器上输入感兴趣的Uniform Resource Locator (URL)。一个URL通常包含通讯协定的名称、Domain Name System (DNS) 伺服器名称,以及一些资源所在的路径,如伺服器上的一个档案。举例来说,若在浏览器上输入URL http://www.qwickbank.com/info.htm,就是要求浏览器先使用DNS找寻对应到 www.qwickbank.com 这台机器的IP位址。(这个步骤展示在</span><span  id=Layer38>&nbsp;<a target='_new' href=201.htm#>第一章</span><span  id=Layer39></a>&nbsp;的范例中;为了简单起见,在此不再讨论。) 接着浏览器便使用HTTP存取这台机器,然後回传info.htm档案的内容。这个范例URL的档案名称以.htm结束,指明这个档案中包含HTML。在这个范例中,IIS只需要读取这个档案,然後再将传送回浏览器重新描绘,如图10-2所示。若你已经很熟悉HTML,你将会发现这个简单的范例只显示「An HTML Example」标头,然後在两条水平线之间显示「Hello」这个字。</span><span  id=Layer40></font></p><p><font size=2 color=#3c3c3c face=arial>一个URL可以参考到伺服器机器上的HTML档案</span><span  id=Layer41></font></p><hr><font face=Arial Black color=#3e77d7 size=3><b></b></font><p><font size=2 color=#3c3c3c face=arial>一个URL可以参考到伺服器机器上的HTML档案</span><span  id=Layer42></font></p><hr><br><center><a target=_new href=imagesh/10-2.gif><img border=0 src='imagesl/10-2.gif'></a></center></span><span  id=Layer43><center><table border=0 ><td align=center><font color=#3c3c3c face=arial size=2><font size=2 face=arial color=#3e80d7><b>&nbsp;图10-2</span><span  id=Layer44>&nbsp;</b></font>URL上指定一个要求http://www.qwickbank.com/info.htm让IIS传送回info.htm档案的内容。</span><span  id=Layer45></td></table></font></center><p><font size=2 color=#3c3c3c face=arial>在客户端要求一个内嵌script的HTML档案执行是非常容易的。再次强调,浏览器传送一个URL,指定某台伺服器上的一个HTML档案,这台伺服器回传这个档案,然後浏览器便进行重绘的动作,如</span><span  id=Layer46>&nbsp;<a href="#10-3" target=_new>图10-3</span><span  id=Layer47></a>&nbsp;所示。不同点在於这个档案包含一个script,浏览器将会执行script中的指令,然後显示执行的结果。虽然在此并没有详细描述,图10-3展示的这个简单的script,显示的资讯和上一个范例相同:标头之後的两条水平线之间跟随着一个字「Hello」。</span><span  id=Layer48></font></p><p><font size=2 color=#3c3c3c face=arial>HTML档案中可以包含在浏览器上执行的script</span><span  id=Layer49></font></p><hr><font face=Arial Black color=#3e77d7 size=3><b></b></font><p><font size=2 color=#3c3c3c face=arial>HTML档案中可以包含在浏览器上执行的script</span><span  id=Layer50></font></p><hr><p><font size=2 color=#3c3c3c face=arial>虽然在此没有显示,一个HTML网页也可能要求下载一个称为ActiveX Control的COM元件。它可以在Internet Explorer中执行,与使用者、与网页上的script程式码互动。</span><span  id=Layer51></font></p><hr><font face=Arial Black color=#3e77d7 size=3><b> 附注</b></font><p><font size=2 color=#3c3c3c face=arial>虽然在此没有显示,一个HTML网页也可能要求下载一个称为ActiveX Control的COM元件。它可以在Internet Explorer中执行,与使用者、与网页上的script程式码互动。</span><span  id=Layer52></font></p><hr><a name="10-3"></span><span  id=Layer53><br><center><a target=_new href=imagesh/10-3.gif><img border=0 src='imagesl/10-3.gif'></a></center></span><span  id=Layer54><center><table border=0 ><td align=center><font color=#3c3c3c face=arial size=2><font size=2 face=arial color=#3e80d7><b>&nbsp;图10-3</span><span  id=Layer55>&nbsp;</b></font>IIS所传送的HTML中可以包含script-简单的程式,在浏览器上执行。</span><span  id=Layer56></td></table></font></center><p><font size=2 color=#3c3c3c face=arial>尽管前面已描述,一个URL可能会指定一个不单纯只包含HTML的档案,而是包含某些可执行的程式码。这些程式码的长相则视它为何类的应用程式而定:CGI、ISAPI,或ASP。不过在这些情形下,IIS载入指定的档案,然後应用程式便执行。这些应用程式产生的结果都送交给IIS,这些资讯一般都是包装在HTML中。IIS再将之传送到浏览器重绘。</span><span  id=Layer57></font></p><p><font size=2 color=#3c3c3c face=arial>URL可以参考到伺服器机器上的应用程式</span><span  id=Layer58></font></p><hr><font face=Arial Black color=#3e77d7 size=3><b></b></font><p><font size=2 color=#3c3c3c face=arial>URL可以参考到伺服器机器上的应用程式</span><span  id=Layer59></font></p><hr><p><font size=2 color=#3c3c3c face=arial>若要产生结果,应用程式可能需存取资料库,呼叫其它的应用程式,或执行任何必要的处理过程。建立可透过Web存取的应用程式是本章的重头戏,因此稍後再更详细描述。</span><span  id=Layer60></font></p><font color=#3e72d7 face=arial size=4><b>了解HTTP</span><span  id=Layer61></b></font><p><font size=2 color=#3c3c3c face=arial>虽然对HTTP真正运行的情形并非相当地了解,不过你还是有使用到浏览器的可能。也很有可能建立一个愚蠢的Web应用程式,一点也不令人满意。要领会网站开发的基础概念至少需要知道一些关於这个广为使用的协定之资讯。</span><span  id=Layer62></font></p><p><font size=2 color=#3c3c3c face=arial><font size=2 face=arial color=#3e80d7><b>&nbsp;通讯协定基础概念</span><span  id=Layer63>&nbsp;</b></font>都用在特殊的目的上,可透过浏览器呼叫。Method名称与它的参数将跨越一个TCP连线,以简单的字串传送,同样的结果也会以相同的方法传回来。最令人感兴趣的HTTP method为:</span><span  id=Layer64></font></p><font size=2 color=#3c3c3c face=arial><ul><font size=2 face=arial color=#3c3c3c><li><font size=2 face=arial color=#3e80d7><b>&nbsp;GET</span><span  id=Layer65>&nbsp;</b></font>允许客户端取得资讯。GET回应的资讯包含一个讯息内文,以及一些基本的标头资讯,如内文包含的资讯类型。可能的类型(就是所谓的Multipurpose Internet Mail Extensions类型,即MIME)包含text/html、image/gif、image/jpeg等等。在前面图片中显示HTML档案的要求,事实上是使用GET method建造的。</span><span  id=Layer66></li><br></font><font size=2 face=arial color=#3c3c3c><li><font size=2 face=arial color=#3e80d7><b>&nbsp;HEAD</span><span  id=Layer67>&nbsp;</b></font>与GET回传相同的资讯,唯一的例外是它不回传讯息内文。</span><span  id=Layer68></li><br></font><font size=2 face=arial color=#3c3c3c><li><font size=2 face=arial color=#3e80d7><b>&nbsp;POST</span><span  id=Layer69>&nbsp;</b></font>允许客户端传送资讯到Web伺服器。通常使用者输入的资讯都是透过表单(Form)传送。</span><span  id=Layer70></li><br></font></ul></font><p><font size=2 color=#3c3c3c face=arial>HTTP定义一组method让客户端呼叫</span><span  id=Layer71></font></p><hr><font face=Arial Black color=#3e77d7 size=3><b></b></font><p><font size=2 color=#3c3c3c face=arial>HTTP定义一组method让客户端呼叫</span><span  id=Layer72></font></p><hr><p><font size=2 color=#3c3c3c face=arial>在一个HTTP method呼叫之前,Secure Sockets Layer (SSL)交换的动作可能如</span><span  id=Layer73>&nbsp;<a target='_new' href=204.htm#>第四章</span><span  id=Layer74></a>&nbsp;所描述般的发生。在这个情况下,在传送的过程中,HTTP交换的动作将会加密。将HTTP与SSL结合在一起使用有时也称为HTTPS。当浏览器存取一个典型的网页,这个网页中可能包含许多不同的元素:HTML、参考到许多不同的图型档案等等。然而网页中所有的元素并非以一个单独的HTTP要求 (HTTP request) 转送。而是发行多个GET,每一个转送网页特定的一部份。在HTTP 1.1,每个GET会额外建立一个TCP连线。现今,IIS与许多的Web伺服器所支援HTTP 1.1 可以在一个单独的TCP连线发行多个GET要求。Web伺服器本身并不会追踪所有的要求是否从同一个客户端而来的事实。对於伺服器来说,每个GET都是独立的,它并不关心要求是否来自同一个浏览器。另一种说法,互动的动作是无状态的,因为HTTP接收端实作时并不会维护客户端的状态资讯。伺服器单纯地将每个GET所要求的资讯传回,将每个要求视为完全独立、毫无相关的。HTTP原始设计的目的是希望存取包含HTML的静态档案,因此这个模型完全符合这个要求。</span><span  id=Layer75></font></p><p><font size=2 color=#3c3c3c face=arial>HTTP视每个method的呼叫为独立的要求</span><span  id=Layer76></font></p><hr><font face=Arial Black color=#3e77d7 size=3><b></b></font><p><font size=2 color=#3c3c3c face=arial>HTTP视每个method的呼叫为独立的要求</span><span  id=Layer77></font></p><hr><p><font size=2 color=#3c3c3c face=arial>若要让载入网页的动作看起来较流畅,也许是为了加快它的速度,Internet Explorer建立许多的执行绪来处理一个单一使用者的要求,然後每一条执行绪发行一个GET指令来负责处理这个网页上的一个元素。</span><span  id=Layer78></font></p><hr><font face=Arial Black color=#3e77d7 size=3><b> 附注</b></font><p><font size=2 color=#3c3c3c face=arial>若要让载入网页的动作看起来较流畅,也许是为了加快它的速度,Internet Explorer建立许多的执行绪来处理一个单一使用者的要求,然後每一条执行绪发行一个GET指令来负责处理这个网页上的一个元素。</span><span  id=Layer79></font></p><hr><p><font size=2 color=#3c3c3c face=arial>然而在动态的Web应用程式世界中,它就不具有太大的意义。若想要知道为何这个简单的解决方案会导致一些问题,假想你希望透过网际网路存取在QwickBank的银行帐户。使用浏览器,输入帐号与密码登入,接着发出一些要求:检查帐户馀额、转帐...等等。对於你来说,这些要求都视为一个单独的「session」:登入一次、处理交易,然後离去。不过HTTP协定内建并无session的概念。对於它来说,你发出的每个要求都是独立的。若为了让你只登入一次,然後在你拜访的各个网页上存取你一开始输入的资讯,如姓名,则需将session的概念移植到这一连串的无状态HTTP互动动作。为了这类的状态管理可运行,HTTP允许你使用cookie。运作的情况描述於下文。</span><span  id=Layer80></font></p><p><font size=2 color=#3c3c3c face=arial>建立Web应用程式时通常需要追踪Session</span><span  id=Layer81></font></p><hr><font face=Arial Black color=#3e77d7 size=3><b></b></font><p><font size=2 color=#3c3c3c face=arial>建立Web应用程式时通常需要追踪Session</span><span  id=Layer82></font></p><hr><p><font size=2 color=#3c3c3c face=arial><font size=2 face=arial color=#3e80d7><b>&nbsp;建立Session:Cookie</span><span  id=Layer83>&nbsp;</b></font>Cookie是一个简单的位元组字串,这个字串会在Web伺服器与浏览器之间来来回回间传送。预设任何东西都可以放到这个cookie中,IIS使用一个相当复杂的演算法,以目前的时间,加上一些乱数...等等来产生cookie。不过不管cookie中包含的东西为何,每个客户端的cookie都是唯一的。若IIS接收一个从不含cookie的浏览器而来的要求,便可以在记忆体中,也可能在硬碟上建立一个cookie,然後将送回浏览器。浏览器将cookie储存在记忆体,或许储存在硬碟上,然後每次对伺服器发出要求时,便将cookie送回伺服器。因为每个客户端发出的要求中都包含同样的cookie,所以这个动作能让IIS判断出这一连串的要求全部都是同一个session的一部份。</span><span  id=Layer84></font></p><p><font size=2 color=#3c3c3c face=arial>Cookie允许Web伺服器辨识同一个Session所发出的要求</span><span  id=Layer85></font></p><hr><font face=Arial Black color=#3e77d7 size=3><b></b></font><p><font size=2 color=#3c3c3c face=arial>Cookie允许Web伺服器辨识同一个Session所发出的要求</span><span  id=Layer86></font></p><hr><p><font size=2 color=#3c3c3c face=arial>当IIS接收一个不含cookie的浏览器发出的要求後,IIS可以开始一个新的session。不过它如何得知一个session已结束与否呢?其中一个解决方案便是明确地通知IIS session已经结束。另一个方式便是在每一个session中设定一个计时器,若在这个时间周期内没有收到从浏览器而来的要求,便单方面地结束这个session。使用者也可能在第一次session逾期後,而且在使用者的浏览器或IIS重新启动之前再度发出要求。若这种情形发生,这些要求将会携带相同的cookie,不过IIS会为这个使用者开始一个新的session。</span><span  id=Layer87></font></p><p><font size=2 color=#3c3c3c face=arial>若使用者发出的要求一段时间後上未能处理,Session会逾时</span><span  id=Layer88></font></p><hr><font face=Arial Black color=#3e77d7 size=3><b></b></font><p><font size=2 color=#3c3c3c face=arial>若使用者发出的要求一段时间後上未能处理,Session会逾时</span><span  id=Layer89></font></p><hr><p><font size=2 color=#3c3c3c face=arial>某些Web应用程式环境,如ASP,明确的提供对session的支援。ASP程式设计师可以忽略cookie的存在,完全依赖IIS来管理session。然而其它的环境除了拥有传送cookie,接收cookie的能力之外,并没有内建对session的支援。CGI应用程式与ISAPI DLL的程式设计师若想将一连串的要求视为同一个session,就必须明确地透过cookie来达成,在此没有内建的支援。</span><span  id=Layer90></font></p><p><font size=2 color=#3c3c3c face=arial>ASP内建支援以Cookie为基础的Session管理</span><span  id=Layer91></font></p><hr><font face=Arial Black color=#3e77d7 size=3><b></b></font><p><font size=2 color=#3c3c3c face=arial>ASP内建支援以Cookie为基础的Session管理</span><span  id=Layer92></font></p><hr><p><font size=2 color=#3c3c3c face=arial>若一个cookie单独用来将多个HTTP要求组成一个单独的session,那麽这个cookie的值为何是无所谓的。只要这个伺服器看到的cookie相互不同,Web伺服器都能够判断哪些要求是属於哪个session的。同时当浏览器关闭时,预设会从客户端删除cookie。不过也有可能将有用的资讯储存到cookie,然後要求浏览器将cookie储存在硬碟中以备将来使用。举例来说,若一个Web应用程式要求使用者输入姓名,则姓名资料可以放到cookie中,然後送回浏览器。若应用程式设定了cookie的有效期限,则浏览器会将它写到客户端机器上的硬碟中,截至有效期限後才将之删除。下回使用者存取这个应用程式时,浏览器便传送这个cookie,则应用程式就可以用这个使用者的姓名来致欢迎词。你也可以建立索引化的cookie,内含多个值,允许将关於使用者的所有资讯储存到客户端的机器上。</span><span  id=Layer93></font></p><p><font size=2 color=#3c3c3c face=arial>Cookie能包含使用者的资讯,如他的姓名</span><span  id=Layer94></font></p><hr><font face=Arial Black color=#3e77d7 size=3><b></b></font><p><font size=2 color=#3c3c3c face=arial>Cookie能包含使用者的资讯,如他的姓名</span>
	</body></html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -