荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: baty (新一代懒人), 信区: Database
标  题: Microsoft.NET框架中的SOAP
发信站: 荔园晨风BBS站 (Tue May 29 01:44:46 2001), 转信

一.简介
Microsoft? .NET 框架和 Microsoft? Visual Studio.NET 利用 XML 和 SOAP 技
术,使开发人员能够创建广泛的解决方案。SOAP 是一个简单、轻便、并在业界获
得广泛支持的协议,适用于各种各样的应用,它与 .NET 框架的结合简单而合乎自
然。
从底层开始,SOAP 的设计目标就是使之成为一种非常简单的协议,能够以各种不
同的方式满足各种不同的需求。除了 Microsoft,已有许多公司实际应用 SOAP,
例如 IBM、Develop Mentor 和 Userland。
在使用 SOAP 的体系中,有若干种关键技术。在创建基于 SOAP 的解决方案时,每
种技术都会解决开发人员的一些共同问题。这些技术分别属于 .NET Remoting、
ASP.NET Web Services 和 ATL Web Services,它们具有许多共同的技术特点:

?用于消息生成和使用的 XML。
?符合 SOAP 1.1 规范,这使 SOAP 应用之间具有很好的互操作性。
?XML 保真性(非第 5 节 SOAP 编码),用于完全断开的模型。
?WSDL(XML 方案的一种形式),用于提供说明。
?可用无状态编程模型扩展系统。
?使用 Visual Studio.NET 的良好开发环境。
ASP.NET Web Services 和 .NET Remoting 还共享下列技术:
?XCOPY 系统部署。
?System.Net,进行网络通讯时,无论在服务器还是客户端它都运行良好。
?公共语言运行时可在受控代码和线程缓冲池中重用。
?提供强大的 SOAP 支持,例如 SOAP 头和单向消息等特性。
?能够与 C#、Visual Basic.NET 或任何符合 CLS 规范的语言(如 Cobol、
Python、 ComponentPascal 等等)配合使用来编写应用程序。
除了以上列出的共同特点和技术以外,ASP.NET Web Services、.NET Remoting 和
 ATL Web Services 还分别为开发人员提供了许多特有的功能,下面这些内容有助
于开发人员在生成应用程序时把握正确的方向。
(1)生成 .ASP 应用程序,ASP.NET Web Services:
?允许与 ASP.NET HTTP 运行时紧密集成。
?鼓励开发人员着重于运用 XSD 数据类型来提供应用程序。
?在 Visual Studio.NET 中提供强大的设计支持。
(2)生成 MTS/COM+ 应用程序,.NET Remoting:
?提供全面的受控代码类型系统的网络保真性。
?提供在网络上通过引用来传递对象的功能,并且可返回到特定进程中的特定对象

?提供二进制通讯能力。
(3)生成 ATL/C++ 应用程序,ATL Server:
?提供灵活并且可控的本机 (C++) 解决方案。
?建立于 ATL Server ISAPI Web 应用体系机构之上(利用线程缓冲池、缓存,等
等)。
二.将SOAP 用作 Web 开发工具
ASP.NET Web Services 提供了 RAD 方式,以供快速创建和使用 Web 服务。这些
服务宽松地组合在一起,并可与 ASP.NET 高度集成。ASP.NET Web Services 是
Web 开发人员在 Internet 上提供 Web 服务的首选方法,它的目标是提供快速、
简便、性能优越的 SOAP 服务。
ASP.NET Web Services 可以和 ASP.NET HTTP 引擎深入集成,这使得熟悉
Microsoft Web 开发技术的开发人员能够方便地生成和使用基于 SOAP 的 Web 服
务。
ASP.NET 以 .asmx 文件提供对 Web Services 的支持。.asmx 文件是与 .aspx 文
件相似的文本文件。这些文件可以是包含 .aspx 文件的 ASP.NET 应用程序的一部
分。它们可以使用 URI 寻址方式,这和 .aspx 文件相同。
以下是一个非常简单的 .asmx 文件示例:
<%@ WebService Language="C#" Class="HelloWorld" %>
using System;
using System.Web.Services;
public class HelloWorld : WebService {
[WebMethod] public String SayHelloWorld()
{
return "Hello World";
}
}
这个文件以 ASP.NET 指示的 Web Service 开始,并将语言设置为 C#(也可以将
语言设置为 Microsoft Visual Basic?、C 或大约 30 种第三方语言中的任何一种
)。然后,它将导入名称空间 System.Web.Services。这个名称空间是必要的,您
必须在文件中包括它。下一步,声明 HelloWorld 类。这个类从基类
WebService 导出。最后,任何要作为服务的一部分来访问的方法在它们的签名之
前将具有自定义属性 [WebMethod],在 Visual Basic 中则为“<WebMethod()>”

要使这个服务生效,可以将文件命名为 HelloWorld.asmx,然后将它放在虚拟目录
 Bar 中的服务器 Foo 上。使用几乎任何兼容 HTML 3.2 或更高版本的浏览器,都
可以输入 URL http://Foo/Bar/HelloWorld.asmx 来显示这个 Web Service 的公
用方法(标有 WebMethod 属性),以及那些可用来调用这些方法的协议,例如
SOAP 或 HTTP GET。如果在 Internet Explorer 地址栏中输入 http:
//Foo/Bar/HelloWorld.asmx?SDL,基于服务说明语言 (WSDL) 语法,将产生与
XML 文件相同的信息。这个 WSDL 文件由访问服务的客户使用,并且非常重要。

三.访问 Web Serivces
除了使开发人员能够创建 Web Services 的技术之外,Microsoft .NET 框架还提
供了一套用来“使用”(即以客户端身份访问)Web Services 的成熟工具与代码
。因为 Web Services 基于简单对象访问协议 (SOAP) 和 HTTP 等开放协议,所以
这种客户端技术也可以用于使用非 ASP.NET Web Services。
SDK 中有一种称为 WebServiceUtil.exe 的工具(在 VS IDE 中使用“Add Web
Reference...”选项时自动生效)。这个程序可用于下载 Web Service 的 WSDL
说明,然后创建表示这个服务的地址的代理类。例如,您可以输入:
WebServiceUtil /c:proxy /pa:http://someDomain.
com/someFolder/HelloWorld.asmx?SDL
然后,系统将创建称为 HelloWorld.cs 的代理类。
这个类与前面创建的类看起来非常相似。它包括称为 SayHelloWorld 的方法,该
方法返回字符串。将这个代理类编译到应用程序中,然后调用其方法,结果是代理
类在 HTTP 上打包 SOAP 请求,并接收 SOAP 编码的回应,然后封送为一个字符串

从客户端来看,代码非常简单:
Dim myHelloWorld As New HelloWorld()
Dim sReturn As String = myHelloWorld.SayHelloWorld()
返回值将是“Hello World”。

--
     来 人
      我是懒人我怕谁!!

             我总有一种想为你而死的冲动

                          因为我不知如何才能把你打动

※ 来源:·荔园晨风BBS站 bbs.szu.edu.cn·[FROM: 192.168.1.247]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店