asp.net web services

现在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 -->
web教程网

<%@ 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运行环境所编译。随后的请求就可以由缓冲的预编译类型对象执行。

web教程网



  为了测试编写好的代码,我们需用一个支持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; web教程网
}


</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 web教程网
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中的方法。 

转载于:https://www.cnblogs.com/hliq/archive/2007/04/24/2087291.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/264809.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android HTTP POST上传

HTTP POST上传通用方法,支持文字、图片、文件等。 依赖jar包下载地址:http://hc.apache.org/downloads.cgi 下载HttpClient *** Binary。 将HttpComponents libraries中的httpmime-4.3.3.jar拷贝到Android工程的libs下即可。 //填充上传实体对象Multip…

lock wait timeout exceeded; try restarting transactio解决方案

问题原因: 今天线上环境,突然出现一个问题,追踪原因是数据库中的一条语句报错,错误内容:lock wait timeout exceeded; try restarting transactio 执行update table set status 1 where id 10002;是可以…

多功能节点连线绘图控件Nevron Diagram for .NET使用方法及下载地址

Nevron Diagram for .NET是一个功能强大,世界上顶级的.NET图表控件.可扩展的图形报表构架,可以帮您创建功能丰富的Winforms及Webforms图表解决方案。这个产品构建于Nevron表述层框架之上,能为您提供令人激动的视觉冲击,您无法通过其它产品体验…

《DirectX 9.0 3D游戏开发编程基础》 第二章 绘制流水线 读书笔记

模型的表示 场景:物品或模型的集合 任何物品都可以用三角形网络逼近表示。我们经常用以下术语描述三角形网络:多边形(polygons)、图元(primitives)、网络几何单元(mesh geometry)。 描述三角形:指定三个顶点 描述物品:三角形单元列…

西安周边旅游

http://www.51766.com/scenery5/listtravel.jsp?cust_idxabl http://travel.163.com/05/0517/13/1JV57K4J00061DQU.html http://www.tourq.cn/pro/scenery/scenery_more.php?bh1|24|317 http://www.tourq.cn/pro/scenery/scenery_intro.php?bhS06082914981&type1 http:/…

CocosCreator2.1.0渲染流程与shader

CocosCreator2.1.0版本正式支持导入3D模型 对于2.5D游戏的开发来说有着重要意义 自己此前在写捕鱼游戏时了解过自定义shader 并实现了4种不同的水波效果 但经过CocosCreator版本的不断升级 尤其是1.10和2.0两个版本 旧的渲染器被抛弃了 因此老的shader特效也全都不能用了 直到最…

《Linux多线程服务端编程——使用muduo C++网络库》读书笔记

第一章 线程安全的对象生命期管理 第二章 线程同步精要 第三章 多线程服务器的适用场合与常用编程模型 第四章 C多线程系统编程精要 1.(P84)11个常用的最基本Pthreads函数: 2个:线程的创建和等待结束(join)…

MVC之前的那点事儿系列(4):Http Pipeline详细分析(上)

文章内容 继续上一章节的内容,通过HttpApplicationFactory的GetApplicationInstance静态方法获取实例,然后执行该实例的BeginProcessRequest方法进行执行余下的Http Pipeline 操作,代码如下: // Get application instance IHttpH…

Java开发人员的十大戒律

对Java开发者来说,有许多的标准和最佳实践。本文列举了每一个开发人员必须遵从的十大基本法则;如果有了可以遵从的规则而不遵从,那么将导致的是十分悲惨的结局。1. 在你的代码里加入注释每个人都知道这点,但不知何故…

c++学习书籍推荐《Advanced C++》下载

百度云及其他网盘下载地址:点我 作者简介 James Coplien先在威斯康星大学获得电气与计算机工程学士学位,后又在该大学获得计算机科学硕士学位。他在贝尔实验室的软件产品研发部门工作,在这个部门从一开始就使用C程序设计语言。近年来致力于大…

