分享
 
 
 

创建,测试和使用Web服务的小结

王朝other·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

下面是我关于Web服务的一点学习小结,当然还是非常的简单粗浅.希望对大家能有所帮助.更欢迎批评指正.

如何创建并且使用Web服务

创建Web服务

一般来说有2种方式来创建Web服务

l 直接编写Web服务文件(*.asmx);

l 首先实现业务对象,然后仅仅用asmx文件曝露;

注意: *.asmx是ASP.NET Web服务的扩展名,并不是所有的Web服务都是此方式供用户测试,其他厂商提供的Web服务往往只是一个Port.

1. 创建简单Web服务文件

<%@ WebService Language = C# Class = HelloMessage %>

using System;

using System.Web.Services;

public class HelloMessage : WebSerive

{

[WebMethod]

public string SayHello(string strName)

{

return “Hello, ” + strName;

}

}

首先需要加入 WebService的编译指令以指明其是一个Web服务,接下来是语言属性,和一个Web服务类的属性class.

注意:在一个asmx文件中可以有很多类,当时只能有一个用于Web服务.

HelloMessage继承了System.Web.Services.WebService这个类.

[WebMethod]这个属性一定要加到想要使用的Web方法前.注意该方法的Modifier必须是public.

希望用户访问的web方法一定要是公用的,且必须包含属性[WebMethod].含有该属性的方法将把所有调用者都看作是本地的.

[WebMethod]属性的进一步说明可以参看ASP.NET21.

2. 业务对象法

可以使用已有的业务对象来创建Web服务,可以大大的降低工作量.当然为了启动服务支持,必须做一些相应的修改.简单来说,需要做三件事:

l 对象必须从WebService类继承;

l 给要暴露的方法加上[WebMethod]属性,当然Modifier也必须是public;

l 把返回值是XXDataReader的改为DataSet,因为前者无法通过XML传输;

注意:因为只有从WebService继承而来的类才会作为服务暴露给客户,所以您可以在同一个文件中创建对象的多个版本.

然后,将业务对象编译成程序集放在相应的目录下.

然后构建暴露业务对象服务的.asmx文件,非常简单,只需要一句.

<%@ WebSerive Class = YourNamespace.YourServiceClass %>

测试Web服务

对于.NET 框架建立的Web服务而言,直接在IE浏览器中就可以看到测试界面了.比如:

http://www.hillfree.com/myservice.asmx

一般来说可以看到Web服务类和Web方法. 调用Web服务可以有三种方法.(当然,不是所有的Web方法都可以用三种方法调用.):

1. SOAP

2. HTTP-GET

3. HTTP-POST

使用SOAP调用服务传递命令和参数,可以使用很多基于XML的数据类型.(i.e. Array, class, DataSet, primitive, xmlNode etc.)

但如果使用HTTP GET或HTTP POST, 则只能使用这些协议所能处理的类型.一般就是primitive基本类型和数组. 此外HTTP GET/POST也只能发送名值对,不能传递复杂的数据类型.

需要查看相关的说明文件时,可以输入:

http://www.hillfree.com/myservice.asmx?WSDL

这是一个xml文件.

使用Web服务

使用Web服务,一般包括三个步骤

1. 发现服务

2. 生成服务的代理

3. 编写客户端程序,使用代理调用所需的服务.

发现服务:

使用disco.exe工具来发现Web站点的Web服务,如:

disco http://localhost/service/day/fain.disco

生成服务代理类

使用wsdl.exe 工具生成Web服务代理类.如下:

wsdl http://www.hillfree.com/service.asmx?wsdl

//如果直接知道wsdl的url,就不要发现那一步了.

这样默认生成的是C#的类. 当然,如果已经有了WSDL文件就可以直接:

wsdl service.wsdl

接下来,您可以直接使用该类文件,或者将其编译为程序集使用.

简要介绍一下代理类:

生成的代理类包含一个来自System.Web.Services的属性[WebServiceBindingAttribute].

该属性定义了这个类必须使用的接口.

另外,此类是从SoapHttpClientProtocol继承而来的,它通过SOAP和Web服务远程通信.代理类中包含一个构造函数,它设置了Web服务的URL.

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有