zoukankan      html  css  js  c++  java
  • Asp.Net Web服務學習

    1Web服務
          什麼是
    Web 服務:Web服務是服務器端的程序,用以監聽來自客戶應用程序的消息,並返回特定的信息。Web服務以XML格式顯示信息。

    2Web服務休息結構:


    3、名詞:
        RPC
    Remote Procedure Calls遠程過程調用
        WSDL
    Web Service Description LanguageWeb服務描述語言
          UDDIUniversal DescriptionDiscoveryand Integration

    4SOAP消息
        是客戶機和服務器之間通信的基本單元。
    SOAP消息包含一個SOAP封套,該封套把所有的SOAP消息封裝在一個塊中。SOAP封套本身由兩部分組成: SOAP標題和SOAP體。標題是可選的,SOA體是必須的。如下圖:



    5、處理Web服務的命名空間
    .Net Framework
    中有三個命名空間可以處理Web服務:
        System.Web.Services
    命名空間中的類用於創建Web服務。
        System.Web.Services.Description
    :通過WSDL描述Web服務。
        System.Web.Services.Protocols
    :創建SOAP請求和響應。

    6、創建Asp.net Web服務方法:
        6.1 File->New->Web Site
    ,選擇 “Asp.net Web服務
           6.2  修改
    Service1.cs中的代碼,加入自己需要的方法ReverseString()。代碼如下:

    using System;
    using System.Web;
    using System.Web.Services;
    using System.Web.Services.Protocols;

    /*
     * WebService屬性:WebService類用屬性WebService來標記。
     * WebServiceBinding屬性:用於把Web服務標記為可交互操作的一致性級別。
     
    */
    [WebService(Namespace 
    = "http://192.168.1.79/")]
    [WebServiceBinding(ConformsTo 
    = WsiProfiles.BasicProfile1_1)]
    public class Service : System.Web.Services.WebService
    {
        
    public Service()
        {
            
    //如果使用設計的元件,請取消註解下行程式碼 
            
    //InitializeComponent();         
        }

        
    /*
         * 加入WebMethod才會在服務頁面中顯示
         * WebMethod屬性:使用WebMethod屬性標記的方法可從WebMethod中調用,並可以被客戶機上調用。
         * 沒有標記的,則不能被客戶機調用。使用屬性類WebMehodAttribute,方法就可以在遠程客戶機上調用,
         * 並可以定義是否緩存響應時間有多長,會話狀態是否與指定的參數一起存儲。     * 
         
    */

        [WebMethod]
        
    public string ReverseString(string message) //自己添加的方法。獲得倒序后的值
        {
            
    char[] arr = message.ToCharArray();
            
    //顛倒順序
            Array.Reverse(arr);
            message 
    = new string(arr);
            
    return message;
        }
    }
        這樣一個「字符倒序」的服務就做好了。
       6.3 運行服務:在頁面上會看到自己添加的ReverseString方法。單擊ReverseString方法。在Value中輸入字符值「ab」,單擊「叫用」,在彈出的頁頁中會得到值「ba」。如下。
      <?xml version="1.0" encoding="utf-8" ?> 
      
    <string xmlns="http://192.168.1.79/">ba</string>

      6.4說明:
          生成文件:
              Service.asmx
    :保存Web服務類。所有Web服務都用.asmx擴展名來標識。
              Service1.cs:后台代碼。放在App_Code目錄下,便於使用。
           [WebService(Namespace = "http://192.168.1.79/")]
    中的Namespace的內容主要用於唯一標識XML元素,其中的鏈接不一定存在。


    7、創建客端程序:
        7.1 客戶程序說明:
              要調用一個方法,客戶機必須創建一個與
    Web服務所在的服務器之間的連接,並發送一個Http請求,傳送一個SOAP消息。方法調用必須轉換為SOAP消息。我們創建時,這部分內容System.Web.Services.Protocols.SoapHttpClientProtocol類會在后台自動完成。
              如果不使用
    SoaHttpClientProtocol類,可以使用其它代理程序類,HttpGetClientProtocolhttpPostClientProtocol僅執行簡單的HTTPGETHTTP Post請求,沒有SOAP調用的系統開銷。HttpGetClientProtocolhttpPostClientProtocol的缺點是其它的Web服務不支持它,且只能發送簡單數據。

      7.2創建方法:
         7.2.1 新建一個應用程序,加入兩個TextBox和一個按鍵。
         7.2.2 選擇項目,Project->Add Web Reference。加入參考。在Url中輸入的剛剛服務啟動后的Http地址:「http://localhost:4587/WebServiceSample/Service.asmx」。修改參考名稱。單擊「加入參考」。此時,方案中會加自動加入一些內容:其中Web References為加入的Web參考。
         7.2.3 在需要調用的地方加入代碼(下邊為按鈕的代碼):

            void btnCommit_Click(object sender, EventArgs e)
            {
               
    //實例化代理為類
                WebServicesSample.Service ws = new ServiceSimpleClient.WebServicesSample.Service();
                //把SOAP消息傳送給服務器,以調用web服務
                textBox2.Text = ws.ReverseString(textBox1.Text);
            }

        7.2.4 這樣運行程序后,在Textbox1中輸入內容,單擊按鈕,就會在TextBox2中倒序顯示
        7.2.5 說明:在顯示所有文件后,在Web References\"Web參考名"\
    Reference.map"有一個Reference.cs,此為代理程序的源碼。此為系統自動生成的代碼。
        其中需要說明地方列出如下:

        /*
         * Service類派生於SoapHttpClientProtocol類
         * 類System.Web.Services.Protocols.SoapHttpClientProtocol是客戶端代理程序的基類。
         * Invoke()方法轉換參數,建立一個SOAP消息,發送給Web服務。調用哪個Web服務由 Url屬性確定。
         * SoaHttpClientprotocol類也支持使用Begininvoke()和EndInvoke()方法的異步調用。
         * WebServiceBindingAttribute屬性:把綁定值設置為Web服務
         
    */
        
    /// <remarks/>    
        [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services""2.0.50727.1433")]
        [System.Diagnostics.DebuggerStepThroughAttribute()]
        [System.ComponentModel.DesignerCategoryAttribute(
    "code")]
        [System.Web.Services.WebServiceBindingAttribute(Name 
    = "ServiceSoap",
    Namespace 
    = "http://192.168.1.79/")]
        
    public partial class Service : System.Web.Services.Protocols.SoapHttpClientProtocol
        {
        }


            
    /// <remarks/>
            public Service()
            {
                
    //屬性Url設置為服務。
                this.Url = global::ServiceSimpleClient.Properties.Settings.Default.
    ServiceSimpleClient_WebServicesSample_Service;
            }


            
    //ReverseString的客戶端
            /// <remarks/>
            [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://192.168.1.79/ReverseString",
    RequestNamespace 
    = "http://192.168.1.79/", ResponseNamespace = "http://192.168.1.79/",
    Use 
    = System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle = System.Web.Services.
    Protocols.SoapParameterStyle.Wrapped)]
            
    public string ReverseString(string message)
            {
                
    //調用SoapHttpClientProtocol.Invoke()方法,建立一個SOAP消息,發送給Web服務。
                object[] results = this.Invoke("ReverseString"new object[] {
                            message});
                
    return ((string)(results[0]));
            }


  • 相关阅读:
    AJ学IOS(26)UI之iOS抽屉效果小Demo
    AJ学IOS(25)UI之触摸事件
    AJ学IOS(24)UI之注册案例
    AJ学IOS(23)UI之控制器管理
    AJ学IOS(22)UI之UIApplicationDelegate和UIWindow
    AJ学IOS(21)UIApplication设置程序图标右上⾓红⾊数字_联⺴指⽰器等
    AJ学IOS(20)UI之UIPickerView_点菜系统
    AJ学IOS(19)UI之QQ好友列表
    AJ学IOS(18)UI之QQ聊天布局_键盘通知实现自动弹出隐藏_自动回复
    AJ整理问题之:copy,对象自定义copy 什么是property
  • 原文地址:https://www.cnblogs.com/scottckt/p/1213934.html
Copyright © 2011-2022 走看看