明輝手游網(wǎng)中心:是一個(gè)免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺(tái)!

ASP.NET+Web服務(wù)完成軟件共享

[摘要]摘 要 本文提出一種新的通過軟件功能共享而實(shí)現(xiàn)軟件共享的方法,這種方法的優(yōu)點(diǎn)是以遠(yuǎn)程調(diào)用Web服務(wù)的形式實(shí)現(xiàn)軟件功能的共享,而不將軟件拷貝到客戶端,也減小了網(wǎng)絡(luò)上的一些資源冗余,也有利于共享現(xiàn)有Web服務(wù)集成新的系統(tǒng)。而且本文通過學(xué)生身份驗(yàn)證模塊實(shí)例分析了這種新方法的有效性。  引言  傳統(tǒng)的軟件...
摘 要 本文提出一種新的通過軟件功能共享而實(shí)現(xiàn)軟件共享的方法,這種方法的優(yōu)點(diǎn)是以遠(yuǎn)程調(diào)用Web服務(wù)的形式實(shí)現(xiàn)軟件功能的共享,而不將軟件拷貝到客戶端,也減小了網(wǎng)絡(luò)上的一些資源冗余,也有利于共享現(xiàn)有Web服務(wù)集成新的系統(tǒng)。而且本文通過學(xué)生身份驗(yàn)證模塊實(shí)例分析了這種新方法的有效性。


  引言

  傳統(tǒng)的軟件共享是將軟件從網(wǎng)絡(luò)的服務(wù)器拷貝到客戶端,以實(shí)現(xiàn)軟件的共享,這種方法的缺點(diǎn)是每一個(gè)需要使用該軟件的客戶端都必須先拷貝該軟件,導(dǎo)致網(wǎng)絡(luò)上的空間冗余,因而導(dǎo)致產(chǎn)生了大量孤立的數(shù)據(jù)和重復(fù)的業(yè)務(wù)邏輯。

  Web services 通過使用 XML 消息處理啟用數(shù)據(jù)交換和應(yīng)用程序邏輯遠(yuǎn)程調(diào)用,使數(shù)據(jù)能夠通過防火墻,并在異類系統(tǒng)之間移動(dòng)數(shù)據(jù),它為實(shí)現(xiàn)數(shù)據(jù)和系統(tǒng)的互操作性提供了一種可行的解決方案。

  本文針對(duì)傳統(tǒng)軟件共享問題提出一種新的通過軟件功能共享而實(shí)現(xiàn)軟件共享的方法,這種方法的優(yōu)點(diǎn)是以遠(yuǎn)程調(diào)用Web服務(wù)的形式實(shí)現(xiàn)軟件功能的共享,而不將軟件拷貝到客戶端,也減小了網(wǎng)絡(luò)上的一些資源冗余,也有利于共享現(xiàn)有Web服務(wù)集成新的系統(tǒng)。而且本文通過學(xué)生身份驗(yàn)證模塊實(shí)例分析了這種新方法的有效性。

  軟件共享的意義

  隨著計(jì)算機(jī)應(yīng)用的普及與發(fā)展,大到各個(gè)行業(yè),小至一個(gè)公司、部門都開發(fā)并應(yīng)用了實(shí)用的計(jì)算機(jī)軟件。這些軟件大大地提高了公司企業(yè)的工作效率和現(xiàn)代化管理水平,它已經(jīng)成為公司企業(yè)商業(yè)運(yùn)行和管理的核心。但由于大多數(shù)公司幾乎在每個(gè)部門廣泛采用的是自定義軟件,因而導(dǎo)致產(chǎn)生了大量實(shí)用但孤立且重復(fù)的業(yè)務(wù)邏輯塊。如果在設(shè)計(jì)開發(fā)時(shí)能夠避免重復(fù)設(shè)計(jì),而是采用軟件功能共享的方式來實(shí)現(xiàn)各個(gè)模塊相同功能的話,那將大大節(jié)約軟件開發(fā)成本,也為將來的系統(tǒng)升級(jí)和集成提供很好的構(gòu)架基礎(chǔ)。另外,對(duì)于已經(jīng)存在的業(yè)務(wù)邏輯,可以通過少量的改進(jìn)以便被其它應(yīng)用程序所共享,從而降低開發(fā)成本。

  由于開發(fā)每個(gè)應(yīng)用程序所處的環(huán)境是多種多樣的,而技術(shù)在永不停歇地發(fā)展,因此,共享已經(jīng)存在的應(yīng)用程序來創(chuàng)建一個(gè)功能集合在過去是一件非常困難的事情。值得慶幸的是,Web Services技術(shù)的出現(xiàn)為軟件共享的實(shí)現(xiàn)提供了可能,軟件功能的Web服務(wù)化,提供了在Internet范圍內(nèi)可共享的業(yè)務(wù)邏輯,最終形成以各種Web服務(wù)為基礎(chǔ)的開放性的功能構(gòu)件體系。下面,將對(duì)如何利用Web Services技術(shù)實(shí)現(xiàn)軟件共享進(jìn)行探討。

  基于Web Services技術(shù)實(shí)現(xiàn)軟件共享

  1、Web Services技術(shù)簡(jiǎn)介

  Web Services可以看成是部署在Internet上的API,它可以方便被應(yīng)用程序甚至其它Web Services集成和調(diào)用,形成新的應(yīng)用服務(wù)。它具有完好的封裝性,松散耦合,高度可集成能力。毫無疑問,Web Services技術(shù)將成為下一代Web的主流技術(shù),它是實(shí)現(xiàn)"軟件作為一種服務(wù)"的體現(xiàn)。

  Web Services體系結(jié)構(gòu)如下,由服務(wù)請(qǐng)求者、服務(wù)代理者和服務(wù)提供者組成:


  Web服務(wù)提供者就是Web服務(wù)的擁有者,它在服務(wù)代理處注冊(cè)以配置和發(fā)布服務(wù),并耐心等待為其他服務(wù)和用戶提供自己的功能;Web服務(wù)請(qǐng)求者就是Web功能的使用者,它使用查找操作來從服務(wù)代理者檢索服務(wù)描述,然后與服務(wù)提供者綁定并調(diào)用Web服務(wù)或同它交互。
