隨著Internet/Intranet的發(fā)展,開發(fā)模式發(fā)生了變化,第一波重要的技術(shù)是http/html,他給Internet/Intranet和電子商務(wù)都帶來重要的影響;第二波是java技術(shù)的興起,java帶來了跨品臺的鍥機,讓開發(fā)人員可以使用單一的語言和環(huán)境開發(fā)應(yīng)用系統(tǒng);第三波是xml技術(shù)的興起,它提供了標(biāo)準(zhǔn)的數(shù)據(jù)封裝,讓數(shù)據(jù)交換跨越了各種平臺、操作系統(tǒng)和各種工具,通過xml,各種數(shù)據(jù)交換不再讓人頭痛。 Webservice 的概念是使用一個標(biāo)準(zhǔn)的輸出接口來定義代碼提供的功能,以便讓外界可以通過這個標(biāo)準(zhǔn)的輸出接口來調(diào)用,而所謂的標(biāo)準(zhǔn)輸出接口就是wsdl,wsdl是一個xml組成的文件,描述了實現(xiàn)程序?qū)ν馓峁┖瘮?shù)的原型,客戶端可以通過wsdl來調(diào)用實現(xiàn)程序提供的服務(wù)代碼。在這里我不想詳細(xì)的介紹webservice的原理和概念,通過一個例子來展示新的基于網(wǎng)絡(luò)的開發(fā)模式。 在這個例子中服務(wù)端用java完成,客戶端用delphi完成,開發(fā)工具是JBuilder9和Delphi7,服務(wù)器是tomcat5.0。 首先建立服務(wù)端程序: 啟動JBuilder建立一個工程,設(shè)置服務(wù)器為tomcat4.0(因為JBuilder9不支持tomcat5.0,實現(xiàn)后將其在tomcat5.0中發(fā)布)。 新建一個class 代碼如下: public class HelloWorld{ public String sayHello(){ return "Hello world!"; }
public String echo(String u){ return "Hello " + u; } } 選擇File菜單New,在彈出的對話框中選擇web services頁中的Web Serivice Configuation Wizard,新建webapp axis并配置servers。 再次選擇File菜單,New再出現(xiàn)的窗口中選擇Export as a web service Wizard,在彈出的向?qū)е羞x擇要導(dǎo)出的類名,其它項直接選默認(rèn)值即可。 運行剛才建立的程序,出現(xiàn)“JBuilder Apache Axis Admin Console”的頁面表示剛才建立的webservice成功。點擊View超級鏈接進入“And now... Some Services”頁面,點擊HelloWorld(WSDL)的鏈接出現(xiàn)WSDL描述文件,至此webservice服務(wù)端建立完成。 將剛才建立的webservice發(fā)布到tomcat5.0中,在tomcat的webapps目錄下新建webservicetest目錄,將用JBulider建立的工程目錄下的 axis目錄下的文件全部復(fù)制到其中,重新啟動tomcat,訪問http://localhost:8080/webservicetest/,如果看到“JBuilder Apache Axis Admin Console”頁面說明發(fā)布成功。 啟動Delphi7新建一個工程,然后選擇新建webservices中WSDL importer向?qū)В瑢偛虐l(fā)布的webservice描述文件WSDL導(dǎo)入(我的地址是:http://localhost:8080/webservicetest/services/HelloWorld?wsdl)自動生成一個單元HelloWorld1,在Unit1中使用單元HelloWorld1,在窗體上放置兩個button,在button1的Click事件中寫如下測試代碼: procedure TForm1.Button1Click(Sender: TObject); var test:HelloWorld; str:String; begin test := GetHelloWorld;(得到webservice提供的遠(yuǎn)程接口) str := test.sayHello; ShowMessage(str); test := nil; end; 運行測試程序, 彈出“hello,world”說明成功。Button的測試代碼類似,我在這里不再重復(fù)。 至此,一個完成webservice程序完成,并能順利運行。 |
|