Centos 编译安装nodejsexpress框架

一. 下载nodejs 版本 wget http://nodejs.org/dist/v0.10.28/node-v0.10.28.tar.gz 二. 编译安装 cp node-v0.10.28.tar.gz /usr/src/ cd /usr/src tar zxvf node-v0.10.28.tar.gz cd node-v0.10.28/ ./configuration --prefix/usr/local/node make&make install 设置环境变…

Spring Boot 2 实践记录之 条件装配

实验项目是想要使用多种数据库访问方式,比如 JPA 和 MyBatis。 项目的 Service 层业务逻辑相同,只是具体实现代码不同,自然是一组接口,两组实现类的架构比较合理。 不过这种模式却有一个问题,如果 Bean 是按实现类装配…

通过简易的前台代码实现无限二级域名转向(来自无忧 biyuan老矣)

只要空间支持泛域名解析&#xff0c;无须服务端脚本语言和DNS&#xff0c;通过前台代码便可实现无限二级域名的构造&#xff1a; <html> <head> <title>碧原网络免费二级域名</title> <head> </head> <body> <scrīp…

MySQL入门-3:安装与客户端工具

大纲1、安装 MySQL2、检索数据3、数据过滤一、安装环境CentOS-6.5-i386mysql 5.1.73为了方便&#xff0c;这里采用yum方式安装&#xff0c;对于学习实验环境完全没问题&#xff0c;注意下面的操作都以root身份操作。除非对MySQL需要定制化或者安装多个实例&#xff0c;建议使用…

实验吧-web-天下武功唯快不破(Python中byte和str的转换)

题目&#xff1a;看看响应头 打开网站&#xff0c;既然已经提示我们看响应头了&#xff0c;那我们就看看呗(习惯bp&#xff0c;也可直接F12查看) 可以看到&#xff0c;响应头部分有个FLAG&#xff0c;而且有提示&#xff1a;please post what you find with parameter:key 所以…

一个弹出页面的徐徐升起的js效果

<HTML><HEAD><title>提醒信息</title><base target"_blank"><SCRIPT language"JavaScript"> window.resizeTo(220,210); var windowW220 // wide var windowH210 // high var Yoffset0 // in pixels, ne…

我国域名***日均58起 高安全DNS防御系统建设刻不容缓

日前&#xff0c;国家互联网应急中心发布的《2013年中国互联网网络安全报告》显示&#xff0c;作为互联网运行的关键基础设施&#xff0c;我国域名系统面临安全漏洞和拒绝服务***等多种威胁&#xff0c;是影响网络稳定运行的薄弱环节。中心监测报告显示&#xff0c;2013年针对我…

P4592 [TJOI2018]异或 (可持久化Trie)

[题目链接] https://www.luogu.org/problemnew/show/P4592 题目描述 现在有一颗以\(1\)为根节点的由\(n\)个节点组成的树&#xff0c;树上每个节点上都有一个权值\(v_i\)。现在有\(Q\)次操作&#xff0c;操作如下&#xff1a; \(1\;x\;y&#xff1a;\)查询节点xx的子树中与\(y\…

xml与数据库略解

1.0 简介 本论文简要的探讨了XML和数据库之间的关系&#xff0c;同时列出一些可以使用数据库处理XML文档的软件。虽然这里不打算详尽地介绍这些软件&#xff0c;但是笔者希望它能够描述使用数据库处理XML文档中的主要部分。这里有点偏向与关系数据库&#xff0c;…

魔方阵

①问题描述 魔方阵是一个古老的智力问题&#xff0c;它要求在一个mm的矩阵中填入1&#xff5e;m2的数字&#xff08;m为奇数&#xff09;&#xff0c;使得每一行、每一列、每条对角线的累加和都相等&#xff0c;如图1所示。 15 8 1 24 17 16 14 7 5 23 22 20 13 6…