Web服務(wù)提供者相當(dāng)于中介,它把一個(gè)Web服務(wù)請(qǐng)求者與合適的Web服務(wù)提供者聯(lián)系在一起,一般是UDDI,UDDI為服務(wù)請(qǐng)求者提供了動(dòng)態(tài)查找Web服務(wù)的機(jī)制。

  2、基于Web Services的軟件共享的實(shí)現(xiàn)方式

  在軟件開發(fā)過程中,人們常常按照功能把軟件劃分為不同的模塊,以方便模塊功能的重組復(fù)用和修改升級(jí)。通過Web Services技術(shù)實(shí)現(xiàn)軟件共享,也需要首先對(duì)集成系統(tǒng)按功能劃分模塊;然后,創(chuàng)建Web服務(wù)來實(shí)現(xiàn)這些功能模塊;為了使Web服務(wù)可訪問,還需要發(fā)布服務(wù)描述(部署Web服務(wù))以便其它模塊可以查找并調(diào)用它。這樣,以Web服務(wù)方式實(shí)現(xiàn)的軟件功能就可以被應(yīng)用程序甚至其它Web服務(wù)共享。

  應(yīng)用程序或其它Web服務(wù)等服務(wù)請(qǐng)求者當(dāng)需要調(diào)用Web服務(wù)時(shí),首先檢索服務(wù)描述或在服務(wù)注冊(cè)中心查詢所要求的服務(wù)類型。當(dāng)找到所需服務(wù)時(shí),就可以使用服務(wù)描述與服務(wù)提供者進(jìn)行綁定,并調(diào)用相應(yīng)的服務(wù)。

  微軟新推出的旗艦產(chǎn)品Visual Studio.NET是被稱為開發(fā)Web服務(wù)的首選工具,使用Visual Studio.NET可以非常方便地實(shí)現(xiàn)Web服務(wù)創(chuàng)建與調(diào)用。下面,將給出一個(gè)具體的基于Web Services技術(shù)實(shí)現(xiàn)軟件共享的實(shí)例。
  3、軟件共享的應(yīng)用舉例:學(xué)生身份驗(yàn)證模塊的共享實(shí)現(xiàn)。

  目前,在高校中有很多的軟件系統(tǒng),例如:選課系統(tǒng)、成績(jī)查詢系統(tǒng)、網(wǎng)絡(luò)課程系統(tǒng)、圖書館系統(tǒng)、學(xué)生財(cái)務(wù)系統(tǒng)等。由于各個(gè)系統(tǒng)相互獨(dú)立,每一個(gè)系統(tǒng)都有一個(gè)學(xué)生身份驗(yàn)證模塊,存在功能上的重復(fù)設(shè)計(jì);另外,各個(gè)系統(tǒng)的相互獨(dú)立,存在著學(xué)生需要記憶不同系統(tǒng)的密碼。

  鑒于以上情況及目前校園網(wǎng)絡(luò)的高度發(fā)達(dá),我們完全可以用Web服務(wù)的方式來實(shí)現(xiàn)學(xué)生身份驗(yàn)證模塊的共享。下面將介紹使用Visual Studio.NET環(huán)境用C#語言實(shí)現(xiàn)創(chuàng)建并調(diào)用學(xué)生身份驗(yàn)證Web服務(wù)的過程。

  1) Web服務(wù)的創(chuàng)建

  學(xué)生身份驗(yàn)證模塊有1個(gè)Web服務(wù)構(gòu)成:

