ASP.NET+Web服務實現軟體共享
作者:Eve Cole
更新時間:2009-06-30 15:39:48
摘要本文提出一種新的透過軟體功能共享而實現軟體共享的方法,這種方法的優點是以遠端呼叫Web服務的形式實現軟體功能的共享,而不將軟體拷貝到客戶端,也減小了網路上的一些資源冗餘,也有利於共享現有Web服務整合新的系統。而本文透過學生身份驗證模組實例分析了這種新方法的有效性。
引言
傳統的軟體共享是將軟體從網路的伺服器拷貝到客戶端,以實現軟體的共享,這種方法的缺點是每一個需要使用該軟體的客戶端都必須先拷貝該軟體,導致網路上的空間冗餘餘,因而導致產生了大量孤立的數據和重複的業務邏輯。
Web services 透過使用XML 訊息處理啟用資料交換和應用程式邏輯遠端調用,使資料能夠通過防火牆,並在異類系統之間移動數據,它為實現資料和系統的互通性提供了可行的解決方案。
本文針對傳統軟體共享問題提出一種新的透過軟體功能共享而實現軟體共享的方法,這種方法的優點是以遠端呼叫Web服務的形式實現軟體功能的共享,而不將軟體拷貝到客戶端,也減少了網路上的一些資源冗餘,也有利於共享現有Web服務整合新的系統。而本文透過學生身份驗證模組實例分析了這種新方法的有效性。
軟體共享的意義
隨著電腦應用的普及與發展,大到各個產業,小至一個公司、部門都開發並應用了實用的電腦軟體。這些軟體大大提高了公司企業的工作效率和現代化管理水平,它已經成為公司企業商業運作和管理的核心。但由於大多數公司幾乎在每個部門廣泛採用的是自訂軟體,因而導致產生了大量實用但孤立且重複的業務邏輯區塊。如果在設計開發時能夠避免重複設計,而是採用軟體功能共享的方式來實現各個模組相同功能的話,那將大大節約軟體開發成本,也為將來的系統升級和整合提供很好的架構基礎。另外,對於已經存在的業務邏輯,可以透過少量的改進以便被其它應用程式所共享,從而降低開發成本。
由於開發每個應用程式所處的環境是多種多樣的,而技術在永不停歇地發展,因此,共享已經存在的應用程式來創建一個功能集合在過去是一件非常困難的事情。值得慶幸的是,Web Services技術的出現為軟體共享的實現提供了可能,軟體功能的Web服務化,提供了在Internet範圍內可共享的業務邏輯,最終形成以各種Web服務為基礎的開放性的功能構件體系。下面,將對如何利用Web Services技術實現軟體共享進行探討。
基於Web Services技術實現軟體共享
1、Web Services技術簡介
Web Services可以看成是部署在Internet上的API,它可以方便被應用程式甚至其它Web Services整合和調用,形成新的應用服務。它具有完好的封裝性,鬆散耦合,高度可整合能力。毫無疑問,Web Services技術將成為下一代Web的主流技術,它是實現"軟體作為一種服務"的體現。
Web Services體系架構如下,由服務請求者、服務代理程式和服務提供者所組成:
Web服務提供者就是Web服務的擁有者,它在服務代理處註冊以配置和發布服務,並耐心等待為其他服務和用戶提供自己的功能;Web服務請求者就是Web功能的使用者,它使用查找操作來從服務代理程式擷取服務描述,然後與服務提供者綁定並呼叫Web服務或同它互動。
Web服務提供者相當於中介,它把一個Web服務請求者與合適的Web服務提供者聯繫在一起,一般是UDDI,UDDI為服務請求者提供了動態查找Web服務的機制。
2、基於Web Services的軟體共享的實現方式
在軟體開發過程中,人們常會依照功能把軟體分割成不同的模組,以方便模組功能的重組多用和修改升級。透過Web Services技術實現軟體共享,也需要先對整合系統按功能劃分模組;然後,建立Web服務來實現這些功能模組;為了使Web服務可訪問,還需要發布服務描述(部署Web服務)以便其它模組可以查找並調用它。這樣,以Web服務方式實現的軟體功能就可以被應用程式甚至其它Web服務共享。
應用程式或其它Web服務等服務請求者當需要呼叫Web服務時,首先檢索服務描述或在服務註冊中心查詢所要求的服務類型。當找到所需服務時,就可以使用服務描述與服務提供者進行綁定,並呼叫對應的服務。
微軟新推出的旗艦產品Visual Studio.NET是被稱為開發Web服務的首選工具,使用Visual Studio.NET可以非常方便地實現Web服務建立與呼叫。下面,將給出一個具體的基於Web Services技術實現軟體共享的實例。
3.軟體共享的應用舉例:學生身分驗證模組的共享實作。
目前,在大學中有很多的軟體系統,例如:選課系統、成績查詢系統、網路課程系統、圖書館系統、學生財務系統等。由於各個系統相互獨立,每個系統都有一個學生身份驗證模組,存在著功能上的重複設計;另外,各個系統的相互獨立,存在著學生需要記憶不同系統的密碼。
鑑於上述情況及目前校園網路的高度發達,我們完全可以用Web服務的方式來實現學生身分驗證模組的共享。以下將介紹使用Visual Studio.NET環境以C#語言實作建立並呼叫學生身分驗證Web服務的過程。
1) Web服務的創建
學生身分驗證模組有1個Web服務構成:
public Boolean ValidUser(string userID,string Pwd)
Web服務ValidUser用於驗證學生身分。已經在Sql Server資料庫StudentsInfo建立了學生基本資料表Student,其中欄位UserID、Pwd分別保存學生的使用者代碼及密碼。
以下將具體介紹Web服務的建立過程:
a 執行Visual Studio.NET開發環境,新建"ASP.NET Web服務"類型的專案WSStudentLogin。
b Web服務的具體程式碼實作。
using System.Data.SqlClient;
//省略程式碼…
public class Service1 : System.Web.Services.WebService
{
string ConStr="";
ConnStr="DATABASE=StudentsInfo;SERVER=10.1.111.19;UID=sa;PWD=;";
//省略程式碼…
[WebMethod]
public Boolean ValidUser(string userID,string Pwd)
{
Boolean flag=false;
string sqlStr="";
//建立一個資料庫連線對象
SqlConnection tempConn=new SqlConnection(ConnStr);
sqlStr="select * from student where ID='"+userID+"' and pwd='"+Pwd+"';";
//建立一個命令對象
SqlCommand tempComm=new SqlCommand(sqlStr,tempConn);
tempConn.Open();
SqlDataReader tempReader=tempComm.ExecuteReader(CommandBehavior.CloseConnection);
if (tempReader.HasRows) flag=true;
tempReader.Close();
tempComm.Dispose();
return flag;
}
}
要注意的是:只有用[WebMethod]說明的方法才是可以遠端呼叫的Web服務。因此方法前面的[WebMethod]不能省略。
若要讓Web服務可由他人使用,必須將其部署到您希望支援的用戶端可存取的Web伺服器。若要將Web服務部署到開發伺服器以外的伺服器,可以新增Web安裝專案或將所需的檔案複製到目標伺服器。篇幅所限,本文不對此展開深入討論,假設本例的Web服務部署在開發伺服器上。
創建了並部署了Web服務之後,我們就可以在客戶端呼叫對應的Web服務。以下介紹如何在客戶端定位、引用Web服務功能。
2)Web服務的調用
使用Web服務的過程其實是實作Web服務的使用者與Web服務實作綁定,並呼叫其方法的過程。為了簡化綁定的過程。 Visual Studio.NET提供了服務代理類別的方法。服務代理類別是根據Web服務的描述文件(XXX.WSDL)產生本地類,在執行的過程中,客戶使用代理類別中的資訊存取Web服務,實現實際的方法的呼叫。 Visual Studio.NET提供了我們實現這一過程的簡單方式:
a 建立Web服務存取客戶程式。
Web服務存取客戶程式可是各種類型的應用程序,也可以是其它Web服務。在這裡,我們新建一個"ASP.NET WEB應用程式"類型的專案WebApplication2。
b、服務引用。
首先,在"項目"選單上點選"新增Web 引用"。接下來,因為本例中的網路服務位於本機電腦上,我們按一下瀏覽器窗格中的"本機電腦上的Web 服務"連結。然後,從所提供的清單中按一下Service1連結以檢索有關該Web服務的資訊。然後,按一下"新增引用"為目標Web服務新增Web引用。 Visual Studio.NET將下載服務說明並產生一個作為應用程式和Web服務之間的介面的代理類別。
c、在客戶程式中呼叫Web服務的具體程式碼舉例。
private void Button1_Click(object sender, System.EventArgs e) { //建立代理類別對象 localhost.Service1 ClientProxy=new localhost.Service1(); try {//透過程式碼類別物件存取Web服務 if (ClientProxy.ValidUser(TxtUserId.Text,txtPwd.Text)) Label1.Text="OK" ; else Label1.Text="ERROR" ; } catch(e) {throw e;} finally {ClientProxy.Dispose();} } |
其它
Web Services技術為軟體共享的實現,為在現有資訊系統基礎上實現系統整合提供了很好的技術基礎。但是,要使基於Web Service技術實現軟體共享具有真正的實用性。我們還要解決好以下一些問題:首先是安全可靠性,一是Web服務網路傳輸的連線可靠性,二是Web服務內容的可靠性,也就是確保資料完整性和保密性。其次是服務使用權限的控制,Web服務是"軟體作為一種服務"的體現,什麼人被禁止使用此服務,什麼人被允許使用此服務,使用此服務如何收費等,都是實際使用需要解決的問題。另外,Web服務的承載能力、Web服務的部署與發現、客戶呼叫Web服務失效處理等問題也是需要解決好的問題。
小結
本文提出了從軟體功能共享的角度來實現軟體共享,討論了利用Web Services技術來實現遠端軟體功能共享,並且透過學生身體驗證模組來實例分析軟體功能共享的有效性及其優點。軟體功能共享的研究對實現分散式運算等都具有重大的意義,它還需要進一步的研究。