| 加入收藏| 设为首页| 联系我们

首页 站长学习 站长之家 源码下载 建站素材 书籍教程 常用工具
 您现在的位置: 动力中国 >> 网络编程 >> ASP.NET教程 >> 文章正文  
 ASP.NET Web Service
 

ASP.NET Web Service

http://www.domcn.org  文章来源:本站收藏  点击数:

  关键字:ASP.NET Web Service

网页浏览者一个可编程的Web 站点。这些站点将在组织、应用、服务、驱动上更加紧密的结合在一起,这些站点将通过一些应用软件直接连接到另一个Web 站点,这些可编程的Web 站点相比传统的web站点来说,将变得更加能重复使用,也更加智能化!
  
    .net平台给我们提供了一种运行环境,即公用语言运行环境(CLR,Common Language Runtime)。对 CLR来说,它提供了一种内置机制来创建一个可编程的站点,、对于Web 程序开发者和VB 程序员来说,这将是一致、熟悉的。这种模型是可以重复使用,也可以再扩展。 它包含了开放的Internet标准(HTTP, XML, SOAP, SDL)。以便它能被网页浏览者访问。
    ASP.NET 使用.asmx 文件来对Web Services的支持。.asmx 文件和.aspx文件一样都属于文本文件。它包含在.aspx文件之中,成为ASP.NET应用程序的一部分。
  
    下面我们将举一个简单的例子来介绍.asmx文件,我们还是从Hello,World这个经典的例子说起,代码如下:
  <!-- 文件名:WebService\sisam.asmx -->
  <%@ WebService Language=VB Class=HelloWorld %>
  Imports System.Web.Services
  Public Class HelloWorld :Inherits WebService
  Public Function <WebMethod( )> SayHelloWorld( ) As String
  Return(Hello World)
  End Function
  End Class
  
   说明:
  
    1.编码最开始必须进行WebService声明,从而定义这个文件为一个Web Service。而且,在同一行中设置好编程语言的类型。
  
    2.然后,引入名字空间System.Web.Services。注意,这个名字空间属于最基本的元素,必须要包含它。
  
    3.接着,声明service中的功能模块,也就是类模块,这里的类名叫HelloWorld。这个类来源于基类WebService,而且应该是public类型。
  
    4.最后,定义service的可访问方法。在表示方法的符号前面,要设置好自定义属性。对应于C#语言,属性值就是[WebMethod];对应于VB,就是。如果没有设置这个属性,那么这个方法就不能从service中访问。一个局部应用可以使用任何的public类型的类,但是只有具备[WebMethod]的类才可以通过SOAP被远程地访问。
  
    当对service的请求发生时,.asmx文件将自动地被ASP.NET运行环境所编译。随后的请求就可以由缓冲的预编译类型对象执行。
  
    为了测试编写好的代码,我们需用一个支持ASP.NET的Web服务器。假设这个Web服务器的名称叫做server1,其上有一个虚拟目录test。请跟随下面步骤开始测试:
  
  
    1.将代码保存为HelloWorld.asmx
  
    2.放到Web服务器Foo的虚拟目录Bar下
  
    3.打开Internet Explorer5,在地址栏输入http://server1/test/HelloWorld.asmx
  
    这时,我们将看到关于这个Web Service的公用方法-也就是那些标记为WebMethod属性的字符,并得知调用这些方法可以使用的协议,比如SOAP或者HTTP GET。
  
    在Internet Explorer的地址栏中输入http://Foo/Bar/HelloWorld.asmx?SDL后,将产生基于服务描述语言(Service Description Language :SDL)语法的具备相同信息的XML文件。这个SDL文件非常重要,客户端就是使用它来访问service。

    从客户端进行访问:
  
    除了允许开发者使用的创建Web Services的技术以外,Microsoft的.net框架给客户端提供了一套访问并使用Web Services的精致且高深的工具和代码。由于Web Services是基于如简单对象访问协议SOAP(Simple Object Access Protocol)和HTTP这样的开放协议标准的,从而,我们就可以使用这种客户端技术使用非ASP.NET的Web Services。当然,这也需用高水平地合成ASP.NET Web Services和这种客户端技术。
  
    SDK中有一个工具叫做WebServiceUtil.exe,我们可以使用它来下载一个Web Services的SDL描述语言,并创建表达这个Service的代理类。比如,当我们输入以下命令,就可以创建一个叫做HelloWorld.cs的代理类:
  
     WebServiceUtil /c:proxy /pa:http://someDomain.com/someFolder/HelloWorld.asmx?SDL 
  
    这个类看起来与前面创建的类非常相似。它包含一个方法SayHelloWorld,该方法返回一个字符串。将这个代理类编译到一个应用程序中,然后调用这个代理类的方法,结果就是:通过HTTP,这个代理类包装SOAP请求,然后接收SOAP编码响应,最后汇集成为一个字符串。
  
    请看关于Web Service的一个客户端例程:
  
  
    客户端访问的文件:clint.aspx,内容如下:
  
  
  <%@ Import Namespace=DataTypesService %>
  
  <html>
  <style>
  div
  {
  font: 8pt verdana;
  background-color:cccccc;
  border-color:black;
  border-width:1;
  border-style:solid;
  padding:10,10,10,10;
  }
  
  </style>
  
  <script language=VB runat=server>
  
  Public Sub Page_Load(Sender As Object, E As EventArgs)
  
  Dim D As DataTypes = New DataTypes()
  Message1.InnerHtml = D.SayHello()
  Message1.InnerHtml = Message1.InnerHtml & D.SayHelloName(Bob)
  Message3.InnerHtml = Message3.InnerHtml & D.GetMode()
  
  Dim MyIntArray As Integer() = D.GetIntArray()
  Dim MyString As String = Contents of the Array:<BR>
  
  For I = 0 To MyIntArray.Length - 1
  MyString = MyString & MyIntArray(I) & <BR>
  Next
  
  Message2.InnerHtml = Message2.InnerHtml & MyString
  
  Dim MyOrder As Order = D.GetOrder()
  Message4.InnerHtml = Message4.InnerHtml & <BR>OrderID: & MyOrder.OrderID
  Message4.InnerHtml = Message4.InnerHtml & <BR>Price: & MyOrder.Price
  
  Dim MyOrders As Order() = D.GetOrders()
  Message5.InnerHtml = Message5.InnerHtml & <BR>OrderID: & MyOrders(0).OrderID
  Message5.InnerHtml = Message5.InnerHtml & <BR>Price: & MyOrders(0).Price
  
  End Sub
  
  </script>
  
  <body style=font: 10pt verdana>
  <H4>Using DataTypes with Web Services</H4>
  
  <h5>Methods that return a Primitive (String): </h5>
  <div id=Message1 runat=server/>
  
  <h5>Methods that return an Array of Primitives (Integers): </h5>
  <div id=Message2 runat=server/>
  
  <h5>Method that returns an Enum: </h5>
  <div id=Message3 runat=server/>
  
  <h5>Method that returns a Class/Struct: </h5>
  <div id=Message4 runat=server/>
  
  <h5>Method that returns an array of Classes/Structs: </h5>
  <div id=Message5 runat=server/>
  
  </body>
  </html>
  
  
    在客户端程序中,我们使用<%@ Import Namespace=DataTypesService %>来引入DataTypesService这个我们自


