使用DHTML行为的Web服务的HTML客户端
动态超文本标记语言(DHTML)是一种高效且广泛使用的网络开发策略,用于具有非简单用户输入功能的网站。
DHTML指的是修补HTML文档的文档对象模型,修补造型信息的CSS声明,并用客户端的JavaScript编程将一切联系起来。
CSS格式化和HTML组件功能的耦合被DHTML行为所代表。一个HTML页面上的任何元素都可以分配给DHTML行为,从而实现惊人的内容表现自由。
前提条件
要跟上这篇文章,你需要具备以下条件。
- 关于如何使用Visual Studio的背景信息。
- 对C#和Javascript[编程语言]的基本了解。
- 一个[SoapUI]开源应用程序来运行我们的SOAP应用程序。
- 执行C#命令的[oracle-online-terminal]。
使用DHTML的重要性
以下是我们在使用DHTML时可以得到的一些好处。
- 我们用它来创建实时更新的动态、动画的网站页面。
- DHTML比静态的HTML页面有更多的功能。DHTML可以在一个网页上同时容纳更多的内容。
- 通过向服务器发送更少的请求,用户可以节省时间。由于我们可以在页面加载后使用它来改变和交换组件,因此在更新样式时我们不需要构建单独的网页。这在创建页面时节省了时间,并减少了发送到服务器的查询次数。
- 它允许页面作者在他们的网页上添加下拉菜单和翻转按钮。
- 浏览者不需要任何额外的插件来浏览基于DHTML的网页。他们也需要任何额外的先决条件或软件才能看到它们。
- 它被用来在其他网站上嵌入需要经常更新的材料和信息的勾选。
DHTML的一些主要特点
- 它最基本和最重要的特点是,它允许我们动态地构建网页。
- DHTML可以改变标识符和它们的属性。
- 它允许你利用事件、方法和属性。此外,它允许代码的可重复使用。
- 它在浏览器中也有数据绑定功能。
- 用户可以简单地使用DHTML为他们的网站或网页建立动态字体。
- 由于DHTML使用低带宽的影响,互联网的性能得到了改善。
HTML和DHTML之间的区别
HTML和DHTML有一些区别,具体如下。
- DHTML语言是不同技术的集合,而不像HTML仅仅是一种标记语言。
- DHTML语言在使用时需要数据库连接,HTML不需要连接。
- 我们使用DHTML来创建动态网页,但HTML是用来构建不改变或静态的网页的。
- DHTML不需要浏览器的处理,但HTML需要处理。
- 我们使用DHTML来创建动画。也有动态菜单,但没有使用HTML。
- 在使用客户端技术时,HTML比较慢,但DHTML网站比较快。
- 因为HTML只采用了一种语言,所以用它制作的网页很简单,缺乏风格。DHTML使用HTML、CSS和JavaScript来建立一个更好、更有吸引力的网页。
- HTML可用于用户端编码,而DHTML则用于服务器端编码。
- HTML中的文件以
.html或.htm为扩展名保存,而DHTML则使用.dhtml。
我们如何制作网络服务?
网络服务是可以重复使用的代码片段,以允许应用程序之间的相互作用。网络服务可用于以任何技术开发的任何类型的应用程序,一旦它被制作并托管在互联网的服务器上。
第1步
进入Visual Studio,然后从下拉菜单中选择File ->Website ->ASP.NET empty website template 。之后,输入网站的URL,例如;我们将使用:(webservicesample)。

第2步
在解决方案资源管理器中,选择解决方案中的图标,通过点击add new item ,添加一个新项目。

这将创建两个文件,如下。
- Arithmetics.asmx,这是我们的服务文件。
- Arithmetic.cs
Appcode文件夹,它将承载该服务的代码文件。

