VS。NET 我可以說不嗎?(再談Web Service)
小氣的神 2001.08.06
不久前我曾寫了一篇有關用VS。NET Beta 2 來完成一個Web Service 的整個過程。這篇文章也是有關Web Service的,不過實現Web Service的整個過程完全是手工方式的,可以不依賴于VS。NET這樣的開發工具。VS。NET開發Web Service是非常簡便的,同樣它也封裝了許多底層的信息,它希望開發人員可以把精力集中在主要的邏輯實現和Service本身上。
至于對VS。NET你能否說不,那么要看你自己的理解了,好了言歸正轉,開始實現這個Web Service吧。
首先你必須已經成功安裝Framework SDK Beta 2 ,然后用Notepad、IIS、IE、Dos 的Command Prompt就可以完成了。整個功能還是沿用上次的例子,一個HelloWorld 和Add的例子,如果你Download了兩個Zip包,你會發現兩者中許多代碼是一樣的。特別是客戶端這邊,它根本不關心你是用什么生成的。
整個的過程分為以下幾步:
1. 手工生成一個 .asmx文件。
2. 設置一下你的IIS服務器。
3. 在瀏覽器中測試這個Web Service
4. 生成代理包
5. 編寫客戶端代碼進行測試。
簡單的看和上次在VS。NET中沒有什么不同,唯一多的是要手工設置一下IIS,在VS。NET中是通過把這頁設成Start Page然后F5來完成對IIS的設置的。有關設置的方面,dotnet比以前的ASP或Com有許多不同,全面了引進XML格式,這個不在這里說了。我們不要涉及這些。
具體的說:
1. 手工生成一個 .asmx文件。
在VS。NET中它自動生成一個和Project同名的. asmx文件,同樣也會再自動生成一個 .asmx.vb 或 .asmx.cs 文件,其實實現Service你的代碼是寫在這個文件中的,當然你也可以直接在 .asmx文件中直接寫,這樣IIS第一次運行時會編譯這個.asmx文件,在特定的目錄下生成一個DLL文件。不過我喜歡用象VS。NET的方式來實現,這樣更有封裝性,實際中應用中也更安全。道理就象一開始我們直接在ASP中用ADO訪問數據庫,以后卻自然的是用一個組件來完成這些,然后在ASP中調用這個組件一樣。但如果你完全沿用VS。NET的作法,是無法編譯通過的。VS。NET中的.asmx文件是這樣的:
<%@ WebService Language="vb" Codebehind="Service1.asmx.vb" Class="WebService1.Service1" %>,然后是一個.vb 的文件,但如果我們照抄它,編譯時需要-r許多庫文件。你可以這樣做,把這句話改成這樣的:<%@ WebService Language="vb" class="MyWebService.Service1, WebService1" %> MyWebService是Namespace , Service1是你實現Service功能的類名,WebService1是你編譯.vb成DLL的名字。然后在你的 .asmx.vb 中先加上這兩句話:
Namespace MyWebService
End Namespace
然后你會發現我Copy了原來在VS。NET中的所有實現WebService的代碼。然后可以存盤,將.asmx和 .asmx.vb放到一個目錄中,比如:MyService,然后準備在Dos 的Command中編譯這個Web Service了。使用下面的編譯的編譯命令:
VBC /t:library /r:System.web.Services.dll /r:System.dll /r:System.XML.dll /out:bin/WebService1.dll Service1.asmx.vb
確認你在MyService目錄下打入這個命令,這樣會在這個目錄下生成的子目錄Bin中發現這個DLL文件:WebService1.DLL 。如果這一切都沒有問題,那么你過了第一關。
2. 在IIS中設置。
這就比較簡單了,點中MyService目錄右鍵選擇共享,然后共享這個目錄或是在管理工具中一步一步的新增一個虛擬目錄都是一樣的。但要效驗你的Application Name:是否是叫WebService1和你的.asmx中class="MyWebService.Service1, WebService1" 這句對應。具體的你可以看附帶的圖02SetupIIS.jpg。剛才編譯時用的 /out:bin/WebService1會在這里有用,如果我們什么也步配置,那么默認的是去/bin目錄中看是否有這個文件,如果你忘了加這個參數,那么編譯完成后最好Copy編譯的DLL去當前目錄的bin子目錄
3. 完成IIS的設置后,可以用IE瀏覽器來測試了。
具體的你可以訪問這樣的URL:http://localhost/你共享的目錄名/你的WebService.asmx 如果正常它會檢查被編譯的類,并返回一個有關這個Web Service的HTML視圖。象附帶的圖中03IEOpenAsmx.jpg中的一樣。其實它是由一個DefaultWsdlHelpGenerator.aspx的模板文件產生的,這個文件在C:WINNTMicrosoft.NETFrameworkv1.0.2914CONFIG 目錄中。一千五多行代碼,也許中文版出來以后這個模板也會成中文的。
新聞熱點
疑難解答
圖片精選