国产毛片午夜福利,国产黄网,国产亚洲天堂,97国产精品

  •  
    構建穩(wěn)定的服務器端組件的七個步驟
    發(fā)布時間:2005-03-18   瀏覽次數(shù):1185656
    [ 來源:動網(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

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

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

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

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

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

    建造健壯的組件

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

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


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


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


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


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


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


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


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

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

    來源:http://edu.chinaz.com
    立即預約