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

WebService 的建立,部署和使用

           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項

開啟這個檔案,我們可以看到,程式碼如下

[csharp] view plaincopyprint?
  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.Linq;  
  4. using System.Web;  
  5. using System.Web.Services;  
  6. namespace CalculateService  
  7. {  
  8.     /// <summary>
  9.     /// WebService1 的摘要說明
  10.     /// </summary>
  11.     [WebService(Namespace = "http://tempuri.org/")]  
  12.     [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]  
  13.     [System.ComponentModel.ToolboxItem(false
    )]  
  14.     // 若要允許使用 ASP.NET AJAX 從指令碼中呼叫此 Web 服務,請取消註釋以下行。 
  15.     // [System.Web.Script.Services.ScriptService]
  16.     publicclass CalCulService : System.Web.Services.WebService  
  17.     {  
  18.         [WebMethod]  
  19.         publicstring HelloWorld()  
  20.         {  
  21.             return"Hello World";  
  22.         }  
  23.     }  
  24. }  
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這段程式碼刪除,修改後如下

[csharp] view plaincopyprint?
  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.Linq;  
  4. using System.Web;  
  5. using System.Web.Services;  
  6. namespace CalculateService  
  7. {  
  8.     /// <summary>
  9.     /// CalCulService 的摘要說明
  10.     /// </summary>
  11.     [WebService(Namespace = "http://login.wxjy.info")]  
  12.     [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]  
  13.     [System.ComponentModel.ToolboxItem(false)]  
  14.     // 若要允許使用 ASP.NET AJAX 從指令碼中呼叫此 Web 服務,請取消註釋以下行。 
  15.     // [System.Web.Script.Services.ScriptService]
  16.     publicclass CalCulService : System.Web.Services.WebService  
  17.     {        
  18.         [WebMethod]  
  19.         publicint Sum(int a, int b)  
  20.         {  
  21.             return a + b;  
  22.         }  
  23.         [WebMethod]  
  24.         publicint Sub(int a, int b)  
  25.         {  
  26.             return a - b;  
  27.         }  
  28.         [WebMethod]  
  29.         publicdouble Mult(double a, double b)  
  30.         {  
  31.             return a * b;  
  32.         }  
  33.         [WebMethod]  
  34.         publicdouble Div(double a, double b)  
  35.         {  
  36.             return a / b;  
  37.         }  
  38.     }  
  39. }  
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的支援了.

新增完畢,啟動網站,此時可以關閉與伺服器的連線了.

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

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

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

開啟VS2012,新建專案,專案名為TestCalCul

在專案中新增新建項

在專案中引用項上點選右鍵,選擇新增服務引用,顯示介面如下:

點選左下角的高階,出現介面如下

點選新增Web引用,出現介面如下

在URL中輸入我們釋出的WebService的URL地址,系統會自動搜尋到服務.並且為Web引用設定一個引用名.此引用名將是我們在專案中引用這個服務的名稱空間

點選新增引用,引用完成.

接下來,我們在WebForm1的cs檔案中寫如下程式碼

[csharp] view plaincopyprint?
  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.Linq;  
  4. using System.Web;  
  5. using System.Web.UI;  
  6. using System.Web.UI.WebControls;  
  7. //不要忘記為WebService新增using引用
  8. using TestCalCul.MyWebService;  
  9. namespace TestCalCul  
  10. {  
  11.     public partial class WebForm1 : System.Web.UI.Page  
  12.     {  
  13.         protectedvoid Page_Load(object sender, EventArgs e)  
  14.         {  
  15.             CalCulService cal = new CalCulService();  
  16.             double a = 29755;  
  17.             double b = 112.58;  
  18.             Response.Write(cal.Mult(a, b).ToString());  
  19.         }  
  20.     }  
  21. }  
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建立,部署使用

WebService 的建立,部署和使用 轉載:http://blog.csdn.net/yexuanbaby/article/details/9029605/ WebService,即Web服務,能使得執行在不同機器上的不同應用無須藉助,專門的第三方軟體或硬體,就可相互交換資料或整合.  &

WebService建立,部署使用

           WebService,即Web服務,能使得執行在不同機器上的不同應用無須藉助,專門的第三方軟體或硬體,就可相互交換資料或整合.    第一次選擇WebService,是為了替代資料庫遠端連線.我們都知道當SQL允許遠端時,則要開啟某一埠.但這一點在

C# 建立部署呼叫WebService的簡單示例

webservice 可以用於分散式應用程式之間的互動,和不同程式之間的互動。 概念性的東西就不說太多,下面開始建立一個簡單的webservice的例子。這裡我用的是Visual Studio 2015開發工具。 首先建立一個空的Web應用程式。 然後滑鼠右

WebService 的創建,部署使用

framework model 新建文件夾 文件拷貝 支持 control ice div 默認 轉自:http://blog.csdn.net/yexuanbaby/article/details/9029605/ WebService,即Web服務,能使得運行在不

Idea釋出Axis2服務端、建立WebService客戶端spring整合Axis2框架釋出服務?

一、使用預設的WEBSERVICE服務 1 新建專案 2 選擇 java->Java EE(由J2EE 8改為J2EE 7的版本,解決建立WEBSERVICE專案無WEB.XML的問題) 3 建立WEBSERVICE服務端 4 專案結構如下 5 生成wsd

