zoukankan      html  css  js  c++  java
  • Webservice实现及原理

    一、什么是WebService?为什么需要WebService?

    WebService是两个计算机之间通讯(交谈)的技术,网络中一台计算机想要调用另一台计算机的方法时,此时可以需要WebService。

    很火的SOA、云计算在技术层面上都是WebService

    二、自己做一个WebService

    例子:

    服务器端添加一个ashx页面代码如下

      public void ProcessRequest(HttpContext context)

            {

                context.Response.ContentType = "text/plain";

                try

                {

                    int Number1 = int.Parse(context.Request["number1"]);

                    int Number2 = int.Parse(context.Request["number2"]);

                    int summer = Number1 + Number2;

                    context.Response.Write(summer);

                }

                catch { }

            }

     

    客户端调用服务器端的的方法代码如下:

    WebClient wc = new WebClient();

                wc.Encoding = Encoding.UTF8;

                string s = wc.DownloadString("http://localhost:6563/ShowSummer.ashx?number1=" +

                    textBox1.Text + "&number2=" + textBox2.Text);

                textBox3.Text = s;

            }

    显示的结果:

                           

    客户端调用服务端的方法用到了WebClient.

    WebClient类提供用于将数据发送到由 URI 标识的资源及从这样的资源接收数据的常用方法。

    做了一个简单的自己编写Webservice小例子,但是由于服务端的方法很多,参数也各不一样。没有解决统一的数据格式和自描述。所以客户端在调用起来很麻烦,为了解决这些问题引入了WebService

    三、WebService原理

    规定请求数据格式是,函数名为根节点,参数列表为子节点:
    WebService中所有的请求、返回都是XML格式,所有语言都支持XML格式。

    WSDL:描述了WebService提供了哪些方法。

    SOAP协议:描述了向服务器发送什么格式的调用数据,以及服务器会返回什么格式的数据。

    规定所有的方法页面在请求后加wsdl这个参数的时候返回一个方法列表、方法参数、方法返回值的xml:

    < operations>

    <operation Name="Add">

           <input>

              <num1 type="int"/>

              <num2 type="int"/>

          </input >

           <output>

               <ret type="int"/>

            </output>

    </ operation >

    </operations>

    这样服务方法就自描述了,用wsdl参数访问就可以得知这个服务提供什么方法、方法的参数是什么了。

    WSDL:对WebService能够提供的服务进行描述的协议。服务器只有返回这个格式的数据,代码生成器才能根据WSDL生成代码。

    请求、返回的XML数据格式(有哪些节点、节点的名字等等)WebService 用SOAP协议进行规定,方法描述信息XML用WSDL协议规定。WebService技术是与语言、平台无关,因此.net可以访问java编写的WebService、java也可以访问.net编写的webservice,php、python等各种语言也几乎都支持webservice,因此可以说webservice可以实现跨语言方法调用。

    但是如果自己构建请求、返回xml,解析xml请求,自己负责方法描述信息更新是很麻烦的,.net就提供了简化开发WebService、使用WebService的技术,简单的让人不敢相信

    四、引用WebService做一个实例

    服务器端添加一个Web服务,增加一个Add方法

     

    客户端添加Webservice引用

     

     

     

     

    运行结果如上

    五、总结WebService

    l       1、服务器端:就想写普通方法一样,不需要处理请求、响应。

    l       2、客户端添加对asmx的“服务器引用”,然后就可以调用***SoapClient类中的方法。就“好像”直接调用了服务端的方法。

    l       添加服务引用的时候工具读取asmx的WSDL自动生成了ServiceReference1中的类,这些类帮我们来拼Http请求,并且把Http返回值拆成函数的返回。

    l       服务器端新建“Web服务”(asmx),在远端可以调用的方法上标注[WebMethod]。

    l       客户端“添加服务引用”,填写asmx的地址。然后就可以调用Service References下自动生成的***SoapClient类了。

    l       用WebService的时候如果服务端的接口定义发生变化,则需要重新添加对服务端的引用,因为Service References中的类是工具读取WSDL定义自动生成的。在服务引用上点击右键,选择“更新服务引用”。如果只是修改了WebService内部实现,而接口没变,则不需要“更新服务引用”,因为WSDL没变,Soap没变。

     

     

  • 相关阅读:
    .NET中26个优化性能方法
    通过纯真IP地址实现根据用户地址显示信息
    jQuery中json中关于带有html代码网页的处理
    gb2312提交的url编码转换成utf8的查询
    c# Bitmap byte[] Stream 文件相互转换
    WebClient 上传文件
    进程监控模块配置与使用 ------ACE(开源项目)
    boost配置
    C++学习总结3
    SAE云平台的使用
  • 原文地址:https://www.cnblogs.com/honghong75042/p/2891398.html
Copyright © 2011-2022 走看看