當前位置:編程學習大全網 - 編程語言 - 為Asp.net應用程序設置構建Web服務

為Asp.net應用程序設置構建Web服務

壹 什麽是應用程序設置

 應用程序設置通常是指與應用程序密切相關的壹系列參數 在基於窗體的Windows應用程序中 應用程序設置主要包括影響應用程序布局的位置 尺寸等參數 影響應用程序外觀的顏色 形狀等參數 此外 還包括應用程序的語言 文化等設置以及數據源和連接字符串等等 這些參數設置在程序開發中應用廣泛 有的被用來保持應用程序的壹致性 連續性 比如保存應用程序結束時的窗體大小 位置及背景顏色 下次執行應用程序時恢復這些設置 另壹些參數則使程序代碼更加簡潔高效 比如保存數據庫連接字符串供多次調用

 與基於窗體的windows應用程序不完全相同 基於web的Asp net應用程序有其自身的特殊性 它是面向網絡的 這決定了asp net應用程序設置除包括上面的參數外 還包括

 ◆身份驗證和授權等安全機制

 ◆網絡傳輸協議類型和針對特定類型文檔的處理程序

 ◆事務處理

 ◆為所有頁面設置超時

 ◆定制出錯頁面來代替默認IIS出錯頁面

 ◆會話和會話狀態信息

 ◆頁面緩存行為

 ◆自定義及擴展

 可見 asp net 應用程序設置參數類型更為豐富 實際開發中 它們不僅被用來提高應用程序安全性 高效性 而且易於對特定用戶實施管理並可定制需求

  二 為什麽要將asp net應用程序設置外置為web服務

 關於web服務的優點就不用再提了 媒體鋪天蓋地的宣傳和在許多領域的廣泛應用已經足夠說明問題 不過這裏仍然要強調的是 web服務實際上就是asp net應用程序 只不過重新進行了組織 特別地 web服務為不同應用程序之間***享對象提供了實現 通過簡單的引用 妳可以在程序中訪問另壹程序實現的功能 而不僅僅是asp net中那樣只有通過瀏覽器才能實現 顯而易見 web服務也具有壹般asp net應用程序所擁有的許多功能和特性 Asp net和web服務都有狀態管理功能就是壹個典型的示例

 然而 將asp net應用程序設置外置為web服務有什麽優點呢?壹方面可以從軟件(應用程序)可復用性方面得到答案 試想壹想 如果客戶應用程序(源)需要使用另壹應用程序(目標)的設置參數 這時 將目標應用程序設置配置為web服務 在源應用程序中就能夠方便地調用了 就像在本機配置了同樣的設置壹樣 另壹方面 web服務(asp net應用程序應用)特殊的存儲其應用程序設置的機制(即下面將講述的web config文件存儲設置)使得應用程序跨平臺 跨internet以及應用程序的升級和xcopy部署方式成為可能

  三 存儲asp net應用程序設置

 我們應該已經知道 基於windows應用程序的設置壹般保存在註冊表中 通過對註冊表寫入 鍵值對 保存特定相應的設置值 然後 通過讀取註冊表的 鍵值對 取出相應的設置值 看來 過程本身並不復雜 加上 Net框架為註冊表的讀寫提供了豐富的類庫支持 使得操作註冊表以讀寫應用程序設置更為簡單(關於註冊表讀寫請參見專門的文章 這裏就不展開了)

 然而 註冊表本身是個相當敏感的區域 對它的讀寫不可避免地引發安全隱患 即便在本地主機上操作也要相當慎重 更何況置身於不可預料用戶數量的網絡環境之下 就更應該在公開註冊表的讀寫操作時慎之又慎!或者 幹脆找別的方法替代!

 正是由於這樣的原因 Asp net應用程序設置除了存儲在註冊表中外 更多地 通過以下兩種方式來存儲

 ◆Application對象

 ◆Web config文件

  四 使用Application對象存儲應用程序設置

 對我們來說 Application對象相當熟悉 它是asp net從asp中保留下來的 用以簡化應用程序狀態管理的兩個對象之壹(另壹個是Session對象) 作為壹個asp net應用程序 web服務就象其他任何web應用程序壹樣 也能夠訪問application對象

 在asp net中 application對象可視為高級語言中的全局變量 它在應用程序中保持壹致 以實現 ASP NET 應用程序中多個會話和請求之間的全局信息***享 (有必要提壹下 ASP NET 應用程序是單個 Web 服務器上的某個虛擬目錄及其子目錄範圍內的所有文件 頁 處理程序 模塊和代碼的總和 )

 有別於普通全局變量的是 asp net應用程序狀態Application對象在客戶端第壹次從某個特定的 ASP NET 應用程序虛擬目錄中請求任何 URL 資源時創建 Web 服務器上的每個 ASP NET 應用程序都要創建壹個單獨的實例 然後通過此Application對象公開對每個實例的引用

 這樣 application對象適宜被用來保存需要不同用戶***享的數據 記載關於應用程序的設置情況 以使其能夠被運行於同壹個web應用程序中的所有代碼訪問 進壹步 將包含application對象的方法外置為web服務 以在應用程序 *** 享對象並操作應用程序設置值 有關應用程序訪問次數的狀態編程 讀取遠程數據庫的互操作編程等都通過以此類似的方式來實現應用程序的設置***享

 下面的代碼使用application對象 記載特定應用程序的訪問次數 並將方法外置為web服務供應用程序調用

