狠狠色丁香婷婷综合尤物/久久精品综合一区二区三区/中国有色金属学报/国产日韩欧美在线观看 - 国产一区二区三区四区五区tv

LOGO OA教程 ERP教程 模切知識(shí)交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

在Web頁面中執(zhí)行Windows程序

admin
2010年7月7日 23:36 本文熱度 6005
[p]現(xiàn)在許多公司都面臨一個(gè)難題:如何在web環(huán)境中執(zhí)行存在的windows應(yīng)用程序。這里就介紹實(shí)現(xiàn)這個(gè)功能的技術(shù),它爭(zhēng)取對(duì)代碼做最小的改變,完成在windows環(huán)境中應(yīng)做的一切。 [/p]
[p][br]現(xiàn)存的windows應(yīng)用程序[/p]
[p] [/p]
[p]  這里想要在web中執(zhí)行的windows例子程序是非常簡(jiǎn)單的,它是用vb編寫的,其中有一個(gè)表單。運(yùn)行時(shí),在表單上顯示雇員的信息,這些信息來源于access數(shù)據(jù)庫的一個(gè)表。表單上設(shè)有first、next、previous 和 last按鈕,從而允許用戶瀏覽記錄。同時(shí),還可以通過按鈕add、delete 和 update來改變數(shù)據(jù)。這個(gè)程序通過一個(gè)com類來與數(shù)據(jù)庫通信,它有下面的方法:[/p]
[p]addemployee() 在表中添加一個(gè)記錄,保存新雇員的信息 [br]updateemployee() 更新一個(gè)記錄 [br]deleteemployee() 刪除一個(gè)記錄 [br]getemployees() 獲取一個(gè)雇員的信息 [/p]
[p] [/p]
[p]程序正常運(yùn)行時(shí),瀏覽器顯示如下:[/p]
[p][br]開發(fā)web應(yīng)用程序[/p]
[p]  在傳統(tǒng)的web應(yīng)用程序中,大多數(shù)的處理都是在服務(wù)器端完成的。這里,我們將嘗試在客戶端做一些處理,以減少服務(wù)器上的工作量。也就是,讓客戶端完成顯示信息的處理工作,并將商業(yè)規(guī)則和數(shù)據(jù)庫存取留給服務(wù)器端。這就象一個(gè)n層處理模型。[/p]
[p]  當(dāng)用戶需要訪問另一個(gè)不同的數(shù)據(jù)時(shí),我們也不想從服務(wù)器上再調(diào)入整個(gè)web頁面,因此,需要找到一個(gè)web客戶端在后臺(tái)與web服務(wù)器交流信息的方法。這個(gè)例子中,我們使用了微軟公司的xmlhttp com對(duì)象組件,它是隨internet explorer 5.0而來的。當(dāng)然,也可以編寫一個(gè)功能類似的java applet來克服這個(gè)局限。[/p]
[p] [/p]
[p]服務(wù)器端的代碼[/p]
[p]  讓我們從研究vb應(yīng)用程序的com類到web的每一個(gè)方法開始,這可以通過編寫asp頁面來調(diào)用com類中的每個(gè)方法實(shí)現(xiàn)(addemployee.asp, updateemployee.asp, deleteemployee.asp, getemployee.asp)。 明白了這些,就能夠在web中存取com類方法了。[/p]
[p]  asp頁面應(yīng)該能夠接受與com類一樣的參數(shù),這些頁面向原始的com類發(fā)送調(diào)用。這里主要的區(qū)別就是所有的輸出是以xml格式的。我們使用另外一個(gè)叫xmlconverter的com類,轉(zhuǎn)換方法的輸出為xml格式。xmlconverter的代碼包含在下載文件中,它有一個(gè)函數(shù),能夠接受一個(gè)ado記錄集做為參數(shù),并且轉(zhuǎn)換為一個(gè)xml文檔。實(shí)現(xiàn)這個(gè)目的的函數(shù)例子可以從internet上很容易地找到,比如:[/p]
[p][url=http://vbxml.com/xml/guides/developers/ado_persist_xml.asp]http://vbxml.com/xml/guides/developers/ado_persist_xml.asp[/url][/p]
[p]  我們也許曾經(jīng)使用過ado記錄集的save函數(shù),加上adpersistxml,來實(shí)現(xiàn)按照xml格式保存,但是在這里,為了簡(jiǎn)單起見,我們?nèi)允褂镁幹频暮瘮?shù)。[/p]
[p]下面的代碼來自getemployees.asp,它執(zhí)行g(shù)etemployees方法,從而可以讓你清晰地看到這種技術(shù):[/p]
[p][/p]
[p][br]然后,用同樣的方式來創(chuàng)建頁面addemplyee.asp、deleteemployee.asp和updateemployee.asp。[/p]
[p]客戶端的代碼[/p]
[p]  現(xiàn)在準(zhǔn)備編寫客戶端代碼,首先,讓我們仔細(xì)看看vb應(yīng)用程序在調(diào)用后如何顯示信息。在vb表單的on_load方法(參見下面的代碼)中,我們調(diào)用了com對(duì)象組件getemployees方法,這個(gè)方法返回一個(gè)附帶雇員信息的ado記錄集。ado記錄集的movefirst()、movenext()以及 movelast() 方法建立了記錄瀏覽的方法。[/p]
[p]private sub form_load()[br]'create the employeemgr object[br]set objemplyeemgr = new clsemployeemgr[/p]
[p]'obtain the employee records in a adodb.recordset[br]set rst = objemplyeemgr.getemployees[br]rst.movefirst[br]displaycurrentrecord[br]end sub[/p]
[p][br]   在這種情況下,我們有一個(gè)asp頁面getemployees.asp,它給出了做為xml文檔的信息。所以我們將在web客戶端建立一個(gè)xmldom對(duì)象,并且調(diào)入由getemployees.asp提供的信息。在這個(gè)例子中,我們使用microsoft dom xml來解析。關(guān)于dom xml解析的完整文檔,請(qǐng)參考msdn有關(guān)文章,比如 xml dom objects。[/p]
[p]  另一個(gè)較好的解決方法是使用純java/javascript,它同時(shí)可以在非internet explorer的瀏覽器上應(yīng)用。這里,我們?nèi)允褂脁mlhttp對(duì)象,它可以讓web客戶端建立一個(gè)到web服務(wù)器的http請(qǐng)求。關(guān)于對(duì)xml http的詳細(xì)描述,請(qǐng)參考msdn上的文檔。 [/p]
[p]//create an xmldom on the web client machine[br]var xmldoc = new activexobject("microsoft.xmldom");[/p]
[p]// node pointing at root node of the xml document[br]var noderoot;[/p]
[p]// node to point at current record[br]var nodecurrentrecord;[/p]
[p]// integer pointing at the current record number[br]var ncurrentindex = 0;[/p]
[p][br]//create the microsoft xmlhttp object on the web client machine[br]//this would have to be present and registered on the client machine[br]//installing internet explorer 5.0 satisfies this requirement[br]var objhttprequest = new activexobject("microsoft.xmlhttp");[/p]
[p]//open a http connection to the url in strurl[br]objhttprequest.open ("get", strurl, false, null, null);[/p]
[p]//send the request[br]objhttprequest.send();[/p]
[p]//obtain the response received to the xmlresponse variable[br]//this response would be the xml document returned by the web server[br]var xmlresponse = objhttprequest.responsetext[/p]
[p]//since the response is an xml document we can load it to an xmldoc object[br]xmldoc.loadxml (xmlresponse);[/p]
[p]//set noderoot to point at the root of the xml document[br]noderoot = xmldoc.documentelement;[/p]
[p][br]   從上面我們了解了xml文檔的結(jié)構(gòu),現(xiàn)在可以仔細(xì)研究xml文檔對(duì)象了。我們將編寫一個(gè)客戶端的javascript函數(shù) rstmovefirst(),它可以移動(dòng)當(dāng)前記錄指針到第1條,這與ado記錄集的movefirst方法類似:[/p]
[p]function rstmovefirst() {[br]//error trap for empty record set[br]if (noderoot.childnodes.length; < 1) {[/p]
[p]//if the root node does not have any child nodes then there are[br]//no "records"[br]return false;[br]} [br]ncurrentindex = 0;[/p]
[p]//set the nodecurrentrecord to point at the 0th child of the [br]//xml document. the 0th child would be the first record.[br]// noderoot is the xml document? documentelement[br]nodecurrentrecord = noderoot.childnodes(ncurrentindex);[/p]
[p]//return success[br]return true;[br]} [/p]
[p][br]   同樣,我們可以編寫rstmovenext()和 rstmovelast()函數(shù),通過編寫這些代碼,我們將能仔細(xì)地了解xml文檔元素。而且,再編寫一個(gè)類似于ado記錄集upadte方法的函數(shù)。[/p]
[p]  現(xiàn)在我們?cè)诳蛻魴C(jī)上創(chuàng)建了一個(gè)假冒的ado記錄集對(duì)象,因此就可以象在vb應(yīng)用程序中一樣來處理這些“記錄集”。[/p]
[p]  有了這些函數(shù),剩下的就是編寫用戶界面,這就象在vb應(yīng)用程序中一樣。比如,在vb應(yīng)用程序中,“移動(dòng)到第1條記錄”后面的代碼是:[/p]
[p]private sub btnfirst_click()[br]if not (rst.eof and rst.bof) then[/p]
[p]'move to the first record[br]rst.movefirst[/p]
[p]'displaycurrentrecord is a function that display the current 'records information [br]displaycurrentrecord[/p]
[p]end if[br]end sub[/p]
[p][br]在web應(yīng)用程序中,相應(yīng)的代碼是:[/p]
[p]function btnfirstclick() {[br]'move to the first record in the recordset[br]'note that our rstmovefirst returns true if[br]'it was successful and false if eof and bof [br]if (rstmovefirst()) {[br]'here displaycurrentrecord is client side javascript[br]'function that display the current records information on[br]'the the screen[br]displaycurrentrecord();[br]}[br]}[/p]
[p]  當(dāng)需要更新實(shí)際的數(shù)據(jù)庫時(shí),就發(fā)送更新信息給updateemployee.asp,這個(gè)頁面將通過com對(duì)象的updateemployee方法來更新數(shù)據(jù)庫。上面描述的應(yīng)用程序,輸出到web上,將顯示如下圖:[/p]
[p][br]結(jié)論[/p]
[p]  在web應(yīng)用中,要建立適當(dāng)?shù)挠?jì)劃來轉(zhuǎn)換ado記錄集為xml文檔。一旦定義明確了,象那樣標(biāo)準(zhǔn)的應(yīng)用將很好實(shí)現(xiàn)。另外一個(gè)我們想研究的領(lǐng)域是客戶端記錄集的操縱函數(shù)(就是rst*函數(shù))。我們可以編寫java applet來處理這些記錄集操縱函數(shù),從而在客戶端建立了java記錄集對(duì)象。這種方法將是很面向?qū)ο蟮囊环N處理方法。[/p]
[p]點(diǎn)擊此處下載本文相關(guān)資料:[br][url=http://asptoday.com/articles/images/20000602.zip]http://asptoday.com/articles/images/20000602.zip[/url][/p]

該文章在 2010/7/7 23:36:08 編輯過
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點(diǎn)晴ERP是一款針對(duì)中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國(guó)內(nèi)大量中小企業(yè)的青睞。
點(diǎn)晴PMS碼頭管理系統(tǒng)主要針對(duì)港口碼頭集裝箱與散貨日常運(yùn)作、調(diào)度、堆場(chǎng)、車隊(duì)、財(cái)務(wù)費(fèi)用、相關(guān)報(bào)表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點(diǎn),圍繞調(diào)度、堆場(chǎng)作業(yè)而開發(fā)的。集技術(shù)的先進(jìn)性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點(diǎn)晴WMS倉儲(chǔ)管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購管理,倉儲(chǔ)管理,倉庫管理,保質(zhì)期管理,貨位管理,庫位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號(hào)管理軟件。
點(diǎn)晴免費(fèi)OA是一款軟件和通用服務(wù)都免費(fèi),不限功能、不限時(shí)間、不限用戶的免費(fèi)OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved