search
尋找貓咪~QQ 地點 桃園市桃園區 Taoyuan , Taoyuan

尚學堂java學習筆記:客戶端編程

Web最初採用的伺服器-瀏覽器方案可提供互動式內容,但這種交互能力完全由伺服器提供,為伺服器和網際網路帶來了不小的負擔。伺服器一般為客戶瀏覽器產生靜態網頁,由後者簡單地解釋並顯示出來。基本HTML語言提供了簡單的數據收集機制:文字輸入框、複選框、單選鈕、列表以及下拉列表等,另外還有一個按鈕,只能由程序規定重新設置表單中的數據,以便回傳給伺服器。用戶提交的信息通過所有Web伺服器均能支持的通用網關介面」(CGI)回傳到伺服器。包含在提交數據中的文字指示CGI該如何操作。最常見的行動是運行位於伺服器的一個程序。那個程序一般保存在一個名為「cgi-bin」的目錄中(按下Web頁內的一個按鈕時,請注意一下瀏覽器頂部的地址窗,經常都能發現「cgi-bin」的字樣)。大多數語言都可用來編製這些程序,但其中最常見的是Perl。這是由於Perl是專為文字的處理及解釋而設計的,所以能在任何伺服器上安裝和使用,無論採用的處理器或操作系統是什麼。

⑧:本節內容改編自某位作者的一篇文章。那篇文章最早出現在位於的Mainspring上。本節的採用已徵得了對方的同意。

今天的許多Web站點都嚴格地建立在CGI的基礎上,事實上幾乎所有事情都可用CGI做到。唯一的問題就是響應時間。CGI程序的響應取決於需要傳送多少數據,以及伺服器和網際網路兩方面的負擔有多重(而且CGI程序的啟動比較慢)Web的早期設計者並未預料到當初綽綽有餘的帶寬很快就變得不夠用,這正是大量應用充斥網上造成的結果。例如,此時任何形式的動態圖形顯示都幾乎不能連貫地顯示,因為此時必須創建一個GIF文件,再將圖形的每種變化從伺服器傳遞給客戶。而且大家應該對輸入表單上的數據校驗有著深刻的體會。原來的方法是我們按下網頁上的提交按鈕(Submit);數據回傳給伺服器;伺服器啟動一個CGI程序,檢查用戶輸入是否有錯;格式化一個HTML頁,通知可能遇到的錯誤,並將這個頁回傳給我們;隨後必須回到原先那個表單頁,再輸入一遍。這種方法不僅速度非常慢,也顯得非常繁瑣。

解決的辦法就是客戶端的程序設計。運行Web瀏覽器的大多數機器都擁有足夠強的能力,可進行其他大量工作。與此同時,原始的靜態HTML方法仍然可以採用,它會一直等到伺服器送回下一個頁。客戶端編程意味著Web瀏覽器可獲得更充分的利用,並可有效改善Web伺服器的交互(互動)能力。

對客戶端編程的討論與常規編程問題的討論並沒有太大的區別。採用的參數肯定是相同的,只是運行的平台不同:Web瀏覽器就象一個有限的操作系統。無論如何,我們仍然需要編程,仍然會在客戶端編程中遇到大量問題,同時也有很多解決的方案。在本節剩下的部分里,我們將對這些問題進行一番概括,並介紹在客戶端編程中採取的對策。

1. 插件

朝客戶端編程邁進的時候,最重要的一個問題就是插件的設計。利用插件,程序員可以方便地為瀏覽器添加新功能,用戶只需下載一些代碼,把它們插入瀏覽器的適當位置即可。這些代碼的作用是告訴瀏覽器從現在開始,你可以進行這些新活動了」(僅需下載這些插入一次)。有些快速和功能強大的行為是通過插件添加到瀏覽器的。但插件的編寫並不是一件簡單的任務。在我們構建一個特定的站點時,可能並不希望涉及這方面的工作。對客戶端程序設計來說,插件的價值在於它允許專業程序員設計出一種新的語言,並將那種語言添加到瀏覽器,同時不必經過瀏覽器原創者的許可。由此可以看出,插件實際是瀏覽器的一個後門,允許創建新的客戶端程序設計語言(儘管並非所有語言都是作為插件實現的)

2. 腳本編製語言

插件造成了腳本編製語言的爆炸性增長。通過這種腳本語言,可將用於自己客戶端程序的源碼直接插入HTML頁,而對那種語言進行解釋的插件會在HTML頁顯示的時候自動激活。腳本語言一般都傾向於盡量簡化,易於理解。而且由於它們是從屬於HTML頁的一些簡單正文,所以只需向伺服器發出對那個頁的一次請求,即可非常快地載入。缺點是我們的代碼全部暴露在人們面前。另一方面,由於通常不用腳本編製語言做過份複雜的事情,所以這個問題暫且可以放在一邊。

腳本語言真正面向的是特定類型問題的解決,其中主要涉及如何創建更豐富、更具有互動能力的圖形用戶界面(GUI)。然而,腳本語言也許能解決客戶端編程中80%的問題。你碰到的問題可能完全就在那80%裡面。而且由於腳本編製語言的宗旨是儘可能地簡化與快速,所以在考慮其他更複雜的方案之前(JavaActiveX),首先應想一下腳本語言是否可行。

目前討論得最多的腳本編製語言包括JavaScript(它與Java沒有任何關係;之所以叫那個名字,完全是一種市場策略)VBScript(Visual Basic很相似)以及Tcl/Tk(來源於流行的跨平台GUI構造語言)。當然還有其他許多語言,也有許多正在開發中。

JavaScript也許是目常用的,它得到的支持也最全面。無論NetscapeNavigatorMicrosoft Internet Explorer,還是Opera,目前都提供了對JavaScript的支持。除此以外,市面上講述JavaScript的書籍也要比講述其他語言的書多得多。有些工具還能利用JavaScript自動產生網頁。當然,如果你已經有Visual Basic或者Tcl/Tk的深厚功底,當然用它們要簡單得多,起碼可以避免學習新語言的煩惱(解決Web方面的問題就已經夠讓人頭痛了)

3. ActiveX

在某種程度上,Java的一個有力競爭對手應該是微軟的ActiveX,儘管它採用的是完全不同的一套實現機制。ActiveX最早是一種純Windows的方案。經過一家獨立的專業協會的努力,ActiveX現在已具備了跨平台使用的能力。實際上,ActiveX的意思是假如你的程序同它的工作環境正常連接,它就能進入Web頁,並在支持ActiveX的瀏覽器中運行」(IE固化了對ActiveX的支持,而Netscape需要一個插件)。所以,ActiveX並沒有限制我們使用一種特定的語言。比如,假設我們已經是一名有經驗的Windows程序員,能熟練地使用象C++Visual Basic或者BorlandDelphi那樣的語言,就能幾乎不加任何學習地創建出ActiveX組件。事實上,ActiveX是在我們的Web頁中使用歷史遺留代碼的最佳途徑。



熱門推薦

本文由 yidianzixun 提供 原文連結

寵物協尋 相信 終究能找到回家的路
寫了7763篇文章,獲得2次喜歡
留言回覆
回覆
精彩推薦