熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> ASP編程 >> 正文

使用webservice解決多系統登陸問題

2013-11-15 12:52:40  來源: ASP編程 

  微軟NET戰略的一個比較重要的部分就是webservice利用webservice我們可以創建真正有效的分布式應用程序

  下面我們對webservice做一些說明

  假設A是客戶端B是webservice服務端用戶通過http協議向服務器發送soap請求webservice返回客戶端XML格式的數據

  現在我們看一看創建一個webservice的大致過程

  服務端的webservice是必須要建的中間的soapxml我們不用去關心在客戶端這邊比較重要的是如何從webservice取得對象?答案是用的是proxy對象客戶端由代理對象(proxy)負責與webservice的通信所以在客戶端使用webservice完全和使用一個本地對象是一樣的

  我們現在以一個簡單的實例來說明

  打開新建工程(  web服務)在位置中鍵//localhost/webserver其中webserver就是工程的名字確定後出現一個Serviceasmxcx雙擊出現代碼窗口

  using  System

  using  SystemCollections

  using  SystemComponentModel

  using  SystemData

  using  SystemDiagnostics

  using  SystemWeb

  using  SystemWebServices

  namespace  webserver

  {

  ///  <summary>

  ///  Service  的摘要說明

  ///  </summary>

  (

  public  class  Service    SystemWebServicesWebService

  {

  public  Service()

  {

  //CODEGEN該調用是  ASPNET  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)

  {

  componentsDispose()

  }

  baseDispose(disposing)

  }

  #endregion

  //  WEB  服務示例

  //  HelloWorld()  示例服務返回字符串  Hello  World

  //  若要生成請取消注釋下列行然後保存並生成項目

  //  若要測試此  Web  服務請按  F  鍵

  // [WebMethod]

  // public  string  HelloWorld()

  // {

  // return  Hello  World

  // }

  }

  }

  下面在()處加入

  [WebService(Namespace=//localhost/webserver/)]

  這是因為soap是基於http協議上的客戶端無法知道webservice位於那個服務器上在實際應用中比如上放置這個webservice則Namespace改為

  下面我們給這個webservice添加一個方法

  // [WebMethod]

  // public  string  HelloWorld()

  // {

  // return  Hello  World

  // }

  微軟幫我們寫好了一個接著添加一個方法方法名稱叫show

  [WebMethod]

  public  string  show(string  yourname)

  {

  return  +歡迎+yourname

  }

  現在就可以運行了按F點擊show輸入你的名字然後點擊invote

  看到了吧

  <?xml  version=  encoding=utf  ?>

  <string  xmlns=>>歡迎yyg</string>

  成功了打開bin目錄已經將proxy做好了webserverdll

  現在我們在不同的環境下測試

   打開新建windows應用程序工程命名為Client增加按鈕文本框

  現在要用到代理了右鍵單擊右邊的reference(引用)選擇添加引用選擇浏覽找到webserver目錄下的bin目錄下的webserverdll

  再加入一個systemwebwebservices的引用在列表中有

  在formcs裡加入

  using  SystemWebServices

  using  webserver

  然後在

  private  SystemWindowsFormsButton  button

  private  SystemWindowsFormsTextBox  textBox

  後面插入

  private  webserverservice  Client

  建立一個service的實例雙擊按鈕代碼如下

  private  void  button_Click(object  sender  SystemEventArgs  e)

  {

  Client  =new  Service()

  string  name

  name=Clientshow(龍卷風NET

  textBoxText=name

  }

  按F運行工程點擊按鈕文本框中顯示

  歡迎龍卷風NET

   AspNET  web窗口的測試

  方法與上面的一模一樣添加引用建立service的實例

  在此不在細說

  在VB中測試

  這個就要相對來說復雜一些

  首先在vb中建立一個標准EXE的工程添加引用Microsoft  Soap  Type  library注意如果沒有安裝Microsoft  Soap  Toolkit是沒有這個類型庫的

  可以在中下載

  添加一個text

  Private  Sub  Form_Load()

  TextText  =  add()

  End  Sub

  Public  Function  Add()  As  String

  Dim  objSoapClient  As  New  SoapClient

  objSoapClientClientProperty(ServerHTTPRequest)  =  True

  Call  objSoapClientmssoapinit(?WSDL  Service  ServiceSoap

  這句也可以

  objSoapClientmssoapinit(?WSDL

  Add  =  objSoapClientShow(龍卷風NET

  End  Function

  調試成功需要注意的

  運行服務端webservice的程序出現下面時

  支持下列操作有關正式定義請查看服務說明

  點擊服務說明會得到完整的wsdl文件

  ?WSDL

  我們就要使用這個文件其中包含了我們定義的方法等等

  Mssoapinit(bstrWSDLFile  as  string[bStrServiceName  as  string  ][bStrport  as  string  ]  [bstrWSMLDile  as  string])的用法

  其中第二個第三個參數在wsdl文件中可以找到也可以省略


From:http://tw.wingwit.com/Article/program/ASP/201311/21802.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.