ASP.NET Web Service
  • 上一篇文章:

  • 下一篇文章:
  •  热门文章
    普通文章 电子邮件改头换面 四公司畅谈未
    普通文章 PC病毒史上最声名狼藉的八大病
    普通文章 Rails系统中的AJAX开发技术简析
    普通文章 基于ASP.NET AJAX框架实现表单
    普通文章 开发ASP.NET AJAX客户端定制行
    普通文章 用JFreeChart对JSP报表进行增强
    普通文章 SQL Server 2005上的CLR和ADO.
    普通文章 SQL Server 2005的XML支持机制
    普通文章 Firefox中标签式浏览技巧大全
    普通文章 Tomcat中的Session和Cookie大揭
     
     推荐文章
    推荐文章 把Google地图嵌入网页 就是这么
    推荐文章 迅雷搜索候选资源出错的解决
    推荐文章 轻松去除迅雷里的各种广告和资
    推荐文章 突破限制 免费领养到QQ空间五级
    推荐文章 Rational统一过程RUP贴近中小软
    推荐文章 构建自己的轻量级XML DOM分析程
    推荐文章 WPS Office 2007技巧:妙用配置
    推荐文章 Excel 2007:求余数函数实用进阶
    推荐文章 浅谈ASP.NET的Postback
    推荐文章 软件开发中项目需求管理简述
     
     相关文章
    没有相关文章
    设为首页 | 加入收藏 | 广告合作 | 联系站长 | 版权申明 |
    动力中国为网友提供免费学习资料,可用资源,如果您认为我们的相关内容侵害到了您的权利请联系管理员
    Copyright © 2006-2008 domcn.org All Rights Reserved.