public Boolean ValidUser(string userID,string Pwd)

  Web服務(wù)ValidUser用于驗(yàn)證學(xué)生身份。已經(jīng)在Sql Server數(shù)據(jù)庫(kù)StudentsInfo中建立了一個(gè)學(xué)生基本信息表Student,其中字段UserID、Pwd分別保存學(xué)生的用戶代碼及密碼。

  下面將具體介紹Web服務(wù)的創(chuàng)建過程:

  a 運(yùn)行Visual Studio.NET開發(fā)環(huán)境,新建"ASP.NET Web服務(wù)"類型的項(xiàng)目WSStudentLogin。

  b Web服務(wù)的具體代碼實(shí)現(xiàn)。

 
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=";
//建立一個(gè)數(shù)據(jù)庫(kù)連接對(duì)象
SqlConnection tempConn=new SqlConnection(ConnStr);
sqlStr="select * from student where ID='"+userID+"' and pwd='"+Pwd+"';";
//建立一個(gè)命令對(duì)象
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]說明的方法才是可以被遠(yuǎn)程調(diào)用的Web服務(wù)。因此方法前面的[WebMethod]不能省略。

  要使Web服務(wù)可由他人使用,必須將其部署到您希望支持的客戶端可訪問的Web服務(wù)器。若要將Web服務(wù)部署到開發(fā)服務(wù)器以外的服務(wù)器,可以添加 Web安裝項(xiàng)目或者將所需的文件復(fù)制到目標(biāo)服務(wù)器。為篇幅所限,本文不對(duì)此展開深入討論,假設(shè)本例的Web服務(wù)部署在開發(fā)服務(wù)器上。

  創(chuàng)建了并部署了Web服務(wù)之后,我們就可以在客戶端調(diào)用相應(yīng)的Web服務(wù)。下面介紹如何在客戶端定位、引用Web服務(wù)功能。

  2)Web服務(wù)的調(diào)用

  使用Web服務(wù)的過程實(shí)際上是實(shí)現(xiàn)Web服務(wù)的使用者與Web服務(wù)實(shí)現(xiàn)綁定,并調(diào)用其方法的過程。為了簡(jiǎn)化綁定的過程。Visual Studio.NET提供了服務(wù)代理類的方法。服務(wù)代理類是根據(jù)Web服務(wù)的描述文檔(XXX.WSDL)產(chǎn)生本地類,在執(zhí)行的過程中,客戶使用代理類中的信息訪問Web服務(wù),實(shí)現(xiàn)實(shí)際的方法的調(diào)用。Visual Studio.NET提供了我們實(shí)現(xiàn)這一過程的簡(jiǎn)單方式:

  a 創(chuàng)建Web服務(wù)訪問客戶程序。

  Web服務(wù)訪問客戶程序可是各種類型的應(yīng)用程序,也可以是其它Web服務(wù)。在這里,我們新建一個(gè)"ASP.NET WEB應(yīng)用程序"類型的項(xiàng)目WebApplication2。

  b、服務(wù)引用。

  首先,在"項(xiàng)目"菜單上單擊"添加 Web 引用"。接下來,因?yàn)楸纠械腤eb服務(wù)位于本地計(jì)算機(jī)上,我們單擊瀏覽器窗格中的"本地計(jì)算機(jī)上的 Web 服務(wù)"鏈接。然后,從所提供的列表中單擊Service1鏈接以檢索有關(guān)該 Web服務(wù)的信息。然后,單擊"添加引用"為目標(biāo)Web服務(wù)添加Web引用。Visual Studio.NET將下載服務(wù)說明并生成一個(gè)作為應(yīng)用程序和Web服務(wù)之間的接口的代理類。

  c、在客戶程序中調(diào)用Web服務(wù)的具體代碼舉例。