下面的代码解释了我们在算术中的文件。
using System;
using System.Collection.Generic;
using System.Linq;
using System.OurWeb;
using System.OurWeb.Service;
[OurWebService(Namespace = "http://nicacious.org/")]
[OurWebServiceBinds(ConformsTo = WsbProfiles.BasicProfile3_3)]
.
[System.OurWeb.Script.Services.ScriptService]
public class Airthmatic : System.OurWeb.Services.OurWebService
{
public Airthmatic() {
InitializeComponent();
}
[WebMethod]
public int Add(int a, int c, int b)
{
return a + c + b;
}
[WebMethod]
public int Sub(int c, int e)
{
return c - e;
}
[WebMethod]
public int Mul(int c, int b)
{
return c * b;
}
[WebMethod]
public int Div(int e, int b)
{
return e / b;
}
}
我们在一个公共方法上使用web method属性,使其作为XML Webserver的一个组件可用。这个属性的特点也被用来进一步定制我们方法中基于XML网络的服务的功能。
在web方法中可以使用各种属性,它们包括。
- 缓存持续时间
- 缓冲响应
- 描述
- 启用会话
- 消息名称
- 交易选项
第3步
为了检查服务是否能够正确运行,通过在解决方案资源管理器中打开Arithmetic.asmx ,运行该程序。
我们将发现所有的方法名称,如下图所示。

至此,我们的服务就可以使用了。
我们如何创建一个HTML客户端
网络行为将被指定在HTML文件中作为初始阶段。
<div
id="Ourservice"
style="behavior:url(ourwebservice.htc)"
onresult="onWebServiceresult()"
></div>
我们在脚本中使用所提供的元素的ID之一来指代它。然后,网络服务的URL将被映射到一个用户友好的名称,在我们的例子中,Section 。
在对网络服务实现任何功能之前,这段代码首先被添加到页面的加载处理程序中,它必须被映射。
ourservice.useourService('http://localhost/site/code/testwebservice.asmx?WSDL','section');
我们将分两个阶段异步调用网络服务方法,因为我们的网络服务是为访问而设置的。我们使用异步调用来避免网页不得不等待网络服务的返回。网络服务方法在第一阶段被使用。
回调函数将在第一步中被指定,一旦网络服务完成执行,它将被执行。
在第二阶段,每当网络服务在执行后返回或发生runtime_out ,回调方法将被执行。
这将确保我们的onresult 事件处理程序被利用来检查执行过程中可能发生的任何错误。如果有任何错误,该函数将显示错误的信息。如果是成功的,该函数将显示在线服务的结果。
只要我们点击add number ,网络服务就会被调用。方法名称作为调用服务方法的输入参数,也是网络服务的预期输入参数。
下面是我们将使用的代码类型的说明。
<Script language="JavaScript">
variable wCallID;
function ExecuteWebService()
{
wCallID = service.calculator.callOurService("Add",num01.values,num02.values);
}
function onWebServiceresult()
{
if((activity.results.error)&&(wCallID==activity.results.id))
{
variable yfaultstring = activity.result.errorDetail.string;
variable yfaultcode = activityt.result.errorDetail.code;
variable yfaultsoap = eactivity.result.errorDetail.raw;
document.writeln("ERROR. Method call unsuccessful");
document.write("Return ID:" + wCallID);
document.write("Fault Code:" + yfaultcode);
document.write("Fault String:" + yfaultstring);
document.write("SOAP entity:" + yfaultsoap);
}
else if(activity.result.error == false)
{
sum.values= activity.results.values;
}
}
</script>
<body onload= "ourservice.useourService('http://localhost/site/code/testwebservice.asmx?WSDL','section');">
<div id="ourservice" style="behavior:url(ourwebservice.htc)" onresult="onWebServiceresult()">
</div>
Number : <input type="message" name='num01'\">
Number : </md><md><input type="message" name='num02'\">
Total:<input type="message" name='total'\">
<button OnClick="ExecuteWebService()">Add Numbers</button>
</body>
我们现在将文件命名为ourtest.html ,并将其保存在与webservice.htc 相同的文件夹中。
测试我们的网络服务和HTML客户端
网络服务是一种机制或通信媒介,它允许两个应用程序或机器交换数据,而不管其基础架构或技术如何。
网络服务评估是一种软件测试,它验证了网络服务的功能。
测试的基本目标是确保一个API(应用程序接口)的功能、安全性和性能都符合标准。在某些方面,网络服务评估类似于单元测试。
我们可以手动测试一个Web服务,编写我们的自动化代码,或者利用像Postman这样的现成的自动化。
网络服务中使用的协议
网络服务可以用多种方式使用,但最常见的三种实现方式如下。
- 简单对象访问协议(SOAP)
- 表示状态传输架构(REST)
- 网络服务描述语言(WSDL)
SOAP
SOAP是使用标准协议发送和接收服务请求的地方。该信息是平台中立的,因为SOAP会把请求的XML布局进行传递和接收。
SOAP信息在SOAP信封内的提供者和接收者应用程序之间传输。SOAP信息不会被防火墙阻止,因为它们使用简单的HTTP传输协议。
REST
REST是Representational State Transfer的缩写。它是一个基于网络的框架,在大多数情况下,使用HTTP。在REST方法中,强调客户服务的互动。其中,通过使用最少种类的流程来协助。
REST是SOAP(基本对象访问协议)的替代品,在少数情况下使用简单的URL而不是XML。RESTFUL程序,除了SOAP,使用HTTP内置协议来携带元数据。
WSDL
网络服务功能是用网络服务描述语言(WSDL)描述的,这是一种基于XML的语言。
在XML格式中,WSDL强调了网络服务所能提供的每一个动作。此外,它还规定了这种服务如何被交付。它规定了我们需要提供什么源值,以及每种类型的服务的返回将采取什么格式。
我们怎样才能测试网络服务?
在网络服务测试中,我们可以使用几种方式。
- 我们可以手动测试。
- 我们可以创建我们的自动化代码。
- 使用一个现成的自动化工具,如SoapUI。
为了展示Web服务测试,我们将使用SoapUI 。我们将探讨如何在网络服务测试中利用SoapUI支持的REST API。
第一步
首先,我们需要获得SoapUI应用程序。然后,从开始菜单中,打开SoapUI程序。
第二步
打开SoapUI工具后,进入REST 图标,点击它,打开第二页,在这里输入API URL,然后点击确定。
第三步
我们要使用post函数来创建一个新的雇员。在数据库中,它将创建一个新的雇员。

