av网站免费线看精品_国产做a爱视频免费不_深爱激情网开心五月天_伊人五月天在线视频网

 
構(gòu)建穩(wěn)定的服務(wù)器端組件的七個步驟
發(fā)布時間:2005-03-18   瀏覽次數(shù):1230944
[ 來源:動網(wǎng) ]
 
實現(xiàn)健壯性能的規(guī)則

Hank Marquis
來自于Enterprise Solutions for Microsoft BackOffice and Windows NT Magazine
原稿地址:http://www.microsoft.com/china/technet/intranet/sevstep.asp

在你的服務(wù)器上安裝了微軟IIS(Internet Information Server),你可以發(fā)揮ASP(Active Server Pages)的優(yōu)勢了,ASP利用ActiveX組件來為你的網(wǎng)絡(luò)應(yīng)用完成所有種類的工作。盡管你可以在HTML和有ASP頁面的IIS里面使用許多ActiveX組件,服務(wù)器端組件也不是運行在一臺服務(wù)器上的普通組件。它在運行時不會告訴你同需要特別關(guān)照的產(chǎn)品服務(wù)器有關(guān)的任何信息。你將無法做任何事情去改變其對服務(wù)器性能、和穩(wěn)定性的影響。對服務(wù)器端的組件的不恰當(dāng)選擇可能會導(dǎo)致一些問題,包括速度的明顯下降,漏洞或者其它更惡劣的問題。

客戶端的組件在用戶計算機上執(zhí)行。客戶端組件包括絕大多數(shù)我們現(xiàn)在已經(jīng)了解的一些流行組件:標(biāo)簽控件,文本框,命令按鈕,格子等。這些組件可以通過<OBJECT>標(biāo)簽和(或)HTML對象語法來包含在客戶端HTML代碼中。

多數(shù)的有用的客戶端組件會提供特定種類的用戶界面。記住,使用客戶端組件意味著真實組件已經(jīng)被傳到客戶計算機上。尋常的做法是把組件下載到客戶計算機上。當(dāng)然,用戶不得不等待下載過程,而且客戶計算機必須被配置為允許下載。

與此形成對比的是,服務(wù)器端的組件在服務(wù)器計算機上執(zhí)行。服務(wù)器端組件也為用戶做一些工作,但卻是在服務(wù)器上運行的。你必須認(rèn)識到這個差異并且相應(yīng)地編制代碼。服務(wù)器端組件為你的整個應(yīng)用程序封裝了一些邏輯或功能。

當(dāng)一個用戶使用應(yīng)用程序時,他將不會真正看到服務(wù)器端的組件。這些組件大多數(shù)都可以通過需要使用組件的ASP腳本中的<OBJECT>標(biāo)識來被包含。你同樣可以通過服務(wù)器的CreateObject語法來包含服務(wù)器端的組件。

建造健壯的組件

用于創(chuàng)建健壯組件的好材料并不多。但是,我在這里向大家推薦七個關(guān)鍵步驟,它可以幫助你創(chuàng)建穩(wěn)定和的服務(wù)器端組件,可以很優(yōu)雅地縮放并且維持性能。在創(chuàng)建一個服務(wù)器端網(wǎng)絡(luò)應(yīng)用時,你需要把穩(wěn)定,和性能放在你心目中的首要位置。

服務(wù)器端組件不應(yīng)該具有GUI(圖形用戶界面)。因為服務(wù)器端組件是在服務(wù)器上運行,網(wǎng)絡(luò)應(yīng)用的用戶是看不到可能彈出的任何對話的。你的組件需要能夠同腳本和其它組件進(jìn)行交流,卻無需同用戶交流。避免所有的消息框和其它任何圖形的用戶界面單元。你必須開發(fā)利用返回結(jié)果來同狀態(tài)和其它模塊信息進(jìn)行交流的代碼。如果什么東西出問題,不要拋出一個錯誤消息或者使用一個消息框,可以返回一個狀態(tài)變量。你需要做的一件事是鎖定忙碌服務(wù)器等待OK按鈕被按下。


服務(wù)器端組件不得被傳遞引用或者傳遞引用給對象。普遍的做法是把控制作為一個參數(shù)傳遞給其它過程或組件。這包括其它對象的引用,比如RecordSets。盡管如此,向網(wǎng)絡(luò)中的組件傳遞引用可能導(dǎo)致速度明顯下降,使一個繁忙的服務(wù)器更加緩慢,網(wǎng)絡(luò)應(yīng)用程序在響應(yīng)用戶需求時也表現(xiàn)得更慢。