private void Button1_Click(object sender, System.EventArgs e)
{ //創(chuàng)建代理類對(duì)象
localhost.Service1 ClientProxy=new localhost.Service1();
try
{//通過代碼類對(duì)象訪問Web服務(wù)
if (ClientProxy.ValidUser(TxtUserId.Text,txtPwd.Text))
Label1.Text="OK" ;
else
Label1.Text="ERROR" ;
}
catch(e)
{throw e;}
finally
{ClientProxy.Dispose();}
}

  其它

  Web Services技術(shù)為軟件共享的實(shí)現(xiàn),為在現(xiàn)有信息系統(tǒng)基礎(chǔ)上實(shí)現(xiàn)系統(tǒng)集成提供了很好的技術(shù)基礎(chǔ)。但是,要使基于Web Service技術(shù)實(shí)現(xiàn)軟件共享具有真正的實(shí)用性。我們還要需要解決好以下一些問題:首先是安全可靠性,一是Web服務(wù)網(wǎng)絡(luò)傳輸?shù)倪B接可靠性,二是Web服務(wù)內(nèi)容的可靠性,即確保數(shù)據(jù)完整性和保密性。其次是服務(wù)使用權(quán)限的控制,Web服務(wù)是"軟件作為一種服務(wù)"的體現(xiàn),什么人被禁止使用此服務(wù),什么人被允許使用此服務(wù),使用此服務(wù)如何收費(fèi)等,都是實(shí)際使用需要解決的問題。另外,Web服務(wù)的承載能力、Web服務(wù)的部署與發(fā)現(xiàn)、客戶調(diào)用Web服務(wù)失效處理等問題也是需要解決好的問題。

  小結(jié)

  本文提出了從軟件功能共享的角度來實(shí)現(xiàn)軟件共享,討論了利用Web Services技術(shù)來實(shí)現(xiàn)遠(yuǎn)程軟件功能共享,并且通過學(xué)生身體驗(yàn)證模塊來實(shí)例分析軟件功能共享的有效性及其優(yōu)點(diǎn)。軟件功能共享的研究對(duì)實(shí)現(xiàn)分布式計(jì)算等都具有重大的意義,它還需要進(jìn)一步的研究。