[WebService(Namespace= // thjx )]public class Application : System Web Services WebService{ /// <summary>/// 返回應用程序被訪問次數/// </summary>[WebMethod(Description= 返回特定應用程序被訪問的次數 )]public int GetAppAccessCount(string key){if(Application[key]==null){Application Lock();//鎖定Application對象以同步訪問Application[key]= ;Application UnLock();//取消鎖定}else{Application Lock();Application[key]=Int Parse(Application[key] ToString())+ ;Application UnLock();}return (int)Application[key];} }

 方法GetAppAccessCount(string key)在特定應用程序被執行壹次後訪問次數遞增 個單位量 並保存在應用程序設置變量中 下壹次來自任何用戶的訪問將在這個變量的基礎上遞增該設置

  五 使用Web congfig文件存儲應用程序設置

 從上面可以知道 asp net應用程序需要配置很多的特殊設置 包括為所有頁面設置超時 定制出錯頁面來代替默認IIS出錯頁面以及安全設置和授權級別設置等 看上去 這麽多類型的設置壹定很麻煩 幸運地是 asp net結束了需要進行手工配置的歷史 那就是將設置保存在Web config文件中 這是不同於此前提到的使用註冊表或application對象保存應用程序設置的另壹種保存應用程序設置的方法 由於web config文件存在於應用程序根目錄下 以這種方式保存的應用程序設置將使應用程序跨平臺使用和伸縮性大大增強

 使用web config文件存儲應用程序設置有很多優點 web config實際上是壹個純文本文件 顯然 存儲在純文本文件中的配置信息非常容易修改 而且 不象傳統的asp 任何對配置設置的修改不需要重新啟動web服務器 就可以立即應用於當前的web應用程序 同時 設置好的配置被自動應用於當前文件夾和它所有的子文件夾 使真正兼容主機的xcopy成為可能 我們只需要復制另壹個IIS虛擬目錄中的所有web應用程序文件即可實現應用程序部署 另外 壹些特定任務的配置如基於表單的授權只有通過使用web config文件才能實現

 這裏 有必要簡要說說web config文件的構造 web config文件是標準的xml文件 遵循格式正確的xml文檔的所有規範 它包括多個部分 每壹部分處理壹個特殊的任務 web config文件由許多小節組成 包括驗證小節 安全性小節 錯誤處理小節和web服務小節 並以鍵值對的形式保存應用程序配置信息

 作為標準的xml文檔 web config文件的根元素是<configuration> 它包含壹個子元素<system web> 而後者又包括許多配置部分 Web config文件包含許多標記 每壹個標記對應壹個所謂的 部分(section) 如 表示身份驗證的Authentication 表示授權的Authorization 定制錯誤的CustomErrors 會話設置SessionState等等

 盡管web config文件為用戶自定義提供了很大的空間 我們可能仍然需要壹些用戶設置 appSettings部分就是用來滿足這項要求的 請記住這部分並不在<system web ></system web>標記中 而是單獨存放在<configuration></configuration>標記中 數據庫連接字符串 email服務器地址和日誌文件存放路徑 通常頁可以放在這部分

 下面的代碼片段是壹個web config文件的設置小節 該小節定義了應用程序設置 即appSettings小節 它包含了數據庫連接字符串和另壹個用戶設置LogFilePath鍵值對

<configuration><appSettings><add key= Conn value= server=(local);uid=sa;pwd=;database=myDB /><add key= logFilePath value= c:\mylogs /></appSettings></configuration>

  Net框架支持asp net應用程序訪問應用程序設置 其ConfigurationSettings 類提供對指定配置小節中配置設置的訪問 該類的公***屬性ConfigurationSettings AppSettings 屬性可獲取 <appSettings> 元素配置節中的配置設置 該屬性是壹個NameValueCollection 它包含配置設置的名稱/值對

public static NameValueCollection AppSettings {get;}

 下面的web服務方法用於獲取應用程序配置設置 using System Configuration;

[WebMethod]public string GetAppSetting(string key){return ConfigurationSettings AppSettings[key];}

 註意 AppSetting屬性是只讀的 要想修改應用程序設置 必須編輯web config文件 同時 如果key鍵並不存在於web config文件中 讀取AppSettings屬性將引發錯誤

 ConfigurationSettings 類還提供了壹個公***方法ConfigurationSettings GetConfig 用於返回用戶定義的配置節的配置設置

public static object GetConfig(string sectionName);

 其中 參數sectionName 表示要讀取的配置節 下面的web服務方法用於獲取用戶定義配置的指定鍵值

[WebMethod]public string GetConfig(string key){NameValueCollection nv=new NameValueCollection();//實例化NameValueCollection 類對象nv=(NameValueCollection)ConfigurationSettings GetConfig( appSettings );//返回用戶定義的配置節的設置return nv[key] ToString();//返回特定鍵值}

  六 消費 實現asp net應用程序設置的web服務

 妳可以編寫 Web應用程序 Windows桌面應用程序或Web服務等應用程序來消費已經創建的應用程序設置web服務 實現方式同任何標準的web服務壹樣 沒有什麽特別之處 應該說很簡單 這裏就不展開講解了

lishixinzhi/Article/program/net/201311/15706

  • 上一篇:python和scratch哪個好
  • 下一篇:香港仁孚行 梅賽德斯奔馳詳解
  • copyright 2024編程學習大全網