1、第3章 Web服务和NET Framework第3章 Web服务和.NET Framework本章主要内容: SOAP Toolkit的组成和功能,以及如何使用现有的语言和技术并借助SOAP Toolkit将标准的COM组件提供为Web服务 ASP.NET和.NET Framework的相关内容,以及ASP.NET和.NET Framework是如何帮助开发人员快速、高效地创建复杂的Web服务的 .NET Remoting的概念,以及它作为DCOM的.NET替代物所起的作用 ALT服务器是什么,以及它对C+开发人员所起的作用 Web服务如何被紧密集成到.NET Framework中3.1 SO
2、AP Toolkit在.NET Framework 和Visual Studio .NET推出之前,SOAP Toolkit已经被应用很长时间了。SOAP Toolkit提供了一种开发和使用Web服务的简单途径,它使开发人员能够利用自己现有的COM程序设计技能,并用最少的工作量和程序代码来创建完全兼容SOAP协议的Web服务。SOAP Toolkit并不使用.NET Framework。3.1.1 SOAP Toolkit概述SOAP Toolkit能够让开发人员将任意标准的COM对象或COM+对象提供为兼容SOAP协议的Web服务。通过HTTP协议之上的SOAP协议,任何客户程序都能够访问和
3、利用该COM组件。使用SOAP Toolkit,客户程序还能够使用Web服务。Toolkit提供了一个本地代理对象来抽象与外部Web服务的所有通信。开发人员可以把整个代理当作一个内部的组件来使用。Toolkit对象给外部的Web服务创建和发送有效的SOAP消息,还处理串行化的数据类型,并处理响应消息。3.1.2 提供Web服务SOAP Toolkit能够让开发人员将任意标准的COM对象提供为有效的Web服务。这也意味着任意客户程序(运行在任意平台上的)可以通过发送和接收有效的SOAP消息来与所提供的COM对象进行通信,这项工作是由SOAP和WSDL标准来完成的。SOAP Toolkit包括了W
4、SDL生成器,该生成器用于生成WSDL文档。该工具还生成了一个WSML文档,该文档是一个Web服务元语言文档,也是Microsoft独有的标准。WSML是一种基于XML格式的语言,用于将引入的SOAP请求映射到实际的COM对象方法上。一旦创建WSDL文件和WSML文件,COM对象就会被正确地加载和部署,该COM对象可以被提供为一个Web服务。SOAP Toolkit允许使用ISAPI监听程序或ASP页监听程序来发布Web服务。ISAPI过滤器或ASP页监听程序解释传入的SOAP消息。ISAPI监听程序与Internet信息服务(IIS)相挂钩(hooking),并对所有传入的SOAP请求进行解
5、释。ISAPI监听程序还将这些传入的SOAP请求针对载入的WSDL文件和WSML文件进行比较,如果两者之间匹配就使用WSML文件来加载正确的COM对象。ASP页监听程序在VBScript代码中完成的是同样的过程。图3-1显示了SOAP Toolkit是如何解释传入的SOAP消息的,以及它是如何调用COM对象的方法的。3.1.3 使用Web服务SOAP Toolkit提供了一个客户端对象来解释和处理发布在Internet上的WSDL文档。该对象会动态地查询一个WSDL文档,并获得远程Web服务的方法,从而成为外部Web服务的一个代理对象。例如,如果一个外部Web服务发布了如下的方法:void G
6、etSalesTax(string State,string Zip);利用该Web服务,如下的VBScript代码可以和SOAP Toolkit一起使用:Set SoapClient=CreateObject(MSSOAP.SoapClient)Call SoapClient.mssoapinit(MsgBox(SoapClient.GetSalesTax(CA,93933)可见,创建SoapClient对象的方法与创建标准的COM对象的方法是一样的。mssoapinit()方法接受了WSDL文件的位置,它还接受了几个可选参数。调用mssoapinit()方法后,Web服务方法被发布为实例化
7、的SoapClient对象的方法。3.1.4 使用SOAP Toolkit发布COM对象下面具体说明SOAP Toolkit的工作原理。该例中,我们以Visual Basic 6.0作为开发语言,创建一个简单的COM对象,并展示如何将其发布为Web服务。首先,创建一个新的Visual Basic ActiveX DLL工程。将Class1对象的名称改为MathComponent(在属性面板中改),并向文件中添加如下代码(在General和Declarations下):Public Function AddNumbers(ByVal nNum1 As Integer, ByVal nNum2 A
8、s Integer) As IntegerAddNumbers = (nNum1 + nNum2)End Function保存改工程,并将改工程编译为一个名为Math.dll的DLL文件(方法是在File菜单中选择make命令)。本COM对象是将两个数字相加并返回相加的结果,这是一个非常简单的COM对象,本例的作用是演示SOAP Toolkit的使用情况,而不是介绍如何创建一个功能齐全的COM类。为了创建WSDL和WSML文件,我们将运行SOAP Toolkit。在SOAP Toolkit 3.0 WSDL Generator的向导中,在select the COM .dll file to
9、analyze中,选择文件名为Math,COM对象选择Math.dll。参见图3-1如下。一旦选择了DLL文件,安装程序要求您从DLL文件中选择希望发布的单个组件。屏幕上显示的内容如图3-2所示。通过选中AddNumbers旁边的复选框,我们便选中了由COM对象提供的唯一方法。接下来用户必须选择部署Web服务的位置。该内容会被存储到WSDL文件中,以便客户程序通过访问该文件来获取发送SOAP请求的地址。如图3-3所示。监听程序URI是客户端Web服务的地址,通过该地址可以访问Web服务并把消息发送给该服务。需要注意的是,监听程序所在的机器不必和运行WSDL生成器的机器在同一台计算机上。用户可以
10、从ASP和ISAPI两个选项中选择合适的监听程序。如果选择ISAPI监听程序,如同在WSML文件中定义的那样,对于传入的SOAP消息使用默认的映射。ISAPI监听程序是一个被编译过的DLL文件,它提供了比ASP监听程序更好的性能优点。若使用了ASP监听程序,则会生成一个ASP文件,该文件执行SOAP消息和实际组件之间的映射。ASP文件的核心代码如下:Set SoapServer = Application(MathServer)SoapServer.SoapInvoke Request, Response, 该代码的作用是:从应用程序的高速缓存中加载了SoapServer组件,通过SoapIn
11、voke()方法调用了当前的SOAP请求。该方法执行了SOAP消息和组件上方法调用间的映射。最后,安装向导询问保存已生成的WSML文件和WSDL文件的位置。完成后,便有了一个准备部署到Web服务器的功能齐全的Web服务了。SOAP Toolkit生成了WSDL文档和一个WSML文档。WSDL文档描述了分布为外部Web服务的COM对象,WSML文档描述了所发布的Web服务和实际执行Web服务的COM对象方法之间的关系。为了安装这个Web服务,打开Internet信息服务控制窗口,并创建一个新的虚拟目录,将目录命名为soapmath,以后我们会通过工具包向导将WSDL文件放到该目录中。该目录中包含
12、了最近生成的文件,包括WSML文件、WSDL文件和ASP网页文件。如图3-4所示。WSDL文件和WSML文件必须位于IIS的一个虚拟目录中,以便客户机能够访问这两个文件,从而发现Web服务。如果选择了ASP选项,则所生成的ASP文件也必须放在同样的位置上。现在,客户机便可以给Web服务器发送SOAP消息了。那些对Web服务的调用会被ISAPI监听程序或ASP监听程序截取,根据WSML文件中的规定,它们会被发送给组件上的合适方法。所有使用了SOAP协议设备的客户程序都能够通过使用SOAP协议和HTTP消息发送的方式来访问AddNumbers()方法。下面我们使用SOAP Toolkit的客户端对
13、象创建一个VBScript客户程序,以调用该Web服务。新建一个文本文件,添加如下代码,最后将文件保存为SoapClient.vbs(VBScript脚本文件)。双击该文件,将导致Web服务被调用,并通过一个消息框返回响应消息。这演示了SOAP客户对象的工作原理,也说明了我们可以访问发布为Web服务的COM对象。Set MathService=CreateObject(MSSOAP.soapclient)MathService.mssoapinit(http:/10.1.7.181/soapmath/math.wsdl)MsgBox(MathService.AddNumbers(10,5)3.
14、1.5 何时使用SOAP ToolkitSOAP Toolkit是一项利用现有COM组件作为Web服务发布给外界的强大技术。如果用户继续使用这些技术开发或支持应用程序,SOAP Toolkit是可以使用的一个工具,通过SOAP Toolkit工具所支持的Web服务也可以使用旧的COM组件。3.1.6 SOAP Toolkit概要对于那些希望发布Web服务,但又不想移植到.NET平台的开发人员来说,SOAP Toolkit是一个非常有用的工具。使用SOAP Toolkit,能够使开发人员创建Web服务应用程序,其中所使用的技术和语言与他们在创建COM组件和应用程序时使用的技术和语言一样。使用SO
15、AP Toolkit的最大缺点是,SOAP Toolkit不是真正的.NET解决方案。SOAP Toolkit是一个使用传统的基于COM技术的语言来开发Web服务应用程序的强大工具。3.2 ASP.NETASP.NET是位于.NET Framework顶层的一组组件和服务。通过使用ASP.NET开发Web服务,开发人员可以使用.NET Framework所包含的众多类库。通过使用ASP.NET,也可以访问诸如Application、Context、Server、Session、Site和User这些内部的ASP对象,为Web应用程序提供管理状态,存储设置以及全局和用户高速缓存中的对象的功能。3
16、.2.1 提供Web服务ASP.NET的Web窗体应用程序非常像标准的ASP 3应用程序。这些ASP.NET应用程序由一组以.aspx为扩展名的文件组成,这些文件包含了应用程序的代码、逻辑和Web站点的各种Web页。ASP.NET的Web窗体应用程序和ASP 3应用程序之间的主要差别是ASP.NET页被编译过了,不像标准的ASP页是由解释过的VBScript代码组成的。Web服务位于.asmx文件中,其中包含了将它们定义为Web服务的特殊属性。ASP.NET为开发人员自动生成了WSDL文件和DISCO文件。ASP.NET还生成一个测试页,该测试页能够使用户通过Web浏览器快速测试Web服务,而
17、无需编写访问代码的客户程序。3.2.2 命名空间使用ASP.NET创建的Web服务应用程序可以使用所有的.NET Framework命名空间。下面的4个命名空间支持开发人员构建Web服务解决方案。 System.Web.Services-由使您可以用 ASP.NET 和 XML Web services 客户端来创建 XML Web services 的类组成。 System.Web.Services.Description-由使得您可以通过使用 Web 服务描述语言 (WSDL) 来公开描述 XML Web services 的类组成。 System.Web.Services.Discove
18、ry-由使得 XML Web services 客户端能够通过称为 XML Web services 发现的进程在 Web 服务器上定位到可用 XML Web services 的类组成。 System.Web.Services.Protocols-由定义在 XML Web services 客户端和用 ASP.NET 创建的 XML Web services 之间进行通信的过程中在网络上传输数据所使用的协议的类组成。3.2.3 使用Web服务像SOAP Toolkit一样,Visual Studio .NET创建了一个客户端代理对象来管理和抽象与外部Web服务进行的所有通信。这个客户端对象基
19、于远程Web服务的WSDL文件。3.2.4 .NET Remoting.NET Remoting表示分布式组件技术的下一代。.NET Remoting代替了.NET Framework中的DCOM。.NET Remoting的功能在于可以在所有消息层(如SOAP)和协议(如HTTP或TCP/IP协议)之上使用它。.NET Remoting的缺点是,它不是一个标准,它只是Microsoft独有的实现工具。3.2.5 何时使用.NET Remoting通过SOAP和HTTP标准来实例化和调用组件的能力是非常强大的,这便为开发人员提供了构建分布式面向对象系统的能力。不像大多数的Web服务,作为远程对
20、象发布的组件能够保持像标准分布式组件一样的状态和行为,也能够提供使用SOAP协议和HTTP协议对之进行调用和实例化的能力。分布式对象需要比HTTP协议提供更好的性能,例如,在一个企业内联网环境中和多个层之间,通过TCP/IP协议来使用远程对象是最佳的选择,这种方式使用了一个专有调用格式将方法调用串行化到一个二进制格式中。当SOAP协议失去通用性和互操作性之后,二进制协议的性能和安全性在某些环境可能会非常有用。远程操作的功能之所以强大便在于它的可扩展性上。只有在带有SOAP协议和二进制格式化程序时,.NET Framework才允许开发人员创建定制格式化程序并将它们插入串行化进程中,远程操作的灵
21、活性非常强大,它允许开发人员容易和高效地创建定制的、健壮的分布式系统。3.3 ALT服务器ALT服务器是一个设计用来允许C+开发人员提供和使用Web服务的工具。ALT服务器应用程序是ISAPI过滤器接口的扩展,它能够执行定制的处理,并执行已生成的HTML代码中标记符的替换。ALT服务器的目标是,为C+开发人员提供一个易用的工具,该工具仍具有和ISAPI过滤器一样的强大功能和全部特征。ALT服务器是为那些需要对Web服务应用程序具有强大的功能和控制能力的开发人员而设计的一种工具。ALT服务器允许开发人员使用C+语言构建Web服务,效果就像ISAPI一样,这在性能和可伸缩性方面给了开发人员最大的控
22、制权。当然,ALT服务器是一项非常复杂的技术,只有那些具有丰富C+开发经验的人员才能够有效使用它。3.4 小结本章我们介绍了SOAP Toolkit,以及它是如何使开发人员不使用.NET Framework便能创建和使用Web服务的。.NET提供了一组开发Web服务应用程序的强大功能。ASP.NET是.NET Framework中构建Web服务的最容易的途径。我们还介绍了.NET Remoting,通过.NET Remoting,用户能够通过任意的传输协议从任意的设备上访问远程组件。Microsoft提供了.NET Framework中的SOAP协议和TCP/IP协议来实现.NET Remoting。.NET Remoting体系机制是完全可扩展的,为了包含其他的协议和格式,可以对它进行重构或扩充。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1