国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

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

2024-07-21 02:26:22
字體:
來源:轉載
供稿:網友
微軟.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文件等等,我會陸續推出的。 
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 巴林左旗| 竹溪县| 乐亭县| 开远市| 涪陵区| 柏乡县| 鄱阳县| 雷山县| 彰化县| 海林市| 通河县| 类乌齐县| 东宁县| 庄河市| 谷城县| 杭锦旗| 高邑县| 兴文县| 两当县| 青铜峡市| 边坝县| 布拖县| 河北省| 渝中区| 怀来县| 比如县| 托里县| 东城区| 宁阳县| 普安县| 兴山县| 沁阳市| 桐城市| 元阳县| 万年县| 台北市| 梅河口市| 肃南| 当涂县| 蒙山县| 织金县|