利用myeclipse建立webservice服務端客戶端

一、建立webservice服務端:   1、新建一個web service project,名稱為webservice_server截圖如下,點選finish. 2、選擇工程,點選右鍵,選擇new->other,選擇myelipse中的webservice

【學習筆記asp.net】WebService建立、釋出及在IIS上部署

一、專案建立1.     首先開啟VS,這裡我以VS2013為例2.     點選“新建專案”,依次選擇“Web”——>“Visual Studio 2012”——>“ASP.NET空Web應用程式”,專案名稱、路徑自己設定,這裡我使用預設設定3.     專案建立完成後,進入如下介面4.    

CXF建立webservice客戶端服務端

一、CXF的介紹 Apache CXF是一個開源的WebService框架,CXF大大簡化了Webservice的建立,同時它繼承了XFire的傳統,一樣可以和spring天然的進行無縫的整合。CXF框架是一種基於servlet技術的SOA應用開發框架,要正常運用基於CX

Unity3D中tolua的“安裝部署使用“教程

替換 部署 ref 比對 text asset gin 系統 .com 棄坑Cocos2d-x,轉戰Unity3D 考慮到項目一定會使用熱更,花了不少時間比對了lua的支持方案,最後定為tolua,原因不解釋。 俗話說,萬事開頭難,中間難,最後難……我反正是沒有找到如何安裝

使用python腳本代碼本地測試環境部署啟動 V0.1

svn python #!/usr/bin/evn python#encoding=utf-8#author:[email protected]/* */import sysimport osimport shutilimport commandsimport timeimport sub

CentOS 7.x下部署配置zabbix 3.2.x監控工具

centos zabbix 監控一.安裝zabbix服務端1.下載官方yum源:rpm -ivh http://repo.zabbix.com/zabbix/3.2/rhel/7/x86_64/zabbix-release-3.2-1.el7.noarch.rpm2.安裝zabbix服務端(會自動安裝http

storm集群部署配置過程詳解

多少 帶來 進程 創建 使用 命令 介紹 aml 可能 ---恢復內容開始--- 先整體介紹一下搭建storm集群的步驟: 設置zookeeper集群 安裝依賴到所有nimbus和worker節點 下載並解壓storm發布版本到所有nimbus和worker節點 配置s

nfs部署優化

nfs部署和優化nfs部署和優化一. NFS1. NFS簡介NFS全稱是network file system(網絡文件系統)NFS允許一個系統在網絡上與他人共享目錄和文件。通過使用NFS用戶和程序可以像訪問本地文件一樣訪問遠端系統上的文件。 假如有三臺機器A, B, C它們需要訪問同一個目錄目錄中都是圖片傳

samba 部署優化

samba 部署和優化samba 部署和優化一. samba配置1. 什麽是sambaSamba服務類似於windows上的共享功能,可以實現在Linux上共享文件,windows上訪問,當然在Linux上也可以訪問到。是一種在局域網上共享文件和打印機的一種通信協議,它為局域網內的不同計算機之間提供文件及打印

Oracle 11.2.0.4.0 Dataguard部署日常維護(6)-Active dataguard

ima file man log role 主備 span for current 1. 檢查主備庫的狀態 on primary column DATABASE_ROLE format a20 column OPEN_MODE format a15 column PR

ActiveMQ部署503的錯誤

cal pub tools.jar 啟動腳本 save http 安裝部署 tools stop 最近部署ActiveMQ的時候,發現有的服務器可以打開後臺管理網址,有的服務器無法打開,Jetty報503 Service Unavailable。 搞了很久終於發現了問題,現

GlusterFS 部署應用

glusterfs 關於GlusterFS的原理理論介紹,請點擊這裏查看一、GlusterFS 安裝 本博文講簡要介紹GlusterFS在CentOS 7 中的部署和應用。由於GlusterFS需要使用網絡,因此還必須事先根據環境設置防火墻規則,關閉SELinux。 因為Glu

Rundeck部署基本使用

資源 connector api 限制 xmx 歷史 win 通知 執行 rundeck 介紹 Rundeck 是一款能在數據中心或雲環境中的日常業務中使程序自己主動化的開源軟件。Rundeck 提供了大量功能。能夠減輕耗時繁重的體力勞動。團隊能夠相互協作,分享

Eucalyptus企業雲計算(建立能夠Amazon EC2兼容的雲)

title 創建者 一個 2009年 但是 聯合 網絡設備 環境 存儲 Eucalyptus是與一個在加利福尼亞大學的研究性項目,創建了一個使企業能夠使用它們內部IT資源(包括服務器、存儲系統、網絡設備)的開源界面,來建立能夠和Amazon EC2兼容的雲。 &ldquo

Linux集群部署ipvsadm命令的使用

linux 集群 ipvsadm 在日常的使用中,一臺服務器足夠勝任很多的工作,但是當很多人同時訪問的時候就會顯得稍有些無力,這個時候。可以有兩種解決的方法,第一種是不斷的改善這臺服務器的性能,但是總是會有一個上限存在,而且提升的效果並不明顯。另外一種方法就是使用多臺服務器,來均攤需要處理