1. 程式人生 > >WebService 的創建,部署和使用

WebService 的創建,部署和使用

framework model 新建文件夾 文件拷貝 支持 control ice div 默認

轉自:http://blog.csdn.net/yexuanbaby/article/details/9029605/

WebService,即Web服務,能使得運行在不同機器上的不同應用無須借助,專門的第三方軟件或硬件,就可相互交換數據或集成.

第一次選擇WebService,是為了替代數據庫遠程連接.我們都知道當SQL允許遠程時,則要打開某一端口.但這一點在我們已經部署好的服務器上,卻是不被允許的,於是就選擇WebService來代替了.當然現在我們也可以選擇WCF來完成.不過這不是我們今天的主題.

WebService返回的數據為XML,這是我們都很熟悉的一種數據方式,大大方便了我們的工作當然,WebService給我們帶來的好處遠不止這些.我不想講得更多.相信當你能夠熟練運用WebService後,你會發現這是一把鋒利的寶刃.

對於初次接觸WebServcie的人來說,長篇理論,不如一個實例來得更實際些,我們更看重的是到底如何能夠創建一個WebService並且將其部署,和使用.

下面我將逐步的完成一個加減乘除功能的WebServic.

開發環境:VS2012

IIS環境:WINSERVER2008R2 IIS7.5

第一步:打開VS2012,新建空項目,註意選擇.NET Framework的版本.這裏我選擇的是.NET Framework 4

技術分享

新建好項目後,在項目中添加一個WebService項

技術分享

打開這個文件,我們可以看到,代碼如下

using System;
using System.Collections.Generic;
using System.Linq; using System.Web; using System.Web.Services; namespace CalculateService { /// <summary> /// WebService1 的摘要說明 /// </summary> [WebService(Namespace = "http://tempuri.org/")] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] [System.ComponentModel.ToolboxItem(
false)] // 若要允許使用 ASP.NET AJAX 從腳本中調用此 Web 服務,請取消註釋以下行。 // [System.Web.Script.Services.ScriptService] public class CalCulService : System.Web.Services.WebService { [WebMethod] public string HelloWorld() { return "Hello World"; } } }

將HellowWorld這段代碼刪除,修改後如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;

namespace CalculateService
{
    /// <summary>
    /// CalCulService 的摘要說明
    /// </summary>
    [WebService(Namespace = "http://login.wxjy.info")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [System.ComponentModel.ToolboxItem(false)]
    // 若要允許使用 ASP.NET AJAX 從腳本中調用此 Web 服務,請取消註釋以下行。 
    // [System.Web.Script.Services.ScriptService]
    public class CalCulService : System.Web.Services.WebService
    {      
        [WebMethod]
        public int Sum(int a, int b)
        {
            return a + b;
        }

        [WebMethod]
        public int Sub(int a, int b)
        {
            return a - b;
        }

        [WebMethod]
        public double Mult(double a, double b)
        {
            return a * b;
        }

        [WebMethod]
        public double Div(double a, double b)
        {
            return a / b;
        }
    }
}

此時,我們已經完成這個WebService的代碼部分.接下來我們要將這個WebService打包發布

在項目上點擊右鍵,點擊菜單中的發布

技術分享

此時出現如下頁面

技術分享

點擊下拉菜單選擇新建配置文件

技術分享

技術分享技術分享

技術分享

技術分享技術分享

技術分享

完成以上步驟後,我們可以在設置文件生成的文件夾內看到生成的以下文件

技術分享

現在我們要將生成的文件拷貝到已經部署好的IIS服務器上:在服務器上新建文件夾,將文件拷貝至文件夾內,並且為文件夾設置匿名權限.

技術分享

現在我們在IIS中添加網站

技術分享

需要註意的是:我們的這個WebService是基於.NET 4開發的.如果你的IIS默認使用的是.NET 2.0,那麽發布後將會出現異常,而無法訪問.

查看一下應用程序池的右邊的應用程序池默認設置

技術分享

提供兩種解決方案:第一種,在上面的表格中,將應用程序池默認改為4.0即可.當然這是指你的IIS中沒有需要2.0的應用程序和網站.

如果你的IIS中還有其它的需要.NET 2.0的應用程序,這時候你可以選擇第二個辦法

首先添加一個應用程序池

技術分享

然後添加網站,將網站的應用程序池改為新建的應用程序池

技術分享

當然,我們也可以將這個項目的.NET版本改為3.5,然後重新打包發布.那麽就不需要添加對4.0的支持了.

添加完畢,啟動網站,此時可以關閉與服務器的連接了.

在本地的瀏覽器中輸入地址

http://xxx.xxx.com/calculservice.asmx

此時我們可以看到以下的界面

技術分享

此時我們已經完成了這個WebService的創建和部署.接下來,我們要在本地使用它

打開VS2012,新建項目,項目名為TestCalCul

技術分享

在項目中添加新建項

技術分享

在項目中引用項上點擊右鍵,選擇添加服務引用,顯示界面如下:

技術分享

點擊左下角的高級,出現界面如下

技術分享

點擊添加Web引用,出現界面如下

技術分享

在URL中輸入我們發布的WebService的URL地址,系統會自動搜索到服務.並且為Web引用設置一個引用名.此引用名將是我們在項目中引用這個服務的命名空間

技術分享

點擊添加引用,引用完成.

接下來,我們在WebForm1的cs文件中寫如下代碼:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

//不要忘記為WebService添加using引用
using TestCalCul.MyWebService;

namespace TestCalCul
{
    public partial class WebForm1 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            CalCulService cal = new CalCulService();
            double a = 29755;
            double b = 112.58;
            Response.Write(cal.Mult(a, b).ToString());
        }
    }
}

接下來,在瀏覽器中運行該項目.可以看到如下結果

技術分享

此時我們已經完成了這個WebService的使用過程

其實,這個實例在開發中,沒有任何意義.

但是通過這個實例,我們可以看出WebService的復用性,簡單性是非常好的.

在VS的環境下,我們可以輕易完成一個WebService的開發過程.

而WebService返回給我們的XML數據方式,也可以充分的和JavaScript等任何一種可以處理XML的語言相結合來

完成我們的需求.

在這裏要註意,當WebService連接數據庫時,我們要適當的給WebService進行加密.

加密的方式很多,你可以通過在IIS服務器上禁止匿名訪問來實現,也可以給WebService的驗證增加驗證內容,最

簡單的就是加上用戶名和密碼.

還要註意,不要用有含義的方法名稱,比如Login或者PayOrder等,回傳數據不要使用bool值,盡量使用字符串來替

代,最好在字符串中加上幹擾碼等.

WebService 的創建,部署和使用