• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • 用IE的Web服務建立ASP.NET應用程序

    發表于:2007-07-02來源:作者:點擊數: 標簽:
    在建立商業網站的時候, 開發 者遇到的一種限制是只能把瀏覽器作為用戶界面。例如,在很多情形中,用戶希望在執行某些操作(例如輸入雇員編號)之后從 服務器 檢索到信息。為了達到這個目的,他們將把頁面發回到服務器,檢索雇員信息,并用從服務器上檢索到

        在建立商業網站的時候,開發者遇到的一種限制是只能把瀏覽器作為用戶界面。例如,在很多情形中,用戶希望在執行某些操作(例如輸入雇員編號)之后從服務器檢索到信息。為了達到這個目的,他們將把頁面發回到服務器,檢索雇員信息,并用從服務器上檢索到的信息刷新頁面。盡管目前這種刷新整個頁面的方法很普遍,但是它的效率很低,因為Web頁面刷新了,并且重新呈現了整個頁面的內容,即使頁面只要少量的部分真正地發生了改變。在搜索某個類別或者搜索引擎的時候你就可以注意到這種低下的效率。它的延遲和資源浪費非常明顯。但是,如果相同的功能不用刷新瀏覽器頁面就能夠完成,用戶體驗將會得到很大的提高。為了實現這種目的,我們需要在不離開當前頁面的情況下執行一段服務器代碼的途徑,這就是Web服務行為起的作用。在這種情形下,服務器上執行的代碼片段是Web服務方法的代碼,瀏覽器的角色是調用這段服務器代碼而不離開或刷新當前頁面。

     使用Web服務行為的時候,你只需要從某個客戶端瀏覽器的Web頁面中發送一個請求執行特定的Web服務方法。在服務器端,ASP.NET運行時接收到請求,使用相關的參數調用Web服務方法。在Web服務執行完成后,它把結果傳達給調用者,接下來結果被瀏覽器顯示或處理。其結果是,你可以建立典型的客戶端/服務器通訊,而不需要理會下層HTTP協議的無狀態(stateless)特性。Web服務行為的另一個優點是為了實現功能,客戶端上只需要一個文件(webservice.htc)存在。使用Web服務方法的時候,你還可以異步調用Web服務方法。這種能力非常強大,可以用于在客戶端建立豐富的用戶體驗。例如,當用戶繼續處理相同頁面上的事務的時候,你可以使用Web服務行為讓服務器驗證某些數據。一旦函數調用返回了,你就可以得到執行結果并把結果傳達給用戶。 

     Web服務行為

     Web服務行為是把HTML組件(HTC)文件作為附屬行為實現功能的,它可以用于Internet Explorer 5及以后版本。前面提到過,Web服務行為通過利用工業標準協議(例如HTTP、SOAP和XML)提供了跨平臺調用遠程Web方法的途徑。Web服務行為的重要特性之一是,它允許你在沒有深厚的SOAP知識的情形下使用這些功能。Web服務通過處理瀏覽器和Web服務之間的SOAP數據包通訊,基本上簡化了Web服務的遠程調用。你不用擔心SOAP消息的聚集(assembling)和分解(disassembling)。所有處理SOAP詳細信息的代碼都被封裝在行為之中,簡化了主Web頁面中的客戶端腳本。

     Web服務行為是使用特定的IE行為語法嵌入Web頁面的JavaScript文件。通過把屬性和方法暴露給客戶端腳本,Web服務行為聚集消息并分解Web服務發回的響應信息。行為所暴露的對象不僅能夠啟動清晰的錯誤處理方法,而且提供了對返回數據的簡單地訪問。Web服務行為從客戶端腳本接收到方法調用,并使用SOAP消息給Web服務發送請求。結果會返回客戶端腳本,并且處理過程繼續。接下來Web頁面可以把信息用于任何需要的情形中,例如更新頁面的某些部分,發送錯誤消息等等。

     Web服務行為的一個關鍵特性是它允許客戶端腳本訪問Web服務而不用導航到另一個URL。下面的列表詳細說明了Web服務行為支持的重要的方法:

      · createUseOptions(建立使用的選項)--允許我們跨越遠程方法調用保存用戶認證信息。當我們使用SSL與遠程Web服務通訊的時候會很有用。

      · callService(調用服務)--允許我們異步調用遠程Web服務。

      · useService(使用服務)--允許我們在調用Web服務的時候為該服務建立一個"友好的"名稱。

     為了在IE 5.0和以上版本的Web頁面中使用行為,你必須下載webservice.htc行為文件,并把它保存在與你的Web頁面相同的文件夾中。這個文件可以從下面的鏈接下載得到:http://msdn.microsoft.com/downloads/samples/internet/behaviors/library/webservice/webservice.htc。

     實現過程

     你已經了解了Web服務行為的一些基礎知識,現在可以看一個示例應用程序了,它演示了在ASP.NET應用程序中如何使用Web服務行為。在這個例子中,你將建立一個簡單的應用程序,它允許你從Northwind數據庫檢索雇員信息。示例應用程序還允許基于雇員的ID搜索雇員信息。
    Employee Web服務的建立過程

     在這一部分,你需要首先建立一個叫作EmployeeWebService的新Visual C# Web服務項目。項目建立之后,你需要把默認的Web服務類的名字Service1改成EmployeeService。接著你需要導入下面的名字空間以執行數據訪問和處理XML數據。

    using System.Data.SqlClient;
    using System.Xml;

    [WebMethod]
    public XmlDocument GetEmpDetailsByEmpID (int employeeID)
    {
      string connString =
       System.Configuration.ConfigurationSettings.AppSettings["connectionString"];
       SqlConnection sqlConnection = new SqlConnection(connString);
       try
       {
        DataSet employeeDataset = new DataSet("EmployeesRoot");
        //把需要執行的存儲過程的名字和SqlConnection 對象作為參數傳遞進來
        SqlDataAdapter adapter = new SqlDataAdapter();
        SqlCommand command = new SqlCommand("Select * from Employees Where EmployeeID ="+    employeeID.ToString(),sqlConnection);
        //設置SqlCommand對象的屬性
        command.CommandType = CommandType.Text;
        adapter.SelectCommand = command; 
        //使用存儲過程返回的值填充數據集
        adapter.Fill(employeeDataset,"Employees" ); 
        XmlDocument xmlDoc = new XmlDocument();
        xmlDoc.LoadXml(employeeDataset.GetXml());
        return xmlDoc;
       }
       catch (Exception ex)
       { 
        throw ex;
       }
       finally
       {
        if (sqlConnection.State == ConnectionState.Open)
        {
         sqlConnection.Close();
        }
       }
      }
      屬性WebMethod表明該方法將作為可以被調用的Web方法暴露。在項目部署的時候,ASP.NET運行時提供使用某些協議(例如XML、HTTP和SOAP)在Internet上調用這個方法所需要的所有管道信息。

    [WebMethod]

      上面的方法名稱告訴我們,GetEmpDetailsByEmpID把employeeID作為參數并返回XmlDocument形式的雇員詳細信息。

    public XmlDocument GetEmpDetailsByEmpID(int employeeID)
    {
    string connString = System.Configuration.ConfigurationSettings.
    AppSettings["connectionString"];
      上面的代碼行使用ConfigurationSettings類的AppSettings屬性從web.config文件的<appsettings>部分檢索連接字符串。在web.config文件中連接字符串是這樣定義的:

    <appSettings>
    <add key="connectionString" 
    value="server=localhost;uid=sa;pwd=;database=Northwind" />
    </appSettings>
      下面一行代碼建立了SqlConnection對象的一個實例,給它傳遞了用于建立數據庫連接的連接字符串:

    SqlConnection sqlConnection = new SqlConnection(connString);
      接著你把所有的可執行代碼封裝在一個try...catch代碼塊中以處理執行后面的語句時可能發生的任何錯誤:

    try
    {
    DataSet employeeDataset = new DataSet("EmployeesRoot");
    SqlDataAdapter adapter = new SqlDataAdapter();
      下一步,你建立了SqlCommand對象的一個實例,給它的構造函數傳遞你希望執行的SQL語句和前面步驟中建立的SqlConnection對象:

    SqlCommand command = new SqlCommand("Select * from Employees Where EmployeeID =" + employeeID.ToString(),sqlConnection);
      接著你把SelectCommand屬性設置為適當的值,表明你希望執行一個SQL語句:

    //設置SqlCommand對象的屬性
    command.CommandType = CommandType.Text;
      接著把SqlDataAdapter對象的SelectCommand屬性設置為前面建立的SqlCommand對象:

    adapter.SelectCommand = command;
      現在使用Fill方法,通過在數據源上執行前面指定的SQL語句從數據源檢索數據:

    //用存儲過程返回的值填充數據集
    adapter.Fill(employeeDataset,"Employees" ); 
      一旦雇員信息成為數據集形式的,你就可以檢索它的內容,并把它作為參數傳遞到XmlDocument對象的LoadXml方法中。最后,把該XmlDocument對象返回到該Web服務的調用者:

    XmlDocument xmlDoc = new XmlDocument();
    xmlDoc.LoadXml(employeeDataset.GetXml());
    return xmlDoc;
    }
    catch (Exception ex)
    {
      throw ex;
    }
      在最后的代碼塊中,你檢查了State屬性以驗證Connection(連接)是否仍然是打開的。如果連接仍然是打開的,你就通過調用該連接對象的Close方法關閉它:

    finally
    {
      if (sqlConnection.State == ConnectionState.Open)
      {
       sqlConnection.Close();
      }
    }
    }
      現在你已經建立了Web服務了,可以用鼠標右鍵點擊EmployeeService.asmx文件并選擇Build(建立)和Browse(瀏覽)來測試它的功能。你得到的屏幕應該與下面的類似:


      點擊上面的屏幕中的方法名稱(GetEmpDetailsByEmpID)將顯示下面的屏幕:


      如果你輸入雇員id并點擊Invoke(調用)來調用該Web服務方法,你將得到下面的輸出:


      現在你已經測試了該Web服務了,你應該使用Web服務行為從ASP.NET頁面中調用它來試驗它的功能了。

    [1]    

    原文轉自:http://www.kjueaiud.com

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>