發表於Windows & .NET MAGAZINE 國際中文版雜誌 2005 年五月號 作者:葉建廷
引言:
XML 豐富的資料表達方式,儼然成為後 PC 時代最主要的溝通語言,各大 DBMS廠商設計新一代資料庫系統時,無不考慮將對XML 支援程度列為重大的課題。Web Services 則是以 SOAP 協定實現 XML 資訊交換的最佳方式,本文探討主題即是如何以 Web Services實作多層式架構存取 SQL Server的資料。
觀察中大型企業對於Web應用程式設計上,有效率的資源應用及資訊的安全與否是企業非常重視的事情!一般不可能使用單純的 Client -Server架構,如圖 1,兩層式架構 (Two-Tier) 雖然能滿足客戶瀏覽的基本需求,但是卻會面對許多麻煩的問題:
- 執行效率容易遇到瓶頸:Web Server 除了網頁資訊的傳遞,還必須負擔所有的伺服端商業規則的執行,若伺服器的資源耗盡時,擴充性低。
- 程式重複使用性低:若多人一起開發Web應用程式,相同的邏輯的程式因為沒有元件化,無法達到重複使用的益處。
- 資料庫危險性升高: Web Server 直接與資料庫連線,若連線方式撰寫於網頁中,容易導致資料庫的帳號及密碼外洩。就算是使用 windows 帳號的認證的連線方式,風險仍高,因為萬一 Web Server 被入侵了,資料庫相對的也等於承認駭客的連線,也就完全沒有任何的防備了。
圖 1
至於多層式架構 (N-Tier),如圖 2,則能解決以上所面臨到的問題:
- 執行效率可提升:因為將商業邏輯移交由元件伺服器負責,可藉由硬體的擴充,達到效能的提升,甚至是負載平衡。
- 程式重複使用性高:相同的邏輯的程式都已元件化,程式可直接呼叫使用元件,減少程式開發的負擔。
- 資料庫危險性降低:不直接與資料庫相連接,存取資料庫一定要透過元件,以參數傳遞給負責的相關元件處理,而不能以SQL 語法直接要求資料庫動作,減低資料庫控管的風險。
圖 2
多層式架構並不是新的課題,只是多年的工作經驗觀察,會認真思考以 Microsoft DNA 來規劃的人還是不多。可能因為習慣於方便的開發模式及開發時程的要求,導致企業包袱越來越重,變更架構日益困難。另一方面,開發人員會選擇的程式語言肯定是多樣化的,COM技術架構雖好但是在跨平台呼叫元件上卻困難重重。雖有遠端程序呼叫 ( RPC ) 可使用,不過學習門坎較高,加上各語言有不同的元件,彼此互通性低。