ASP.NET Web Service

asp.net|web

    现在Internet正在不断地发展着,在互联网应用刚开始的时候,我们浏览的网页只是静态的,不可交互的。而现在随着技术的日益发展,将提供给网页浏览者一个可编程的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这个我们自定义的名字空间。然后在程序中只是调用了DataTypesService中的方法。

时间: 2024-08-28 11:58:53

ASP.NET Web Service的相关文章

ASP.NET Web Service中使用Session 及 Session丢失解决方法 续

原文:ASP.NET Web Service中使用Session 及 Session丢失解决方法 续 1.关于Session丢失问题的说明汇总,参考这里 2.在Web Servcie中使用Session,需要对Web Method做如下处理 [WebMethod(EnableSession = true)]public void usingSession(){    Session["Name"] = "Name";}   如果不加EnableSession = t

什么是ASP.NET Web Service

asp.net|web 9.1 .2 在.NET Framework 上所有组件都被设计为可以作为Web Ser vi ce 提供因此基于.NET平台的Web Service 可以使用.NET Framework 的种种先进特性如语言无关性丰富的类库集成的安全服务等.NET 提供的Web Service 技术采用各种标准化的技术来描述和传输Web Service 如XML WSDL SOAP HTTP-GET HTTP-POST 等从而在.NETFramework 上构建的Web Service

JAVA+AXIS客户端调用Asp.net Web Service过程中遇到的问题及解决方法

        背景:公司与某运营商合作,运营商提供了接口文档,在文档中规定了数据流是双向的,运营商和公司之间的通讯采用Web Service方式,双方互为客户端和服务器端.这次遇到的问题,就是运营商的客户端调用我公司服务端的Web Service时出现的情况.需要特别说明的是:运营商有几十家合作伙伴,所以客户端的代码是不能因为某一家合作伙伴而修改的,各合作伙伴的WEB SERVICE开发环境也不相同,大部分都是用JAVA语言开发,而我公司是用VS2005开发的.         过程:    

调试ASP.NET WEB SERVICE项目时,IIS的默认网站一定要是80端口吗?

问题描述 今天第一次开发ASP.NETWebService项目时,发现新建一个这样的项目,VS.NET总是提示:visualstudio.net已检测到指定的web服务器运行的不是asp.net1.1版.无法运行asp.netweb应用程序网上查了很多关于这个问题的解决办法,包括重装ASP.NET等,发现问题依旧.后来发现"默认网站"的端口为88(之前80端口给别的软件占用了,改成88),就把占用80端口的软件卸载,然后重新设置"默认网站"的端口为80,这样问题解决

100问一个关于在asp.net web service中调用主页面中元素以及事件的问题!!!!!!!

问题描述 现在我在web中建了个webservice,现在我想在这个里面调用主页面即default页面里的东西,包括元素和后台事件比如页面里有个<asp:button.....>如何调用button的方法,比如后台有个函数aaaa()如何调用这个函数!!! 解决方案 解决方案二:你知道webservice是个什么东西吗?感觉你对webservice根本就不了解你只能把这些东西作为参数传过去解决方案三:建议楼主先了解下webservice解决方案四:webservice相当于一个远程函数库,它不

asp通过web service获取数据库数据 然后显示在页面上

问题描述 是在一个ASP.NET项目中,有一个webservices接口用来获取数据的,需要做登录,登录之后是在一个页面上显示用户的详细资料,所有的数据都是通过webservices来获取数据库数据的.请问怎么实现 解决方案 解决方案二:这问题问的好啊就是调用webservice取得用户信息,然后用js王页面上放呗解决方案三:引用1楼thedolphin的回复: 这问题问的好啊就是调用webservice取得用户信息,然后用js王页面上放呗 我知道可以用JS来调用webservice但是具体是怎

asp.net Web Service 接口大量数据传输解决方案_实用技巧

具体请看下面的流程图及其说明 1,流程图 2,流程说明:线程1开始请求接口获取1W条数据,当数据成功获取后,接口是闲置的,这时我们开始线程2获取数据,同时线程1继续执行获取数据的后续工作,如果转换数据,这里我用的办法是,使用预先定义的实体对象格式 反序列化XML (据说这种方式比遍历XML或是载入到DataSet中循环 读取都要高效的,具体我没有测试过 ,哈哈)将数据插入到数据后停止线程1.使用这样线程循环的办法处理所有线程读取数据.

Using ASP.NET Session State in a Web Service

asp.net|session|web Quick Overview of ASP.NET SessionsASP.NET session state is maintained by using one of two underlying mechanisms. The first is by using HTTP cookies. The idea behind HTTP cookies is that when the client sends a request, the server

Web Service中保持ASP.net的状态

asp.net|web 简介      网络程序开发者们遇到的最普遍的问题就是如何在无状态的基于HTTP协议的交互中保持状态信息.有许多聪明的办法可以解决HTTP协议的无状态问题,例如对每个请求重复发送应用程序数据包.使用HTTP认证机制来将请求映射到特定的用户.使用Cookie来存储一系列请求的状态等.在ASP.net技术中提供了一个非常有效的方案来保持状态,该方案隐藏了所有高难度的,具有挑战性的工作的细节,用户只需简单地使用System.Web.SessionState.HttpSess