WebService 之 实例学习一
新建一个空网站项目,添加新建项 “ Web 服务 ”。
一、WebServiceDemo.asmx 文件,默认内容如下:
<%@ WebService Language="C#" CodeBehind="WebServiceDemo.asmx.cs" Class="WebServie.WebServiceDemo" %>
二、WebServiceDemo.asmx.cs 文件,默认内容如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services; namespace WebServie
{
/// <summary>
/// WebServiceDemo 的摘要说明
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
// 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消对下行的注释。
// [System.Web.Script.Services.ScriptService]
public class WebServiceDemo : System.Web.Services.WebService
{ [WebMethod]
public string HelloWorld()
{
return "Hello World";
}
}
}
如上源码中,黄色标记 “ using System.Web.Services; ” 为必须引入的命名空间。
继承层次:WebServiceDemo 继承自 System.Web.Services 命名空间下的 WebService 类 → 继承自 System.Web.Services 命名空间下的MarshalByValueComponent 类 → 继承自 System.ComponentModel 命名空间下的 IComponent, IDisposable, IServiceProvider 三个接口。
WebService 主要包含 WebService 、SoapDocumentService、WebServiceBinding三个属性。若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,需取消对ScriptService 属性的注释。
1、WebService 属性:用于向 XML Web services 添加附加信息,如描述其功能的字符串。
using System; namespace System.Web.Services
{
// 用于向 XML Web services 添加附加信息,如描述其功能的字符串。
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Interface)]
public sealed class WebServiceAttribute : Attribute
{
// Namespace的默认值
// property.此字段为常数。
public const string DefaultNamespace = "http://tempuri.org/"; // 初始化 System.Web.Services.WebServiceAttribute 类的新实例。
public WebServiceAttribute(); // XML Web services 的描述性消息。
// 对 XML Web services 的功能进行描述的文本。
public string Description { get; set; } // 获取或设置 XML Web services 的名称。
// 默认值是实现 XML Web services 的类的名称。
public string Name { get; set; } // 获取或设置用于 XML Web services 的默认 XML 命名空间。
// 默认值在 System.Web.Services.WebServiceAttribute.DefaultNamespace属性中指定。
public string Namespace { get; set; }
}
}
2、SoapDocumentServiceAttribute 属性:
using System;
using System.Web.Services.Description; namespace System.Web.Services.Protocols
{
// 设置在 XML Web services 内发送到 XML Web services 方法的 SOAP 请求和从 XML Web services 方法发回的 SOAP 响应的默认格式。
[AttributeUsage(AttributeTargets.Class)]
public sealed class SoapDocumentServiceAttribute : Attribute
{
//初始化一个 SoapDocumentServiceAttribute 类的新实例,将所有属性都设置为其默认值。
public SoapDocumentServiceAttribute(); //初始化一个 SoapDocumentServiceAttribute 类的新实例,设置参数的格式设置。
// 参数:
// use:XML Web services 的参数格式设置。设置 SoapDocumentServiceAttribute.Use 属性。
public SoapDocumentServiceAttribute(SoapBindingUse use); //初始化 SoapDocumentServiceAttribute 类的新实例,该类设置参数的格式设置并设置参数是否封装在 SOAP 消息中的 Body 元素下的单个 XML 元素中。
// 参数:
// use:参数格式设置样式。设置 SoapDocumentServiceAttribute.Use 属性。
// paramStyle:设置参数是否封装在 XML Web services 中发往和来自 XML Web services 方法的 SOAP 消息中的 Body 元素下的单个
// XML 元素中。设置 ParameterStyle 属性。
public SoapDocumentServiceAttribute(SoapBindingUse use, SoapParameterStyle paramStyle); //获取或设置用来控制参数是否封装在 XML Web services 的 XML Web services 方法的 SOAP 消息 XML 部分中 <Body> 元素之后的单个元素中的默认设置。
// 返回结果:
// 在 XML Web services 中发往 XML Web services 方法的 SOAP 的请求和从 XML Web services 中的
// XML Web services 方法发回的 SOAP 响应的默认 SoapParameterStyle。如果未设置,则默认为 SoapParameterStyle.Wrapped。
public SoapParameterStyle ParameterStyle { get; set; } //获取或设置将 SOAP 消息发送到 XML Web services 的方式。
// 返回结果:SoapServiceRoutingStyle,表示将 SOAP 消息发送到 XML Web services 的方式。默认值为 SoapServiceRoutingStyle.SoapAction。
public SoapServiceRoutingStyle RoutingStyle { get; set; } //获取或设置 XML Web services 的默认参数格式设置。
// 返回结果:XML Web services 的默认 SoapBindingUse。如果未设置,则默认为 SoapBindingUse.Literal。
public SoapBindingUse Use { get; set; }
}
}
3、WebServiceBinding 属性:声明定义一个或多个 XML Web services 方法的绑定。无法继承此类。
using System; namespace System.Web.Services
{
//声明定义一个或多个 XML Web services 方法的绑定。无法继承此类。
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Interface, AllowMultiple = true)]
public sealed class WebServiceBindingAttribute : Attribute
{
// 初始化一个 WebServiceBindingAttribute 的实例
public WebServiceBindingAttribute(); // 通过设置 XML Web services 方法正在实现的绑定的名称初始化 System.Web.Services.WebServiceBindingAttribute 类的新实例
// 参数:
// name:XML Web services 方法为其实现操作的绑定的名称。设置 System.Web.Services.WebServiceBindingAttribute.Name 属性。
public WebServiceBindingAttribute(string name); //初始化 System.Web.Services.WebServiceBindingAttribute 类的新实例。
// 参数:
// name:XML Web services 方法为其实现操作的绑定的名称。设置 System.Web.Services.WebServiceBindingAttribute.Name 属性。
// ns:与该绑定关联的命名空间。设置 System.Web.Services.WebServiceBindingAttribute.Namespace 属性。
public WebServiceBindingAttribute(string name, string ns); //初始化 System.Web.Services.WebServiceBindingAttribute 类的新实例。
// 参数:
// name:XML Web services 方法为其实现操作的绑定的名称。设置 System.Web.Services.WebServiceBindingAttribute.Name 属性。
// ns:与该绑定关联的命名空间。设置 System.Web.Services.WebServiceBindingAttribute.Namespace 属性。
// location:定义绑定的位置。
public WebServiceBindingAttribute(string name, string ns, string location); // 摘要:获取或设置绑定声称所符合的 Web 服务互操作性 (WSI) 规范。
// 返回结果:System.Web.Services.WsiProfiles 值之一,指示 WSI 规范。
public WsiProfiles ConformsTo { get; set; } // 摘要:获取或设置一个值,该值指示绑定是否发出一致性声称。
// 返回结果:如果绑定发出一致性声称,则为 true;否则为 false。
public bool EmitConformanceClaims { get; set; }
// 摘要:获取或设置定义绑定的位置。
// 返回结果:定义绑定的位置。默认为此属性应用到的 XML Web services 的 URL。
public string Location { get; set; } // 摘要:获取或设置绑定的名称。
// 返回结果:绑定的名称。默认为追加了“Soap”的 XML Web services 名称。
public string Name { get; set; } // 摘要:获取或设置与该绑定关联的命名空间。
// 返回结果:绑定的命名空间。默认为 http://tempuri.org/。
public string Namespace { get; set; }
}
}
4、ScriptServiceAttribute 属性:指示某个 Web 服务可从脚本调用。
using System;
using System.Runtime; namespace System.Web.Script.Services
{
//指示某个 Web 服务可从脚本调用。无法继承此类。
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Interface)]
public sealed class ScriptServiceAttribute : Attribute
{
//初始化 System.Web.Script.Services.ScriptServiceAttribute 类的新实例。
[TargetedPatchingOptOut("Performance critical to inline this type of method across NGen image boundaries")]
public ScriptServiceAttribute();
}
}
5、WebMethod 属性:
WebService 通过 [WebMethod] 属性将方法暴露给调用者,有6个属性:Description、EnableSession、MessageName、TransactionOption、CacheDuration、BufferResponse。
using System;
using System.EnterpriseServices; namespace System.Web.Services
{
//向使用 ASP.NET 创建的 XML Web services 中的某个方法添加此特性后,就可以从远程 Web 客户端调用该方法。无法继承此类。
[AttributeUsage(AttributeTargets.Method)]
public sealed class WebMethodAttribute : Attribute
{
// 初始化一个 WebMethodAttribute 新实例。
public WebMethodAttribute(); // 初始化一个 WebMethodAttribute 新实例。
// 参数:
// enableSession:初始化是否为 XML Web services 方法启用会话状态。
public WebMethodAttribute(bool enableSession); //初始化 WebMethodAttribute 类的新实例。
// 参数:
// enableSession:初始化是否为 XML Web services 方法启用会话状态。
// transactionOption:初始化 XML Web services 方法的事务支持。
public WebMethodAttribute(bool enableSession, TransactionOption transactionOption); // 初始化 WebMethodAttribute 类的新实例。
// 参数:
// enableSession:初始化是否为 XML Web services 方法启用会话状态。
// transactionOption:初始化 XML Web services 方法的事务支持。
// cacheDuration:初始化响应的缓存秒数。
public WebMethodAttribute(bool enableSession, TransactionOption transactionOption, int cacheDuration); // 初始化 WebMethodAttribute 类的新实例。
// 参数:
// enableSession:初始化是否为 XML Web services 方法启用会话状态。
// transactionOption:初始化 XML Web services 方法的事务支持。
// cacheDuration:初始化响应的缓存秒数。
// bufferResponse:初始化是否缓存该请求的响应。
public WebMethodAttribute(bool enableSession, TransactionOption transactionOption, int cacheDuration, bool bufferResponse); //获取或设置是否缓存该请求的响应。
// 返回结果:如果缓存该请求的响应,则为 true;否则为 false。默认为 true。
public bool BufferResponse { get; set; } //获取或设置响应应在缓存中保留的秒数。
// 返回结果:响应应在缓存中保留的秒数。默认值为 0,表示不缓存响应。
public int CacheDuration { get; set; } //描述 XML Web services 方法的描述性消息。
// 返回结果:描述 XML Web services 方法的描述性消息。默认值为 System.String.Empty。
public string Description { get; set; } //指示是否为 XML Web services 方法启用会话状态。
// 返回结果:如果为 XML Web services 方法启用会话状态,则为 true。默认为 false。
public bool EnableSession { get; set; } //在传递到 XML Web services 方法和从 XML Web services 方法返回的数据中用于 XML Web services 方法的名称。
// 返回结果:
// 在传递到 XML Web services 方法和从 XML Web services 方法返回的数据中用于 XML Web services 方法的名称。默认值是XML Web services 方法的名称。
public string MessageName { get; set; } //指示 XML Web services 方法的事务支持。
// 返回结果:XML Web services 方法的事务支持。默认为 TransactionOption.Disabled。
public TransactionOption TransactionOption { get; set; }
}
}
摘要: // Initializes a new instance of the System.Web.Services.WebMethodAttribute // class.
WebService 之 实例学习一的更多相关文章
- webService
什么是webService WebService,顾名思义就是基于Web的服务.它使用Web(HTTP)方式,接收和响应外部系统的某种请求.从而实现远程调用. 1:从WebService的工作模式上 ...
- 开始webservice了
一.WebService到底是什么 一言以蔽之:WebService是一种跨编程语言和跨操作系统平台的远程调用技术. 所谓跨编程语言和跨操作平台,就是说服务端程序采用java编写,客户端程序则可以采用 ...
- Spring WebService入门
Web service是一个平台独立的,低耦合的,自包含的.基于可编程的web的应用程序,可使用开放的XML(标准通用标记语言下的一个子集)标准来描述.发布.发现.协调和配置这些应用程序,用于开发分布 ...
- 浅谈跨域以及WebService对跨域的支持
跨域问题来源于JavaScript的同源策略,即只有 协议+主机名+端口号 (如存在)相同,则允许相互访问.也就是说JavaScript只能访问和操作自己域下的资源,不能访问和操作其他域下的资源. 在 ...
- 浅谈WebService的版本兼容性设计
在现在大型的项目或者软件开发中,一般都会有很多种终端, PC端比如Winform.WebForm,移动端,比如各种Native客户端(iOS, Android, WP),Html5等,我们要满足以上所 ...
- Atitit webservice发现机制 WS-Discovery标准的规范attilax总结
Atitit webservice发现机制 WS-Discovery标准的规范attilax总结 1.1. WS-Discovery标准1 1.2. 一.WS-Discovery1 1.2.1. ...
- java调用CXF WebService接口的两种方式
通过http://localhost:7002/card/services/HelloWorld?wsdl访问到xml如下,说明接口写对了. 2.静态调用 // 创建WebService客户端代理工厂 ...
- VS2010编写WebService与在IIS的发布<之简单讲解>
工具VS2010,window环境win7 一:Webservice的创建与方法查看调用 1.新建空web应用程序项目 2.新建web服务 3.自动生成 4.直接跑起来,可以看到有2个方法 5.点击H ...
- webService学习之路(三):springMVC集成CXF后调用已知的wsdl接口
webService学习之路一:讲解了通过传统方式怎么发布及调用webservice webService学习之路二:讲解了SpringMVC和CXF的集成及快速发布webservice 本篇文章将讲 ...
随机推荐
- php在linux后台执行
<?php ignore_user_abort();//后台运行 ini_set('default_socket_timeout', -1);//socket不超时 set_time_limit ...
- spring mvc接收数组
(一)前言 对于springmvc接收数组的问题啊,我试验过几次,但是了有时候成功了,有时候失败了,也不知道为啥的,然后现在又要用到了,所以打算具体看看到底怎么回事,但是了我实验成功了顺便找了好多资料 ...
- 在MyEclipse上安装svn插件
最近需要用到myeclipse做一个商城的项目开发,用svn作为项目的版本控制软件.但是在myeclipse上安装svn插件就是装不好,反复折腾了好几次都安装不成功.网上提供的安装办法有两种,一是:在 ...
- java多线程实现主线程等待子线程执行完问题
本文介绍两种主线程等待子线程的实现方式,以5个子线程来说明: 1.使用Thread的join()方法,join()方法会阻塞主线程继续向下执行. 2.使用Java.util.concurrent中的C ...
- AlertView动画
AlertView动画 效果 源码 https://github.com/YouXianMing/Animations // // AbstractAlertView.h // Animations ...
- Facebook 工程师是如何高效工作的?
编者按:Facebook 的工程师有哪些高效工作的经验呢?软件工程师访谈了多位 Facebook 的高产工程师,总结了他们的共同经验以及晋级之路,供各位参考. 成为高效开发者这件事你可以通过经验.书本 ...
- Informatica 常用组件Lookup之九 配置未连接的查找转换
在映射中,未连接的查找转换与管道是分开的.您可以使用 :LKP 引用限定符编写表达式以调用其它转换中的查找.未连接查找的常用用法包括: 测试表达式中某个查找的结果 基于查找结果过滤行 基于查找的结果将 ...
- iOS开发-xCode代码托管到GitHub
xCode默认的是由源代码管理工作Git,Android Studio内置的也有,之前写过两篇关于Window托管Android代码到GitHub的文章,一直想写篇关于Mac上托管代码的到文章,今天终 ...
- Candy leetcode java
题目: There are N children standing in a line. Each child is assigned a rating value. You are giving c ...
- Debug时检测到Loaderlock的解决办法
昨天遇到了Loaderlock的问题. 出错信息为:检测到LoaderLock,正试图在OS加载程序锁内执行托管代码,不要尝试在DllMain或映像初始化函数内运行托管代码,这样会导致应用程序挂起. ...