ASP.NET创建Web服务之异步Web服务

ASP.NET创建Web服务之异步Web服务,第1张

为了改善调用阻碍线程的长期运行的方法的XML Web服务方法的性能,你应该考虑把它们作为异步的XML Web服务方法发布。实现一个异步XML Web服务方法允许线程在返回线程池的时候执行其他的代码。这允许增加一个线程池中的有限数目的线程,这样提高了整体性能和系统的可伸缩性。

通常,调用执行输入/输出 *** 作的方法的XML Web服务方法适于作为异步实现。这样的方法的例子包括和其他的XML Web服务通讯、访问远程数据库、执行网络输入/输出和读写大文件方法。这些方法都花费大量时间执行硬件级 *** 作,而把线程留着用来执行XML Web服务方法程序块。如果XML Web服务方法异步实现,那么线程可以被释放来执行其他的代码。

不管一个XML Web服务方法是否异步实现,客户端都可以与之异步通讯。使用Web服务描述语言工具(WSDL.EXE)生成的.net客户端中的代理类来实现异步通信,即使XML Web服务方法是同步实现。代理类包含用于与每个XML Web服务方法异步通信的Begin和End方法。因此,决定一个XML Web服务方法到底是异步还是同步要取决于性能。

注意:实现一个异步的XML Web服务方法对客户端和服务器上的XML Web服务之间的HTTP连接没有影响。HTTP连接既不不会关闭也不用连接池化。

实现一个异步的XML Web服务方法

实现一个异步的XML Web服务方法遵循NET Framework异步设计模式

把一个同步的XML Web服务方法分解为两个方法;其中每个都带有相同的基名--一个带有以Begin开头的名称,另一个带有以End开头的名称。

Begin方法的参数表包含方法的功能中的所有的in和by引用参数。

By引用参数是作为输入参数列出的。

倒数第二个参数必须是AsyncCallback。AsyncCallback参数允许客户端提供一个委托,在方法调用完成的时候调用。当一个异步XML Web服务方法调用另一个异步方法,这个参数可以被传入那个方法的倒数第二个参数。最后一个参数是一个对象。对象参数允许一个调用者提供状态信息给方法。当一个异步XML Web服务方法调用另一个异步方法,这个参数可以被传入那个方法的最后一个参数。

返回值必须是IAsyncResult类型的。

下面的代码示例是一个Begin方法,有一个方法函数特定的String参数。

[C#]

[WebMethod]

public IAsyncResult BeginGetAuthorRoyalties(String Author,

AsyncCallback callback, object asyncState)

[Visual Basic]

<WebMethod()> _

Public Function BeginGetAuthorRoyalties(ByVal Author As String, _

ByVal callback As AsyncCallback, ByVal asyncState As Object) _

As IAsyncResult

End方法的参数表由一个IAsyncResult类型的out和by引用参数组成。

返回值与一个同步的XML Web服务方法的返回值类型相同。

By引用参数是作为输出参数列出的。

下面的代码示例是一个End方法,返回一个AuthorRoyalties用户定义的模式。

[C#]

[WebMethod]

public AuthorRoyalties EndGetAuthorRoyalties(IAsyncResult

asyncResult)

[Visual Basic]

<WebMethod()> _

Public Function EndGetAuthorRoyalties(ByVal asyncResult As _

IAsyncResult) As AuthorRoyalties

下面的代码示例是一个和另一个XML Web服务方法异步通讯的异步XML Web服务方法。

[C#]

using System

using System.Web.Services

[WebService(Namespace="http://www.contoso.com/")]

public class MyService : WebService {

 public RemoteService remoteService

 public MyService() {

// Create a new instance of proxy class for

// the XML Web Service to be called.

remoteService = new RemoteService()

 }

 // Define the Begin method.

  [WebMethod]

 public IAsyncResult BeginGetAuthorRoyalties(String Author,AsyncCallback callback, object asyncState) {

// Begin asynchronous communictation with a different XML Web

// service.

return remoteService.BeginReturnedStronglyTypedDS(Author,

callback,asyncState)

 }

 // Define the End method.

 [WebMethod]

 public AuthorRoyalties EndGetAuthorRoyalties(IAsyncResultasyncResult) {

// Return the asynchronous result from the other XML Web service.

return remoteService.EndReturnedStronglyTypedDS(asyncResult)

 }

}

[Visual Basic]

Imports System.Web.Services

<WebService(Namespace:="http://www.contoso.com/")> _

Public Class MyService

Inherits WebService

Public remoteService As RemoteService

Public Sub New()

 MyBase.New()

 ' Create a new instance of proxy class for

 ' the XML Web service to be called.

 remoteService = New RemoteService()

End Sub

' Define the Begin method.

<WebMethod()> _

Public Function BeginGetAuthorRoyalties(ByVal Author As String, _

ByVal callback As AsyncCallback, ByVal asyncState As Object) _

As IAsyncResult

 ' Begin asynchronous communictation with a different XML Web

 ' service.

 Return remoteService.BeginReturnedStronglyTypedDS(Author, _

 callback, asyncState)

End Function

' Define the End method.

<WebMethod()> _

Public Function EndGetAuthorRoyalties(ByVal asyncResult As _

IAsyncResult) As AuthorRoyalties

 ' Return the asynchronous result from the other XML Web service.

 Return remoteService.EndReturnedStronglyTypedDS(asyncResult)

End Function

End Class

ActiveServerPages(ASP)是服务器端脚本编写环境,使用它可以创建和运行动态、交互的Web服务器应用程序。使用ASP可以组合HTML页、VBScript脚本命令和JavaScript脚本命令等,以创建交互的Web页和基于Web的功能强大的应用程序。

由于脚本程序是在服务器上而不是在客户端运行,传送到浏览器上的Web页是在Web服务器上生成的。所以不必担心浏览器能否处理脚本:Web服务器已经完成了所有脚本的处理,并将标准的HTML页面传输到浏览器。由于只有脚本的结果返回到浏览器,所以服务器端脚本不易复制。用户看不到创建他们正在浏览的页的脚本命令。

一、主体不同

1、web应用程序:是一种可以通过Web访问的应用程序,程序的最大好处是用户很容易访问应用程序。

2、web窗体应用程序:可以使用 Web 窗体页来创建可编程的 Web 页,这些 Web 页用作 Web 应用程序的用户界面。

二、特点不同

1、web应用程序:借助IE等浏览器来运行。WEB应用程序是B/S模式。Web应用程序首先是“应用程序”,和用标准的程序语言。

2、web窗体应用程序:Web 窗体页在任何浏览器或客户端设备中向用户提供信息,并使用服务器端代码来实现应用程序逻辑。

三、优势不同

1、web应用程序:是由完成特定任务的各种Web组件构成的并通过Web将服务展示给外界。在实际应用中,Web应用程序是由多个Servlet、JSP页面、HTML文件以及图像文件等组成。

2、web窗体应用程序:Web 窗体页输出几乎可以包含任何支持 HTTP 的语言,包括标准通用标记语言的子集HTML与XML、WML 和ECMAScript 。

参考资料来源:百度百科-web应用程序

参考资料来源:百度百科-Web窗体


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/8078522.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-13
下一篇2023-04-13

发表评论

登录后才能评论

评论列表(0条)

    保存