小弟最近在学习webservices的内容,看完书之后对书中的部分内容有些迷惑,希望大虾帮忙下:
   问题1 :书上说 webservices 分为可户端部分和服务器部分 我对这个服务端和客户端的概念还是很模糊,正常情况下客户端应该是我的浏览器(因为通过浏览器才能访问asp页面),但是当我用.net生成最简单的helloworld 的webservices的时候,发现有两个端口在提供服务,分别为localhost1756和2182,从这里看来似乎客户端应该是我们平时的asp.net的服务端程序,而服务端就是我们刚建立的webservices程序,而不是通常意义上的浏览器是客户 请问正确的说法是怎样?
   问题2: 请问代理类又是指哪个 简要介绍下
   非常感谢

解决方案 »

  1.   

    WebServices类似动态库dll,是给其他程序调用用的,而这种调用是基于Internet和http/soap的。WebService所在的服务器为服务器端,调用端就是客户端——可以是ASP.NET/JSP,也可以是WinForm程序。
    通常情况下,WebService使用80号端口。
      

  2.   

    问题1 :你生存helloworld服务时,看到的localhost1756和2182端口,其中一个是服务端,一个是客户端,因为你是本地调试的,所以会在一起,如果你把服务端(helloworld)放到另一台机子上发布(IIS),然后在自己机子上访问就会看清楚些了.客户端并不是服务程序,平时我们执行的ASPX页面只是通过IE执行服务端的脚本,如果想要理解客户端和服务端的概念,最好先了解下C/S架构,客户端不一定是用网页形式的,有时候是一个应用程序,控制程序,只要可以发送SOAP数据包就可以,服务端接受到SOAP包,通过WSDL解析出结构,在帮定的方法上进行调用,获得的结果通过SOAP数据包回馈给客户端,就完成了一次的服务调用.所以,你理解的不完全正确.
    问题2:代理类使用WSDL语言(一种描述标记语言),生成的本地类,它封装了要调用服务通讯的方法.生成代理类的方法有两种:
    一、在VS提供的命令提示符中编译WSDL文件。
    给个例子:
    Wsdl /language:CS /n:mynamespace /out:myProxyClass.cs C:/myProject/wsdl/webservice.wsdl
    最后一个参数是本地的绝对路径,是一个文件,也可以是一个网络路径。
    二、在项目右键中添加WEB引用,输入本地的WSDL的绝对路径。
    注意:用VS引用生成的代理类名称为Reference.cs,可以在项目目录下找到
    有了代理类,在调用WEB服务的方法的时候就变得轻松简单,你只要申明一个代理类的实例,这个实例就有WEB服务的所有公共方法了.只要给这些方法传入参数,通过代理类就可以获得相应的返回值了,这个返回值也是通过SOAP包返回的(这样就可以理解客户端和服务端的区别了),当然整个交互过程都被代理类包办了.
      

  3.   

    是不是可以这样理解,假如我用3台机器,a上有浏览器,b上是我的asp.net部署文件,c上有webservices服务,a访问b时,b会在需要时(要调用webservices服务时)访问c,同时把b和c的共同结果生成网页发送到a,所以a看到的就是一个调用了webservices过程后的网页
      

  4.   

    是不是可以这样理解,假如我用3台机器,a上有浏览器,b上是我的asp.net部署文件,c上有webservices服务,a访问b时,b会在需要时(要调用webservices服务时)访问c,同时把b和c的共同结果生成网页发送到a,所以a看到的就是一个调用了webservices过程后的网页
    ---------------------
    是的.比如天气预报的效果.ASP.NET程序通过调用WS服务获得数据,返回显示给浏览器.