学会使用Web Service上(服务器端访问)
来源:互联网 发布:软件翻译器下载 编辑:程序博客网 时间:2024/06/06 09:02
学会使用Web Service上(服务器端访问)
2007-11-04 21:53
关于什么是Web Service,相信在很多地方都会有介绍。简单的讲,Web Service就是为Web应用程序之间彼此共享资源提供了一种可能。采取的方式是将相应的类及其中的方法暴露出来,然后调用者就可以直接调用这些类中的方法,达到访问远程资源的目的。本文只是想告诉,如果去使用Web Service。我主要从服务器端访问Web Service、客户端访问Web Service两方面来介绍。如果你还不会使用Web Service,希望对你有所帮助。
一、服务器端访问Web Service
这也是Web Service最适宜的调用环境。我们只需知道一个远程Web Service的URL,然后我们就可以直接使用Wsdl工具或更方便的添加Web 引用的方法,将远程Web Service(指.asmx文件)中对应类生成一个强类型的本地化代理。通过这个代理,我们就可以像使用本地方法一样,去调用这个远程类中的方法。使用的过程是非常的简单。下面让我们看看具体的操作。
1、新建一个Web Service
选择asp.net Web服务模板,然后你会看到VS已经自动为我们生成了一个Web Service的示例代码。
一个Web Service的主要部分VS已经帮我们写好了。这里有几个地方,我大概说一下。[WebService(Namespace = http://tempuri.org/)]特性部分,它声明了Web Service所对应的XMl文件的命名空间,如果你直接浏览Web Service文件,它会出现在XML文件的命名空间声明中。还是建议修改一下Namespace,虽然它只是一个URI。比如你可以把它改为Namespace=http://ruihua.cnblogs.com/。[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]特性声称的是本Web Service所应符合的Web服务互操作性规范,一般情况下我们无需考虑这个,只有某些操作与这个规范不相符的时候,我们就需要修改ConformsTo = WsiProfiles.None。(比如BasicProfile1_1规范并不支持方法的重载,如果你有重载方法的话,就需要修改它。)需要特别说明的是,通常一个web Service文件对应的只有一个类,当然并不是说你不可以在一个.asmx文件中写多个类,但只有与WebService指令中的className值对应的那个类才会被公开。而对于类中的方法,我们必须显式加上[WebMthod]特性,才能被公开,这点与类不同。让我们看一下WebMethod特性的一些其它属性:
属性
功能
示例
BufferResponse
设置为True时,XML Web服务的响应就保存在内存中,并发送为一个完整的包。如果该属性设置为False,则响应在服务器上构造的同时,会发送给客户机。
[WebMethod(BufferResponse=true)]
CacheDuration
指定响应在系统的高速缓存中的保存时间(秒),默认值为0,表示禁用高速缓存。把XML Web服务的响应放在高速缓存中,会提高Web服务的性能。
[WebMethod(BufferResponse=true,
CacheDuration=30)]
Description
对在XML Web服务的测试页面上显示的Web Method应用文本的描述。
[WebMethod(Description="该方法用于获取一个简单的字符串")]
EnableSession
设置为True时,会激活Web Method的会话状态,其默认值为False。
[WebMethod(EnableSession=true)]
MessageName
给Method指定一个唯一的名称,如果要使用重载的Web Method,则必须指定。
[WebMethod(MessageName="Method1")]
TransactionOption
为Web Method指定事务的支持,其默认值为Disbled。如果Web Method是启动事务的根对象,Web服务就可以用另一个需要事务处理的WebMethod参与事务处理。其值可以是NotSupported、Supported、Required和RequiresNew。
[WebMethod(TransactionOption
=System.EnterpriseServices.
TransactionOption.Supported)]
我们修改一下上述代码。
为了保证本地测试方便,请将Web Service所在网站设为Web 共享,这样我们就不必考虑在Web引用中加入端口号才能访问的问题。添加Web引用对话框中查找的实际是WSDL文件,Microsoft的XML Web服务会根据.asmx文件自动生成wdsl文件。当然,我们也可以根据.asmx文件在浏览器中打开wsdl文件,按如下路径:
http://localhost/WebService/Service.asmx?wsdl
接下来,你会看到VS已经为我们添加好了Web 引用。
同时在Web.Config文件中也包含了对Web服务的引用,如下所示:
<appSettings>
<add key="ServiceNamespace.Service" value="http://localhost/WebService/Service.asmx"/>
</appSettings>
接下来,让我们看一下如何使用这个Web Service,请看代码:
程序很简单,传进去一个姓名,返回一串提供信息,下面我们来看一下如何使用这个Web Service.
2、访问Web Service
首先需要说明一下,为何我们能够在本地服务器上访问到远程服务器的Web Service?无论是使用添加Web引用的方式还是使用Wsdl工具,最终的结果都是生成了一个远程Web Service中类的强类型化本地代理。然后我们是通过这个代理来实现访问远程资源访问的。下面我们看看怎么通过这两种方式来实现。
首先我们新建一个新的Web应用程序
方式一:使用添加Web 引用。在解决方案资源管理器中单击右键,选择添加Web 引用...,如下所示:
在URL部分你可以直接输入远程Web Service的URL,当然如果引用的Web Service来自本地,你可以单击相应的链接,然后进行选择。在Web引用名中,填入你自定义的名称。注意,这个名称就代指Web Service的命名空间。在访问的时候,我们必须通过这个名称才能引用到Web Service中的类。填好后,单击添加引用即可。
你会看到,使用远程方法就像使用本地方法一样简单,下面是运行结果:
原因是:Web Service不允许我们以匿名的方式访问。你可以在IIS信息服务中Web Service所在站点开启这项功能。然后,你就可以看到正确结果了:
方式二:使用WSDL工具。
我们也可以使用VS自带的wsdl工具来实现相同的功能,这个工具可以将wsdl文件生成在本地生成一个强类型的类文件,然后我们可以就可以直接在项目中使用这个类文件,来访问远程资源。打开VS命令提供,输入以下命令,如下图所示:
同时在C:/Program Files/Microsoft Visual Studio 8/VC下会自动生成一个Service.cs的文件。我们将这个文件置于我们的项目中,就可以直接使用了。
- 学会使用Web Service上(服务器端访问)
- 转载:学会使用Web Service上(服务器端访问)
- 转载:学会使用Web Service下(客户端访问)
- 学会使用Web Service
- 客户端访问服务器端web service
- 客户端访问Web Service(上)
- 使用CXF开发web service 的服务器端(三)
- 使用Axis 开发Web Service服务器端
- Perl Web service 服务器端
- AndroidNote010.Android访问webservice(上)服务器端
- 使用Excel访问Web Service服务
- 使用JavaScript(Ajax)访问Web Service服务
- 使用web service访问biee报表数据
- 访问Web Service(第一讲)
- 如何访问web service
- vbscript访问web service
- java访问web service
- 浏览器访问web service
- arm-linux-gcc和arm-elf-gcc 区别
- 计算机图形学发展的几点思考(转)
- OperaMasks有没有人用过?
- 会议记录1:3月2日
- 创业十年,静静地反思zz
- 学会使用Web Service上(服务器端访问)
- Windows与Vmware下的Linux文件共享方式总结
- 鄙视 CNNIC中文上网 ,感谢360
- k=(++i)+(++i)+(++i)
- 多媒体->比较全面的列举视频,电子书等得格式
- $$A与$(A)或$A的区别-makefile基础
- 解决“我的数据库变慢了”类问题的一般思路(转载)
- Android 文档的阅读顺序(转)
- c语言控制语句对应的汇编语句代码