程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> ASP.NET >> 關於ASP.NET >> ASP.NET Web Game架構設計1--服務器基本結構

ASP.NET Web Game架構設計1--服務器基本結構

編輯:關於ASP.NET

1.基本結構圖

2.系統組成與角色

整個系統大體上分為三個部分:1.網頁客戶端。2.IIS Web服務器。3.數據庫 及邏輯服務器。其中Web服務器不處理任何邏輯,它的作用只有兩點:1.承載用戶 。2.中轉數據,利用ADO.NET Data Service以及調用其他的WCF,使得Web服務器 成為一個數據代理服務器。

經過失敗經驗的論證,讓IIS承載過多的邏輯,絕對是一個爛想法,應用系統 應該在一開始設計的時候就徹底屏蔽這種方案,從上面圖中也不難看出來,邏輯 的處理應該是一部分放在網頁中使用JS來實現,另外一部分放在應用系統的邏輯 服務器上實現的。

另外,如果簡單的將網頁部署到IIS上,性能指標總上不去,典型的體現在要 麼內存占用很高,CPU上不去,要麼是CPU上去了,內存又占用的太小,這樣很難 將服務器的能力發揮到極致。為了應對這個問題,一個非常理想的方案是使用IIS 中的WebGarden技術,可以啟動多個w3wp.exe,即多個IIS服務進程。這樣作的好處 是將CPU資源以及內存資源均勻的分配到多個服務進程上去,以提升服務器資源的 利用效率。但是,這同樣也帶來了一些問題,因為要將同一個網站的資源分配到 多個進程,這樣內存就無法共享,再加上HTTP協議本身就是短連接,所以每次客 戶端發出請求的時候,都有可能被不同的服務進程所接收,這樣就是導致Session 無法使用,很頭疼吧。為了應對這個問題,我們又需要去配置應用程序的狀態服 務器,說白了,就是將Session統一存儲到一個服務器上,通常是將其以二進制方 式存儲到SQL Server中。當然,這時要求存儲在Session中的數據必須是可以串行 化的。

上面說的,可以提高服務器的利用效率以外,在IIS上配置WebGarden還有什麼 優點呢?從上面的說明中不難看出,因為狀態是存儲在統一的SQL Server中的, 所以用戶狀態是與網站配置到哪一台Web服務器是無關的。因此,我們可以大量添 加Web服務器,同時,位於不同Web服務器上的用戶可以共享相同的SQL Server狀 態管理,這樣可以大大提高在同服、同世界的用戶數量。

Web服務器,我們再來看一下應用程序的邏輯服務器和數據庫服務器。這兩個 服務器通常在運營成本有限的情況下,是放在同一台服務器上的(當然,能分開 是最好的)。應用程序服務器一般會在某一個時間間隔下出現一個CPU使用的高峰 ,內存占用一般都很小,而對於SQL Server來講,因為要提供大量的緩存,所以 對於內存的消耗是比較大的。

輯服務程序,是整個系統最容易出現性能瓶頸的地方,可以使用C++或者C#來 編寫,然後提供一個WCF(TCP方式的)的外部接口,以便Web服務器調用。值得重 點強調的,無論是利用C++還是C#來編寫該程序,都一定要考慮好資源釋放問題( Java,C#開發人員更應該注意這一點,千萬別想著什麼垃圾自動回收,很多資源 是回收不了的),包括數據庫連接的釋放,數據結構(臨時數據的儲存體)的釋 放,以及無用線程的釋放。

這次先聊到這裡,在後面的BLog中我們會對整個構架中的每一個技術點進行詳 細說明的。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved