WebService小讲

    技术2024-11-24  13

    支撑Web Service两个最重要的技术,便是XML及HTTP,这也就是SOAP协定的由来:SOAP=XML+HTTP。SOAP全称为:Simple Object Access Protocol——即简易对象访问协议,他让开发人员可以在现有的网络平台上访问不同的计算机对象。

    因为HTTP与XML都是跨平台的,所以SOAP也延续这样的标准。交换数据所使用的协议为HTTP;交换数据的格式为XML。

    ASP.NET提供了相关的工具及底层机制,协助开发人员快速简便地建立Web Service。

     

    1.如何建立Web Service

    在新建项目中创建Web服务模板,产生了新的WebService模板,内容如下。

     

    using System.Web.Services; using System.Web.Services.Protocols; /// <summary> ///WebService 的摘要说明 /// </summary> [WebService(Namespace = "http://tempuri.org/")] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] //若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消对下行的注释。 // [System.Web.Script.Services.ScriptService] public class WebService : System.Web.Services.WebService { public WebService() { //如果使用设计的组件,请取消注释以下行 //InitializeComponent(); } [WebMethod] public string HelloWorld() { return "Hello World"; } } 

     

    引用的命名空间为相关资源,也有可能更少。

    自建的Web Service本身也是一个类,所以直接继承了系统WebService类。

     

    2.定义[WebMethod]

    只有前边标有[WebMethod]的方法,才可以成为对外提供服务的方法。这个区别可让程序开发人员将一些WebService里不想对外公开的方法隐藏起来。

     

    3.如何访问WebService

    在开发测试时,会用浏览器直接浏览。等真正运用到开发时,就会调用 Proxy(代理)来调用Web Service,方法如下

    创建一个Proxy对象。

    wstest.Service proxy = new wstest.Service(); proxy.实现方法

    这里的wstest以及Service都是命名空间(Namespace),取决于所引用的服务的命名空间。是可以变更的。在添加引用web服务时,可以修改其命名空间。

     

    这样我们就调用到了一个webservice。

     

    两个好的提供webservice的网站:

    http://www.webservicex.net/ws/default.aspx

    http://www.webxml.com.cn/zh_cn/index.aspx

     

    Webservice不但可以返回常用类型,还可以返回时间类型,以及数组,链表List<T>,Dataset,和自定义类型(类)。

    返回类:

    public class webserviceClass //类加入App_Code文件夹中 { public string ID { get; set; } public string Name { get; set ;} } [WebMethod] public webserviceClass getClass() //返回类型为webserviceclass类 { webserviceClass a = new webserviceClass() a.ID = 1; a.Name = Mark; } //客户端代码,引用webservice服务。 private void get() { Webservice.Webservice one = new Webservice.Webservice(); Webservice.webserviceClass oneClass = one.getClass(); Response.Write(oneClass.ID + oneClass.Name); }  

    最新回复(0)