如何使用DHTML行为的网络服务的HTML客户端

143 阅读10分钟

使用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时可以得到的一些好处。

  1. 我们用它来创建实时更新的动态、动画的网站页面。
  2. DHTML比静态的HTML页面有更多的功能。DHTML可以在一个网页上同时容纳更多的内容。
  3. 通过向服务器发送更少的请求,用户可以节省时间。由于我们可以在页面加载后使用它来改变和交换组件,因此在更新样式时我们不需要构建单独的网页。这在创建页面时节省了时间,并减少了发送到服务器的查询次数。
  4. 它允许页面作者在他们的网页上添加下拉菜单和翻转按钮。
  5. 浏览者不需要任何额外的插件来浏览基于DHTML的网页。他们也需要任何额外的先决条件或软件才能看到它们。
  6. 它被用来在其他网站上嵌入需要经常更新的材料和信息的勾选。

DHTML的一些主要特点

  • 它最基本和最重要的特点是,它允许我们动态地构建网页。
  • DHTML可以改变标识符和它们的属性。
  • 它允许你利用事件、方法和属性。此外,它允许代码的可重复使用。
  • 它在浏览器中也有数据绑定功能。
  • 用户可以简单地使用DHTML为他们的网站或网页建立动态字体。
  • 由于DHTML使用低带宽的影响,互联网的性能得到了改善。

HTML和DHTML之间的区别

HTML和DHTML有一些区别,具体如下。

  1. DHTML语言是不同技术的集合,而不像HTML仅仅是一种标记语言。
  2. DHTML语言在使用时需要数据库连接,HTML不需要连接。
  3. 我们使用DHTML来创建动态网页,但HTML是用来构建不改变或静态的网页的。
  4. DHTML不需要浏览器的处理,但HTML需要处理。
  5. 我们使用DHTML来创建动画。也有动态菜单,但没有使用HTML。
  6. 在使用客户端技术时,HTML比较慢,但DHTML网站比较快。
  7. 因为HTML只采用了一种语言,所以用它制作的网页很简单,缺乏风格。DHTML使用HTML、CSS和JavaScript来建立一个更好、更有吸引力的网页。
  8. HTML可用于用户端编码,而DHTML则用于服务器端编码。
  9. HTML中的文件以.html.htm 为扩展名保存,而DHTML则使用.dhtml

我们如何制作网络服务?

网络服务是可以重复使用的代码片段,以允许应用程序之间的相互作用。网络服务可用于以任何技术开发的任何类型的应用程序,一旦它被制作并托管在互联网的服务器上。

第1步

进入Visual Studio,然后从下拉菜单中选择File ->Website ->ASP.NET empty website template 。之后,输入网站的URL,例如;我们将使用:(webservicesample)。

This shows a website template

第2步

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

This shows a airthmatic.cs

这将创建两个文件,如下。

  • Arithmetics.asmx,这是我们的服务文件。
  • Arithmetic.cs Appcode 文件夹,它将承载该服务的代码文件。

This shows the App code

下面的代码解释了我们在算术中的文件。


 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 ,运行该程序。

我们将发现所有的方法名称,如下图所示。

Method names in the browser

至此,我们的服务就可以使用了。

我们如何创建一个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这样的现成的自动化。

网络服务中使用的协议

网络服务可以用多种方式使用,但最常见的三种实现方式如下。

  1. 简单对象访问协议(SOAP)
  2. 表示状态传输架构(REST)
  3. 网络服务描述语言(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强调了网络服务所能提供的每一个动作。此外,它还规定了这种服务如何被交付。它规定了我们需要提供什么源值,以及每种类型的服务的返回将采取什么格式。

我们怎样才能测试网络服务?

在网络服务测试中,我们可以使用几种方式。

  1. 我们可以手动测试。
  2. 我们可以创建我们的自动化代码。
  3. 使用一个现成的自动化工具,如SoapUI。

为了展示Web服务测试,我们将使用SoapUI 。我们将探讨如何在网络服务测试中利用SoapUI支持的REST API。

第一步

首先,我们需要获得SoapUI应用程序。然后,从开始菜单中,打开SoapUI程序。

第二步

打开SoapUI工具后,进入REST 图标,点击它,打开第二页,在这里输入API URL,然后点击确定。

第三步

我们要使用post函数来创建一个新的雇员。在数据库中,它将创建一个新的雇员。

Post method

第四步

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

This is the HttpGet method

第五步

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

Update of the employeeid created

第六步

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

When we delete the employeeid created

第七步

最后,我们把我们对必填字段的验证,名字和姓氏,进行测试。为了产生这种情况,我们将在我的后操作中把firstName和LastName留空,如下所示。

这将导致消息The request is invalid 和我们在模型中写的关于名字和姓氏的验证消息。

Throw of validation message

我们已经展示了SoapUI是如何被用来测试任何类型的对象,以测试任何操作。使用SoapUI测试网络服务或网络API很简单。这包括负载测试、性能测试、回归测试和功能测试等功能。

免费版本可以随时下载并用于测试Restful服务。

总结

在本教程中,我们讨论了网络服务如何允许软件应用程序进行通信和交换数据。要建立一个eeb服务,需要考虑的两个常见协议是SOAP和REST。

SOAP允许使用XML进行数据交换。对于Web服务API测试,REST支持XML或通过一个简单的URL进行数据交换。WSDL是一种XML语言,用于描述网络服务所提供的服务,SOAP是由WSDL定义的。

我们还学习了如何使用网络服务测试自动化解决方案。比如,SoapUI来测试网络服务自动化测试工作。