聲明: 這篇文章適合在C#命令行編譯器下的開發借鑒,對於已經裝了MS.NET的朋友,開發客戶端時將會更容易壹些,我隨後對登出我自己的開發程序,這篇文章為我摘錄的.摘錄URL:/2016.html
(壹)
Web Services,即Web服務,是微軟.NET戰略中非常重要的壹個概念。它的目的是將Web站點轉變為集組織、應用、服務以及設備於壹體的可設計Web站點,使Web站點不再處於被動的地位。
本文將介紹如何建立和使用壹個在.NET 平臺上提供股票報價的Web服務。我們將使用Yahoo的壹項以CSV(以逗號分隔的值)的格式提供股票報價的免費服務,將其包含在我們的web 服務中。
註意:這個報價服務例程的運行大約延遲15分鐘,只用於教學目的。
建立Web服務
下面將采用逐步講解代碼的形式來幫助妳理解在.NET 中Web服務的編程模式。我們可以使用notepad等任何文本編輯器來編寫 這裏的Web服務例程代碼,最後將文件存儲為StockQuote.asmx。請註意:所有的Web服務文件保存時都使用擴展名 *.asmx。
<%@ WebService Language="C#" class="DailyStock" %>
代碼的第壹行定義了壹個 Web 服務,使用的語言是C#。class屬性用來指示Web服務應該調用和使用的類。如果在Web服務中使用了許多類,那麽就應該用這個屬性來表明Web服務應該首先調用的類。
using System ;
using System.Web.Services ;
using System.Net ;
using System.IO ;
using System.Text ;
以上代碼負責引入必要的名稱空間。 請記住永遠都要引入System.Web.Services這個名稱空間。根據類的需要,再引入保留的名稱空間。
public class DailyStock : WebService
{
......
....
}
這裏我們將公***類定義為 DailyStock,它擴展了 System.Web.Services.WebService 類。所有想暴露為 Web服務的類都應該擴展System.Web.Services.WebServices類。 另外,Web 服務的存取修飾語永遠都是public。
[WebMethod]
public string GetQuote(string symbol)
{
........
........
}
以上我們定義了壹個公***Web方法 GetQuote。同類的定義壹樣,Web 方法也都要用 public這個修飾語來聲明。 [WebMethod] 屬性呈現出將要被用在Web服務中的壹些潛在方法,希望客戶存取的所有方法都應該用[WebMethod] 屬性進行標記。GetQuote方法接受壹個字符串輸入參數,它包含了使用者所需要的報價符號。這個方法返回壹個字符串,其中包含股票報價或錯誤
string ret;
try
{
// The Path to the Yahoo Quotes Service
string fullpath = @"mas.
// Hence we split the returned string into parts
char[] splitter = {','} ;
string[] temp = res.Split(splitter);
// Check if the string array returned has more than one
// elements since if there are less than one elements
// then an exception must have been returned
if(temp.Length >1)
{
// The WebService returns a lot of information about the
// stock. We only show the relevant portions
// Set the label to current Index
curindex.Text = "Current Index :"+temp[1];
// Set the label to current Date Time
curdate.Text ="Last Update on"+temp[2]+" at "+temp[3];
}
else
{
error.Text = "Error :"+res ; file://set the error label
}
}
</script>
以上ASP.NET頁面代碼中,首先對Web 服務DailyStock進行例示。由於已經生成了代理庫,因此Web服務的調用方法與其它任何庫的調用方法都相同。調用DailyStock 類的GetQuote()方法後,將返回壹個字符串,其中包含了以逗號分隔的列表符號的完整信息。
我們將限制顯示給客戶的信息為只顯示當前指數和所報告指數的日期/時間。為了將字符串分成若幹不同的部分,這裏使用了字符串類的Split方法,在出現逗號的地方將字符串分割成部分。並且,將分割開的字符串組成數組之後,再使用相關的數值為Web頁面設置不同的標簽。
代碼的其余部分
<body>
<center>
<h2>.NET101 Stock Quote Consumer </h2>
<form runat=server >
<table border=1 celspacing=1>
<tr><th>Please enter the symbol below</th></tr>
<tr><td>
<asp:textbox id=symbol runat=server />
<asp:button id=button1 text="Get Quote" onClick="button1_Click" runat=server />
</td></tr>
<tr><td><asp:label id=curindex runat=server /></td></tr>
<tr><td><asp:label id=curdate runat=server /></td></tr>
<tr><td><asp:label id=error runat=server /></td></tr>
</table>
</form>
</center>
</body>
</html>
(五)
小結
下面總結壹下配置Web應用程序的步驟:
l 創建壹個叫做StockConsumer的虛擬目錄
l 將 StockConsumer.aspx 文件復制到這個虛擬目錄下
l 在wwwroot 文件夾中創建壹個 bin 虛擬目錄
l 設置bin目錄以執行代碼的權限
l 將代理 dll 文件DailyStock.dll復制到這個目錄下,ASP.NET 運行時間引擎會自動從Bin目錄中選擇對外部庫的引用。這裏的例子中,這個外部庫是DailyStock.dll。
現在調用文件 http://localhost/StockConsumer/StockConsumer.aspx,然後鍵入股票的符號,點擊 "Get Quote"(獲取報價)按鈕,就能看到正在使用的Web服務了。註意:Web服務應該能夠使用yahoo服務器,否則它就會返回壹個錯誤信息。