服務(wù)器端組件應(yīng)該盡可能地少含方法和屬性。每一個方法或?qū)傩缘恼{(diào)用都需要大量處理。因此,一個編寫的好的服務(wù)器端組件應(yīng)該幾乎不含明顯的方法和屬性。組件含有的那些方法和屬性會帶來更多的參數(shù)。具有很多參數(shù)的調(diào)用越少,性能越好,尤其是你的網(wǎng)絡(luò)應(yīng)用程序需要支持許多用戶時。這個技巧和許多開發(fā)人員的經(jīng)驗是相反的。盡量少的使用帶有許多參數(shù)的調(diào)用也會帶來另外一些問題,這使得編碼和調(diào)試更加困難,但是速度上的改進(jìn)是與付出的努力相當(dāng)?shù)摹?/P>


服務(wù)器端組件必須實現(xiàn)恰當(dāng)?shù)木程模型。利用單線程組件可能導(dǎo)致服務(wù)器限制一個線程的會話,這將帶來速度的明顯下降。應(yīng)該選擇VB的房間模型線程選項并且努力避免單線程組件。但是,VB不能創(chuàng)建你可以在Visual C++里發(fā)現(xiàn)的具有線程選擇范圍的組件,。這一點也表明VB不是一種很合適這項工作的開發(fā)語言。


服務(wù)器端組件應(yīng)該使用早期綁定。如果你的服務(wù)器應(yīng)用程序要擴容,這顯得特別重要。早期綁定的對象在編譯時擁有引用解析,可以節(jié)省不少執(zhí)行時間。


服務(wù)器端組件不能使用在應(yīng)用程序或會話作用域的聲明中。請注意你的控件是如何被限定作用域的。作用域描述了如何創(chuàng)建一個組件的實例,這對你的服務(wù)端組件的成功起著關(guān)鍵作用。正如上月所討論的那樣,存在三種級別的作用域:頁面級,會話級和應(yīng)用程序級。頁面級作用域?qū)ο罂梢杂庙撁姹旧淼腍TML和ASP腳本代碼來創(chuàng)建。頁面級作用域組件的性能可以通過使用房間線程來得到。而對應(yīng)用程序級和會話級作用域組件來說,可以通過使用ATL組件的雙線程模型來得到。同作用域結(jié)合的線程模型也影響服務(wù)器的性能。例如,一個利用應(yīng)用程序級作用域的房間線程組件在系統(tǒng)環(huán)境里運行,但并不是當(dāng)前用戶的環(huán)境。這對那些具有意識的人來說可能是一個問題。


為了速度,服務(wù)器端組件應(yīng)該是進(jìn)程中組件;為了穩(wěn)定,則應(yīng)該是進(jìn)程外組件。有兩種方式去創(chuàng)建COM(OLE)服務(wù)器--進(jìn)程中和進(jìn)程外。在VB里,你用EXE或DLL擴展名去編譯服務(wù)器。具有DLL擴展名的OLE服務(wù)器被稱為進(jìn)程中服務(wù)器;而具有EXE擴展名的被叫做進(jìn)程外服務(wù)器。進(jìn)程外意味著組件作為一個獨立的過程在運行,而且與調(diào)用它的應(yīng)用程序不共享地址空間。運行進(jìn)程外組件會導(dǎo)致性能的降低,因為Windows不得不在兩個或多個應(yīng)用程序之間來回移動數(shù)據(jù)。進(jìn)程中意味著組件在調(diào)用它的應(yīng)用程序的地址空間里運行。在過程之間交流無需中間物,這使性能顯著提高。進(jìn)程中組件的負(fù)面是如果組件失敗,那調(diào)用它的應(yīng)用程序也會失敗。
服務(wù)器端組件使得創(chuàng)建的解決方案成為可能。利用IIS,可能還得用上MTS,你可以基于Windows NT的強有力的處理能力創(chuàng)建高性能的可升級的網(wǎng)絡(luò)應(yīng)用程序。


Hank Marquis是現(xiàn)代軟件(Modern Software)的創(chuàng)始人,可以通過hankm@modernsoftware.com來聯(lián)系他。本文首次發(fā)表于BackOffice CTO雜志。

我們微軟公司希望這篇文章的信息對你有用。但是,使用這些信息是你自己愿意承擔(dān)的風(fēng)險。這里所有的信息都以"好像是"的方式提供,對信息的準(zhǔn)確性、完整性、針對某種特定目的的適用性、無害性沒有任何明顯的或者暗示的擔(dān)保,文章中提到的所有第三方產(chǎn)品或信息都不是被微軟公司授權(quán),推薦,支持和提供保證的。微軟公司你使用這些信息而可能蒙受的無論是直接、間接、特殊的、偶然的或者有因果關(guān)系的損失不負(fù)任何責(zé)任,即使這種損失的可能性被仔細(xì)考慮過。文中提到的所有產(chǎn)品的價格都可以在不另做通知的情況下改變。

來源:http://edu.chinaz.com
立即預(yù)約