`
long546324
  • 浏览: 207049 次
  • 性别: Icon_minigender_1
  • 来自: 云南
社区版块
存档分类
最新评论

Web Service学习笔记(2)

阅读更多

创建一个简单的Web Service

上一章节中提到Web Service与网页的相似之处,这里在总结下:

1。由和通用语言运行时完全实现,包含面向对象架构,所有基类,还有一些特性,如缓存、状态和数据访问

2。几乎一致的文件和代码结构

3。所有源代码文件都是普通文本

4。vs完全支持,可以使用vs十分便捷的编辑、调试

5。使用一个基于普通文本的配置文件和vs的网站管理工具做全局或者应用程序级配置。

Web Service没有界面,它只有方法,有一些事支持从客户端远程调用的。Web Service文件的后缀名为asmx。

在Web Service应用程序第一次运行时,如果Web Service是人工编译的,并且被放在虚拟跟目录的bin目录下,那么代码隐藏对于内联编码有性能优势,因为asmx文件在Web Service运行时都会被编译成一个类。而ASP.NET 2.0在默认情况下没有这一优势,因为ASP.NET 2.0 把源代码放在App_Code目录下,并且在第一个使用时编译。

下面是一个实例(股票跟踪,不使用数据库,只是为了演示,故使用二维数组)

这个Web Service提供两个方法:

GetName:参数是一个StcokSymbol对象,返回一个字符串,内容是股票名称

GetPrice:参数是一个StcokSymbol对象,返回一个数字,表示当前股票的价格

我使用的是vs2010,

首先新建一个项目(WebSite也可以),注意选择.NET Framework 3.5,默认4是没有Web Service选项的。选择ASP.NET Web Service Application,命名为StockWebService,如图

 

我们可以看到,vs自动为我们生成了一些代码:

/// <summary>
/// Summary description for Service1
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
// To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line.
// [System.Web.Script.Services.ScriptService]
public class Service1 : System.Web.Services.WebService
{
[WebMethod]
public string HelloWorld()
{
return "Hello World";
}
} 
在Service类中,有一个名为HelloWorld的模板方法,它将返回一个字符串。这个方法使用WebMethod特性做修饰,表示该方法对Web Service使用程序可用。WebMethod特性会在后面解释。
 
按F5运行程序,可以看到如图所示

 

 

 

添加以下方法

[WebMethod]

public double GetPrice(string stockSymbol)
{
for (int i = 0; i < stocks.GetLength(0); i++)
{
if (string.Compare(stockSymbol, stocks[i, 0], true) == 0)
return Convert.ToDouble(stocks[i, 2]);
}
return 0;
}
[WebMethod]
public string GetName(string stockSymbol)
{
for (int i = 0; i < stocks.GetLength(0); i++)
{
if (string.Compare(stockSymbol, stocks[i, 0], true) == 0)
return stocks[i, 1];
}
return "Symbol not found.";
}
重新运行项目,发现多了两个方法调用的入口。
 
Web Service指令
普通的.aspx文件把Page指令作为第一行代码,而Web Service则有一个WebService指令(直接在vs不能看到,可以找到文件Service1.asmx右击编辑):
<%@ WebService Language="C#" CodeBehind="Service1.asmx.cs" Class="StockWebService.Service1" %>
Language:指定Web Service中使用的语言,不是必需的
Class:指定Web Service的类名称,必需的
CodeBehind:如果这个类没有包含在Web Service文件的代码中,且类没有被手工编译并放在bin子目录下,WebService指令的CodeBehind属性则用于指定实现WebService类的源代码文件的名称。
Debug:如果设为true,将以启用调试的方式编译Web Service。默认为false

 

从WebService类继承

虽然是可选选项,但是它有几个优点,主要优点是可获得对ASP.NET几个常见对象的访问权:

Application对象和Session对象(状态管理)、User对象(验证Web服务器调用者的身份)、Context对象(可以访问HttpContext类中调用者请求的所有特定HTTP信息)

当然也不可不继承WebService类,可能是为了克服来自.NET Framework的限制。

通过HttpContext控制Application状态

Web Service可通过HttpContext控制Application对象(也可以访问所有的ASP.NET资源)

例:在Service1.asmx.cs中添加如下方法:

/// <summary>
/// set exchange of stock
/// </summary>
/// <param name="exchange"></param>
[WebMethod]
public void SetStockExchange(string exchange)
{
Application["exchange"] = exchange;
}
[WebMethod]
public string GetStockExchange()
{
return Application["exchange"].ToString();
}

 

WebServiceBinding特性

Web Service描述语言(WebServices Description Language,WSDL)定义的绑定可作为.NET类访问WebService的接口。即绑定会定义一系列操作。一个WebService类有一个默认的绑定,它包含该类的所有Web方法,该类不存在与非默认绑定的关联。WebServiceBinding特性用于识别非默认绑定。WebService类可以具有多个WebServiceBinding特性,每一个都可以指定不同的绑定。如果Name属性被忽略,那个这个特性将指定默认绑定。

 

属性 类型 说明
ConformsTo WsiProfiles 绑定需要遵守的WS-1标准
EmitConformanceClaims Boolean 如果为true,当WSDL描述时,绑定会发出遵守的声明
Location String 定义绑定的位置,默认值为当前Web Service的URL
Name String 绑定名称
Namespace String 与绑定关联的命名空间





 

 

WebMethod特性

 

Web Service由WebService类定义的,对于WebService类而言,并不需要将所有的方法提供给Web Service使用者。对需要提供的方法,须:

1。声明为public

2。在方法声明之前设置WebMethod特性(即加上[Web Service])

WebMethod包含一些属性,用于设定web方法的行为。语法:[WebMethod(PropertyName=value)],以下是一些属性的说明

BufferResponse:默认情况下,ASP.NET在从服务器端向客户端发送响应之前,会对整个响应进行缓存。多数情况下,这是最好的做法。但是,如果响应非常长,那么需将 它设为false类禁用缓存,如果设为false,则返回到客户端的响应时16kb的块。默认值为true

CacheDuration:如同网页,Web Service也能够把返回到客户端的结果进行缓存(有点:如果客户端发出的请求与由另一个客户端发出的请求完全一致是,那么服务器就返回缓存中的响应,可以改善性能)。CacheDuration定义第一次请求之后的多少秒内,会在响应中将缓存页被发送给随后的请求。一旦缓存过期,则发送新页面给请求。默认值为0,即禁用结果缓存。如果web'方法返回的数据没有改变(如:从一小时更新一次数据库中获取数据的查询),那么就可以设置结果缓存为一个合适的时间,例如1800(30分钟)。令一方面,如果返回的数据是动态的,那么需要设置缓存持续时间较短或干脆禁用。如果Web Service没有一个相对有限的参数范围,缓冲也不适合使用。

Description:对web方法的描述,字符串类型

EnableSession:默认为false。如果设为true,web方法将启用会话状态。如果设为ture且Web Service继承自WebService类,那么会话可以使用WebService.Session。允许会话状态为应用程序增加了额外的开销。

MessageName:在C#类中,方法可以拥有相同的名字(重载),Web Service禁止使用重载。WebMethod特性的MessageName属性可以消除由多个相同名称造成的无法识别的问题。它允许对每一个方法的重载使用唯一的别名。当重载方法在SOAP消息中引用时,SOAP消息将使用MessageName而非方法的名称。

TransactionOption:ASP.NET web方法可以使用事务,但是仅当事件在web方法中初始化时可以使用。TransactionOption属性用于设置web方法是否启动一个事务。然而,因为web方法的事务必须为根对象,所有只有两个不同的行为,启用一个新对象(Required、RequiresNew)或者不启动(Disabled、NotSupported、Supported)。如果在Web Service中启用事务,需:1。添加System.EnterpriseServices.dll引用 ;2。添加命名空间(using System.EnterpriseServices;);3。向WebMethod特性添加TransactionOption属性,并设置为Required(或RequiresNew)。

 

作者:Alexis
出处:http://www.cnblogs.com/alexis/

分享到:
评论

相关推荐

    Web Service学习笔记

    在本学习笔记中,我们将深入探讨Web服务的核心概念、技术栈以及实际案例。 一、Web服务的核心概念 1. **SOAP (Simple Object Access Protocol)**:SOAP是一种基于XML的协议,用于交换结构化信息,是Web服务的基础...

    web service学习笔记1

    Web Service是一种基于可编程的Web应用程序,它允许不同系统之间的交互和数据交换,不受平台和编程语言限制。Web Service的核心技术是用于构建Service-Oriented Architecture(SOA)应用。目前,Web Service主要分为...

    Web Service 学习笔记

    Web Service 即 web 服务,它是一种跨编程语言和跨操作系统平台的远程调用技术。 Java 中共有三种 Web Service 规范: - JAX-WS(JAX-RPC): 基于 xml 数据 - JAXM&SAAJ - JAX-RS:基于 xml 或 json 数据

    Web Service学习笔记.doc

    WebService学习笔记 Web Service 是一种软件系统,为了支持跨网络的机器间相互操作交互而设计。它通常被定义为一组模块化的 API,它们可以通过网络进行调用,来执行远程系统的请求服务。在传统的程序编码中,存在...

    web service入门学习笔记

    Web Service入门学习笔记 Web Service是一种基于互联网的、平台无关的通信协议,它允许不同系统间的应用程序通过网络互相调用,实现数据交换和服务共享。在本文中,我们将深入探讨Web Service的基本概念,以及如何...

    Axis 开发Web Service(学习笔记)

    **Axis开发Web Service学习笔记** 在信息技术领域,Web服务是一种基于开放标准的互联网通信协议,允许不同的应用程序之间进行互操作。而Axis是Apache软件基金会的一个开源项目,它提供了一个强大的工具集,用于创建...

    [Web Service学习笔记]第1篇 SOAP的HelloWord实例

    里面只有这样几句话:“交易消息(包括请求和应答)是以XML格式表达的,包括两个部分:Message Header(消息头)与Service Content(交易业务内容)。” “接口协议使用HTTP协议,落地方为发起方提供访问的URL,发起方...

    Java web基础学习笔记

    这篇学习笔记将主要围绕JSP展开,探讨其基本概念、语法以及如何在实际开发中运用。 JSP(JavaServer Pages)是一种动态网页技术,它允许开发者在HTML或XML文档中嵌入Java代码,从而实现服务器端的动态内容生成。JSP...

    webservice学习笔记

    ### WebService 学习笔记详解 #### 一、实验环境搭建与配置 在开始Web Service的学习之前,首先需要搭建一个适合开发的环境。本实验基于以下配置: - 操作系统:Windows 2000 (Win2k) - JDK版本:1.6 - Java EE...

    webservice学习笔记doc文档

    在本学习笔记中,主要介绍了使用Apache Axis2框架来开发和测试Web Service的过程。Apache Axis2是Apache SOAP栈的一个实现,提供了简单且高效的Web Service开发工具。 首先,开发者需要在Eclipse集成开发环境中搭建...

    尚硅谷Webservice学习笔记

    综上所述,尚硅谷的Web Service学习笔记涵盖了XML Schema、HTTP协议基础以及Web Service的核心概念和应用,为深入理解和实践Web Service提供了基础知识。要了解更多关于Web Service的详细内容,可以通过指定的学习...

    Java web中servlet学习笔记 核心

    2. **Servlet的编写与部署** - 编写Servlet:创建一个Java类并实现Servlet接口,或者继承GenericServlet或HttpServlet。 - 配置Servlet:修改`web.xml`文件,为Servlet提供一个可以通过HTTP访问的URI。 - 部署...

    javaweb 学习笔记

    以上是关于 JavaWeb 学习笔记中提到的主要知识点,包括 Web 应用的基本概念、目录结构、配置文件详解以及 Tomcat 的虚拟目录和虚拟主机配置方法。希望这些内容能帮助初学者更好地理解 JavaWeb 开发的核心要素和技术...

    [JSP&Servlet;学习笔记(第2版)]

    **JSP(Java Server Pages)与Servlet...这个**[JSP&Servlet学习笔记(第2版)]**会涵盖这些主题,并可能包括示例代码、最佳实践和常见问题解答,帮助读者全面掌握JSP和Servlet的使用技巧,进一步提升Java Web开发能力。

    VS.NET学习笔记

    【VS.NET学习笔记】 Visual Studio .NET(简称VS.NET)是微软公司开发的一款强大的集成开发环境,用于构建基于.NET Framework的应用程序。这个平台为开发者提供了丰富的工具和功能,支持多种编程语言,如C#、VB.NET...

    ssh_web开发测试程序学习笔记

    这个“ssh_web开发测试程序学习笔记”涵盖了使用这三个框架进行Web开发和测试的基本概念、步骤和最佳实践。 Struts2是MVC(Model-View-Controller)设计模式的一个实现,它提供了强大的表单处理、国际化、异常处理...

Global site tag (gtag.js) - Google Analytics