Web Service属性介绍
每个 Web Service都需要唯一的命名空间,它可使客户端应用程序区分出可能使用相同方法名称的 Web Service。在 Visual Studio.NET中创建的Web Service的默认命名空间是"http://tempuri.org/"。尽管命名空间类似于典型的URL,但在Web浏览器中是不能查看的,它只是一个唯一标识符。
Web Service(Web服务)提供以下属性。
Description:此属性的值包含描述性消息,此消息将在XML Web Service的说明文件(例如服务说明和服务帮助页)生成后显示给XML Web Service的潜在用户。
Name:此属性的值包含XML Web Service的名称。在默认情况下,该值是实现XML Web Service的类的名称。
Namespace:此属性的值包含 XML Web Service的默认命名空间。XML命名空间提供了一种在XML文档中创建名称的方法,该名称可由统一资源标识符(URI)标识。使用XML命名空间,可以唯一标识XML文档中的元素或属性。因而,在 XML Web Service的服务说明中,Namespace被用做与XML Web Service直接相关的 XML 元素的默认命名空间。如果不指定命名空间,则使用默认命名空间 http://tempuri.org/。
以下示例代码说明了Web Service属性的用法:
- //<summary>
- //Service1 的摘要说明
- //</summary>
- [WebService(Namespace = "http://tempuri.org/",
- Description = "接口的描述说明文字-测试。",
- Name = "LTPService")] //Web Service 的名称
- [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
- [ToolboxItem(false)]
- public class Service1 : System.Web.Services.WebService
- {
- }
WebMethod(Web服务方法)有以下6个属性。
Description:是对Web Service方法的描述信息。就像Web Service方法的功能注释,可以让调用者看见的注释。
- [WebMethod(Description="根据产品编号查询产品的价格")]
- public string GetProductPrice2(string ProductId)
- {
- Products pro = new Products();
- return pro.GetPrice(ProductId);
- }
EnableSession:指示Web Service是否启动Session标志,主要通过Cookie完成,默认为false。
- public static int i = 0;
- [WebMethod(EnableSession = true)]
- public int Count()
- {
- i = i + 1;
- return i;
- }
在IE地址栏中输入:http://localhost/WebService1/Service1.asmx/Count?,刷新看看:
- <?xml version="1.0" encoding="utf-8" ?>
- <int xmlns="http://tempuri.org/">1</int>
- <?xml version="1.0" encoding="utf-8" ?>
- <int xmlns="http://tempuri.org/">2</int>
- //…不停地刷新,Session的值一直存在
MessageName:主要实现方法重载后的重命名:
- public static int i = 0;
- [WebMethod(EnableSession = true)]
- public int Count()
- {
- i = i + 1;
- return i;
- }
- [WebMethod(EnableSession = true, MessageName = "Count1")]
- public int Count(int da)
- {
- i = i + da;
- return i;
- }
通过count访问的是第1个方法,而通过count1访问的是第2个方法。
TransactionOption:指示Web Service方法的事务支持。
由于HTTP协议的无状态特性,Web Service方法只能作为根对象参与事务。如果COM对象与Web Service方法参与相同的事务,并且在组件服务管理工具中被标记为在事务内运行,则Web Service方法可以调用这些COM对象。如果一个TransactionOption属性为Required或RequiresNew的Web Service方法调用另一个TransactionOption属性为Required 或RequiresNew的Web Service方法,则每个 Web Service方法将参与它们自己的事务,因为Web Service方法只能用做事务中的根对象。如果异常是从Web服务方法引发的或未被该方法捕获,则自动放弃该事务。如果未发生异常,则自动提交该事务,除非该方法显式调用 SetAbort。
①Disabled
指示Web Service方法不在事务的范围内运行。当处理请求时,将在没有事务的情况下执行Web Service方法。
- [WebMethod(TransactionOption = TransactionOption.Disabled)]
②NotSupported
指示Web Service方法不在事务的范围内运行。当处理请求时,将在没有事务的情况下执行Web Service方法。
- [WebMethod(TransactionOption= TransactionOption.NotSupported)]
③Supported
如果有事务,则指示Web Service方法在事务范围内运行。如果没有事务,则将在没有事务的情况下创建Web Service。
- [WebMethod(TransactionOption= TransactionOption.Supported)]
④Required
指示Web Service方法需要事务。由于Web服务方法只能作为根对象参与事务,因此将为 Web 服务方法创建一个新事务。
- [WebMethod(TransactionOption= TransactionOption.Required)]
⑤RequiresNew
指示Web Service方法需要新事务。当处理请求时,将在新事务内创建Web Service。
- [WebMethod(TransactionOption= TransactionOption.RequiresNew)]
这里我们来看一个例子。
首先在类代码中添加引用:using System.EnterpriseServices;,然后设置属性TransactionOption = TransactionOption.RequiresNew。
例如:
- [WebMethod(TransactionOption = TransactionOption.RequiresNew)]
- public int DeleteProduct(string ProductId)
- {
- String deleteCmdSQL = "delete from P_Product where ProductId='" +
- ProductId + "'";
- String exceptionCmdSQL = "DELETE FROM NonExistingTable WHERE
- ProductId='" + ProductId + "'";
- SqlConnection sqlConn = new SqlConnection(
- Maticsoft.DBUtility.PubConstant.ConString);
- sqlConn.Open();
- SqlCommand deleteCmd = new SqlCommand(deleteCmdSQL, sqlConn);
- SqlCommand exceptionCmd = new SqlCommand(exceptionCmdSQL, sqlConn);
- //这个命令正确执行
- deleteCmd.ExecuteNonQuery();
- //这个命令执行时会发生异常,所以,第一个命令会自动回滚。因为这个方法被设置为事务模式
- //发生异常时,ASP.NET会自动中断事务并回滚
- int cmdResult = exceptionCmd.ExecuteNonQuery();
- sqlConn.Close();
在上面的示例中,如果数据库操作引发异常,则事务将自动中止;否则将提交事务。
CacheDuration:设置响应应在缓存中保留的秒数。这样Web Service就不需要重复执行多遍,可以提高访问效率,而CacheDuration就是指定缓存时间的属性。
- public static int i = 0;
- [WebMethod(EnableSession = true, CacheDuration = 30)]
- public int Count()
- {
- i = i + 1;
- return i;
- }
在IE的地址栏里输入:http://localhost/WebService1/Service1.asmx/Count?。
刷新它,内容一样!要使输出不一样,需等30秒。因为代码要在30秒后才被再次执行,之前返回的结果都是在服务器高速缓存里的内容。
有两个问题可以影响ASP.NET 2.0 Web服务应用程序中的输出缓存。
在ASP.NET 2.0中,测试页的HTTP方法已从Get更改为 Post。但是Post通常不进行缓存。如果在ASP.NET 2.0 Web 服务应用程序的测试页中改为使用Get,则缓存将正常工作。
此外,HTTP指示用户代理(浏览器或调用应用程序)应该可以通过将"Cache-Control"设置为"no-cache"以重写服务器缓存。因此,当 ASP.NET 应用程序找到"no-cache"标头时,会忽略缓存的结果。
BufferResponse:配置Web Service方法是否等到响应被完全缓冲完才发送信息给请求端。普通应用要等完全被缓冲完才被发送。
Web Service属性介绍的更多相关文章
- .NET基础拾遗(7)Web Service的开发与应用基础
Index : (1)类型语法.内存管理和垃圾回收基础 (2)面向对象的实现和异常的处理 (3)字符串.集合与流 (4)委托.事件.反射与特性 (5)多线程开发基础 (6)ADO.NET与数据库开发基 ...
- Web Service概念梳理
计算机技术难理解的很多,Web Service 对我来说就是一个很难理解的概念:为了弄清它到底是什么,我花费了两周的时间,总算有了一些收获,参考了不少网上的资料,但有些概念说法不一.我以w3c和 一些 ...
- Web Service随笔
什么是Web Service? WebService是一个SOA(面向服务的编程)的架构,它是不依赖于语言,不依赖于平台,可以实现不同的语言间的相互调用,通过Internet进行基于Http协议的网络 ...
- 应用Apache Axis进行Web Service开发
转自(http://tscjsj.blog.51cto.com/412451/84813) 一.概述 SOAP原意为Simple Object Access Protocol(简单对象访问协议),是一 ...
- Web Service
Web Service全称XML Web Service WebService是一种可以接收从Internet或者Intranet上的其它系统中传递过来的请求,轻量级的独立的通讯技术.是:通过SOAP ...
- WCF、Web API、WCF REST、Web Service比较
原文地址:http://www.dotnet-tricks.com/Tutorial/webapi/JI2X050413-Difference-between-WCF-and-Web-API-and- ...
- Web Service和WCF的区别。其实二者不属于一个范畴!!!
Web Service和WCF的区别 [1]Web Service:严格来说是行业标准,也就是Web Service 规范. 它有一套完成的规范体系标准,而且在持续不断的更新完善中. 它使用XML扩展 ...
- Web Service简要概念,学习记录!
Web Service平台需要一套协议来实现分布式应用程序的创建.任何平台都有它的数据表示方法和类型系统.要实现互操作性,Web Service平台必须提供一套标准的类型系统,用于沟通不同平台.编程语 ...
- 使用axis开发web service服务端
一.axis环境搭建 1.安装环境 JDK.Tomcat或Resin.eclipse等. 2.到 http://www.apache.org/dyn/closer.cgi/ws/axis/1_4下载A ...
随机推荐
- Ext.Ajax.request同步请求
导读: ajax分为2种,一种是同步,一种是异步同步:代码执行完了之后才执行后面的代码 异步:代码刚执行,后面的代码就马上接着执行了,不管前面的代码是否执行完异步的情况下,要获得返回信息,就需要在异步 ...
- 【UVALive - 3211】Now or later (二分+2-SAT)
题意: 有n架飞机需要着陆.每架飞机有两种选择,早着陆或者晚着陆,二选其一.现在为了保证飞机的着陆安全,要求两架着陆的飞机的时间间隔的最小值达到最大. 分析: 最小值最大问题我们想到二分答案.对于猜测 ...
- 【UVALive - 3713】Astronauts (2-SAT)
题意: 有n个宇航员,按照年龄划分,年龄低于平均年龄的是年轻宇航员,而年龄大于等于平均年龄的是老练的宇航员. 现在要分配他们去A,B,C三个空间站,其中A站只有老练的宇航员才能去,而B站是只有年轻的才 ...
- python装饰器之使用情景分析
http://blog.csdn.net/yueguanghaidao/article/details/10089181
- Java 理论与实践: JDK 5.0 中更灵活、更具可伸缩性的锁定机制
新的锁定类提高了同步性 —— 但还不能现在就抛弃 synchronized JDK 5.0为开发人员开发高性能的并发应用程序提供了一些很有效的新选择.例如,java.util.concurrent.l ...
- R语言 典型相关分析
1.关键点 #典型相关分析##典型相关分析是用于分析两组随机变量之间的相关程度的一种统计方法,它能够有效地揭示两组随机变量之间的相互(线性依赖)关系#例如 研究生入学考试成绩与本科阶段一些主要课程成绩 ...
- 利用纯java捕获和播放音频
参考: 1.http://www.cjsdn.net/doc/jdk60/javax/sound/sampled/package-summary.html 2.http://www.cjsdn.net ...
- Python根据上下限生成不重复随机数1
Python 2.7.5代码: #coding=utf-8 import random #定义计数器,默认为0 num=0 #定义随机结果集,默认为空列表 choose_resault=[] #最多可 ...
- JavaScript高级程序设计15.pdf
组合继承的问题是会调用2次超类型构造函数 寄生组合式继承 即通过借用构造函数来继承属性,通过原型链的形式来继承方法,思路:不必为了指定子类型的原型而调用超类型的原型,我们所需要的无非是超类型原型的一个 ...
- NTP服务器
server 1.cn.pool.ntp.org server 1.asia.pool.ntp.org server 0.asia.pool.ntp.org pool.ntp.org