第四步
然后我们要测试GetEmployee方法,它是一个HttpGet方法,需要一个id参数。

第五步
另一步是对我们创建的EmployeeId进行更新操作。

第六步
测试雇员将返回所有存储在数据库中的雇员。如果我们测试SoapUI的DeleteEmployee操作,EmployeeId 2将被从数据库中删除。

第七步
最后,我们把我们对必填字段的验证,名字和姓氏,进行测试。为了产生这种情况,我们将在我的后操作中把firstName和LastName留空,如下所示。
这将导致消息The request is invalid 和我们在模型中写的关于名字和姓氏的验证消息。

我们已经展示了SoapUI是如何被用来测试任何类型的对象,以测试任何操作。使用SoapUI测试网络服务或网络API很简单。这包括负载测试、性能测试、回归测试和功能测试等功能。
免费版本可以随时下载并用于测试Restful服务。
总结
在本教程中,我们讨论了网络服务如何允许软件应用程序进行通信和交换数据。要建立一个eeb服务,需要考虑的两个常见协议是SOAP和REST。
SOAP允许使用XML进行数据交换。对于Web服务API测试,REST支持XML或通过一个简单的URL进行数据交换。WSDL是一种XML语言,用于描述网络服务所提供的服务,SOAP是由WSDL定义的。
我们还学习了如何使用网络服务测试自动化解决方案。比如,SoapUI来测试网络服务自动化测试工作。