構建穩定的伺服器端組件的七個步驟(載自微軟)

來源:互聯網
上載者:User
伺服器|微軟 實現健壯效能的規則

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

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

用戶端的組件在使用者電腦上執行。用戶端組件包括絕大多數我們現在已經瞭解的一些流行組件:標籤控制項,文字框,命令按鈕,格子等。這些組件可以通過<OBJECT>標籤和(或)HTML對象文法來包含在用戶端HTML代碼中。

多數的有用的用戶端組件會提供特定種類的使用者介面。記住,使用用戶端組件就意味著真實組件已經被傳到客戶電腦上。尋常的做法就是把組件下載到客戶電腦上。當然,使用者不得不等待下載過程,而且客戶電腦必須被配置為允許下載。

與此形成對比的是,伺服器端的組件在伺服器電腦上執行。伺服器端組件也為使用者做一些工作,但卻是在伺服器上啟動並執行。你必須認識到這個差異並且相應地編製代碼。伺服器端組件為你的整個應用程式封裝了一些邏輯或功能。

當一個使用者使用應用程式時,他將不會真正看到伺服器端的組件。這些組件大多數都可以通過需要使用組件的ASP指令碼中的<OBJECT>標識來被包含。你同樣可以通過伺服器的CreateObject文法來包含伺服器端的組件。

建造健壯的組件

用於建立健壯組件的好材料並不多。但是,我在這裡向大家推薦七個關鍵步驟,它可以協助你建立穩定和安全的伺服器端組件,可以很優雅地縮放並且維持效能。在建立一個伺服器端網路應用時,你需要把穩定,安全和效能放在你心目中的首要位置。

伺服器端組件不應該具有GUI(圖形化使用者介面)。因為伺服器端組件是在伺服器上運行,網路應用的使用者是看不到可能彈出的任何對話的。你的組件需要能夠同指令碼和其它組件進行交流,卻無需同使用者交流。避免所有的訊息框和其它任何圖形的使用者介面單元。你必須開發利用返回結果來同狀態和其它模組資訊進行交流的代碼。如果什麼東西出問題,不要拋出一個錯誤訊息或者使用一個訊息框,可以返回一個狀態變數。你需要做的最後一件事是鎖定忙碌伺服器等待OK按鈕被按下。


伺服器端組件不得被傳遞引用或者傳遞引用給對象。普遍的做法是把控製作為一個參數傳遞給其它過程或組件。這包括其它對象的引用,比如RecordSets。儘管如此,向網路中的組件傳遞引用可能導致速度明顯下降,使一個繁忙的伺服器更加緩慢,網路應用程式在響應使用者需求時也表現得更慢。


伺服器端組件應該儘可能地少含方法和屬性。每一個方法或屬性的調用都需要大量處理。因此,一個編寫的好的伺服器端組件應該幾乎不含明顯的方法和屬性。組件含有的那些方法和屬性會帶來更多的參數。具有很多參數的調用越少,效能就越好,尤其是你的網路應用程式需要支援許多使用者時。這個技巧和許多開發人員的經驗是相反的。盡量少的使用帶有許多參數的調用也會帶來另外一些問題,這使得編碼和調試更加困難,但是速度上的改進是與付出的努力相當的。


伺服器端組件必須實現恰當的執行緒模式。利用單執行緒元件可能導致伺服器限制一個線程的會話,這將帶來速度的明顯下降。應該選擇VB的房間模型線程選項並且努力避免單執行緒元件。但是,VB不能建立你可以在Visual C++裡發現的具有線程選擇範圍的組件,。這一點也表明VB不是一種很合適這項工作的開發語言。


伺服器端組件應該使用早期繫結。如果你的伺服器應用程式要擴容,這顯得特別重要。早期繫結的對象在編譯時間就擁有引用解析,可以節省不少執行時間。


伺服器端組件不能使用在應用程式或會話範圍的聲明中。請注意你的控制項是如何被限定範圍的。範圍描述了如何建立一個組件的執行個體,這對你的服務端組件的成功起著關鍵作用。正如上月所討論的那樣,存在三種層級的範圍:頁面級,會話級和應用程式級。頁面級範圍對象可以用頁面本身的HTML和ASP指令碼代碼來建立。頁面級範圍組件的最佳效能可以通過使用房間線程來得到。而對應用程式級和會話級範圍組件來說,可以通過使用ATL組件的雙執行緒模式來得到。同範圍結合的執行緒模式也影響伺服器的安全效能。例如,一個利用應用程式級範圍的房間執行緒元件在系統安全環境裡運行,但並不是目前使用者的安全環境。這對那些具有安全意識的人來說可能是一個問題。


為了速度,伺服器端組件應該是進程中組件;為了穩定,則應該是進程外組件。有兩種方式去建立COM(OLE)伺服器--進程中和進程外。在VB裡,你用EXE或DLL副檔名去編譯伺服器。具有DLL副檔名的OLE伺服器就被稱為進程中伺服器;而具有EXE副檔名的被叫做進程外伺服器。進程外意味著組件作為一個獨立的過程在運行,而且與調用它的應用程式不共用地址空間。運行進程外組件會導致效能的降低,因為Windows不得不在兩個或多個應用程式之間來回移動資料。進程中意味著組件在調用它的應用程式的地址空間裡運行。在過程之間交流無需中間物,這使效能顯著提高。進程中組件的負面是如果組件失敗,那調用它的應用程式也會失敗。
伺服器端組件使得建立一流的解決方案成為可能。利用IIS,可能還得用上MTS,你可以基於Windows NT的強有力的處理能力建立高效能的可升級的網路應用程式。


Hank Marquis是現代軟體(Modern Software)的創始人,可以通過hankm@modernsoftware.com來聯絡他。本文首次發表於BackOffice CTO雜誌。

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



相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。