支撑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); }