使用C#建立webservice及三種調用方式

來源:互聯網
上載者:User
web|建立 微軟.NET戰略的一個比較重要的部分就是webservice,利用webservice我們可以建立真正有效分布式應用程式。
下面,我們對webservice做一些說明。
假設A是用戶端,B是webservice服務端,使用者通過http協議向伺服器發送soap請求,webservice返回用戶端XML格式的資料。
現在我們看一看建立一個webservice的大致過程:
服務端的webservice是必須要建的。中間的soap,xml我們不用去關心,在用戶端這邊,比較重要的是如何從webservice取得對象?答案是用的是proxy對象。用戶端由代理對象(proxy)負責與webservice的通訊。所以在用戶端使用webservice,完全和使用一個本機物件是一樣的。

我們現在以一個簡單的執行個體來說明。
開啟vs.net,建立工程(asp.net  web服務),在位置中鍵入http://localhost/webserver,其中webserver就是工程的名字。確定後,出現一個Service1.asmx.cx,雙擊,出現代碼視窗,
using  System;
using  System.Collections;
using  System.ComponentModel;
using  System.Data;
using  System.Diagnostics;
using  System.Web;
using  System.Web.Services;

namespace  webserver
{
///  <summary>
///  Service1  的摘要說明。
///  </summary>
(1)
public  class  Service1  :  System.Web.Services.WebService
{
public  Service1()
{
//CODEGEN:該調用是  ASP.NET  Web  服務設計器所必需的
InitializeComponent();
}

#region  Component  Designer  generated  code

//Web  服務設計器所必需的
private  IContainer  components  =  null;

///  <summary>
///  設計器支援所需的方法  -  不要使用代碼編輯器修改
///  此方法的內容。
///  </summary>
private  void  InitializeComponent()
{
}

///  <summary>
///  清理所有正在使用的資源。
///  </summary>
protected  override  void  Dispose(  bool  disposing  )
{
if(disposing  &&  components  !=  null)
{
components.Dispose();
}
base.Dispose(disposing);
}

#endregion

//  WEB  服務樣本
//  HelloWorld()  樣本服務返回字串  Hello  World
//  若要產生,請取消注釋下列行,然後儲存並產生項目
//  若要測試此  Web  服務,請按  F5  鍵

// [WebMethod]
// public  string  HelloWorld()
// {
// return  "Hello  World";
// }
}
}
下面在(1)處加入
[WebService(Namespace="http://localhost/webserver/")]
這是因為soap是基於http協議上的,用戶端無法知道webservice位於那個伺服器上。在實際應用中,比如http://www.ourfly.com上放置這個webservice,則Namespace改為http://www.ourfly.com/webserver.

下面我們給這個webservice添加一個方法。
// [WebMethod]
// public  string  HelloWorld()
// {
// return  "Hello  World";
// }
微軟幫我們寫好了一個,接著添加一個方法。方法名稱叫show.
[WebMethod]
public  string  show(string  yourname)
{
return  “http://www.ourfly.com”+”歡迎”+yourname;
}
現在,就可以運行了,按F5,點擊show,輸入你的名字,然後點擊invote
看到了吧。
<?xml  version="1.0"  encoding="utf-8"  ?>  
    <string  xmlns="http://tempuri.org/">http://www.ourfly.com歡迎yyg</string>  

成功了。開啟bin目錄,Vs.net已經將proxy做好了.webserver.dll.

現在我們在不同的環境下測試:
1. 開啟vs.net,建立”windows應用程式”工程,命名為Client,增加按鈕,文字框。
現在要用到代理了,按右鍵右邊的reference(引用),選擇”添加引用”,選擇瀏覽,找到webserver目錄下的bin目錄下的webserver.dll
再加入一個system.web.webservices的引用,在列表中有。
在form1.cs裡,加入
using  System.Web.Services;
using  webserver;

然後在
private  System.Windows.Forms.Button  button1;
private  System.Windows.Forms.TextBox  textBox1;
後面,插入
private  webserver.service1  Client
建立一個service1的執行個體。雙擊按鈕,代碼如下:
private  void  button1_Click(object  sender,  System.EventArgs  e)
{
Client  =new  Service1();
string  name;
name=Client.show("龍捲風.NET");
textBox1.Text=name;
}
按F5,運行工程,點擊按鈕,文字框中顯示
http://www.ourfly.com歡迎龍捲風.NET


2. Asp.NET  web視窗的測試
方法與上面的一模一樣,添加引用,建立service1的執行個體
在此不在細說。
3.在VB中測試
這個就要相對來說複雜一些
首先在vb中建立一個”標準EXE”的工程。添加引用:Microsoft  Soap  Type  library。注意:如果沒有安裝Microsoft  Soap  Toolkit,是沒有這個類型庫的。
可以在http://www.ourfly.com中下載。
添加一個text
Private  Sub  Form_Load()
        Text1.Text  =  add()
End  Sub

Public  Function  Add()  As  String
Dim  objSoapClient  As  New  SoapClient
        objSoapClient.ClientProperty("ServerHTTPRequest")  =  True
Call  objSoapClient.mssoapinit("http://localhost/webserver/service1.asmx?WSDL",  "Service1",  "Service1Soap")
這句也可以
objSoapClient.mssoapinit("http://localhost/webserver/service1.asmx?WSDL")

        Add  =  objSoapClient.Show("龍捲風.NET")
End  Function

調試成功需要注意的:
運行服務端webservice的程式,出現下面時
支援下列操作。有關正式定義,請查看服務說明。
點擊服務說明,會得到完整的wsdl檔案
http://localhost/webserver/Service1.asmx?WSDL
我們就要使用這個檔案,其中包含了我們定義的方法等等。

Mssoapinit(bstrWSDLFile  as  string,[bStrServiceName  as  string  ],[bStrport  as  string  ]  ,[bstrWSMLDile  as  string])的用法:
其中第二個,第三個參數在wsdl檔案中可以找到。也可以省略。


後續:還有從COM中產生wsdl檔案等等,我會陸續推出的。 


相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.