⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 webservicesintrobody.inc

📁 书籍教程 >> .Net教程 >> asp.net编程精彩百例
💻 INC
字号:
<%@ Register TagPrefix="Acme" Namespace="Acme" Assembly="QSTools" %>

<p>
Internet 正在向下一代 Web 站点快速演进,今天的 Web 站点仅能为浏览器提供用户界面,
而下一代可编程 Web 站点直接将企业、应用程序、服务和设备彼此链接。
这些可编程 Web 站点将不只是被动访问的站点,而将成为可重用的智能 Web 服务。
</P>
<P>
公共语言运行库提供以 ASP.NET Web 窗体开发人员和现有的 Visual Basic 用户所熟知的、
一致的方式使用编程抽象概念来创建和公开 Web 服务的内置支持。生成的模型既可以伸缩也可以扩展,
并且满足开放式 Internet 标准 (HTTP、XML、SOAP、WSDL),因此可以从任意的客户端或支持
Internet 的设备访问和使用该模型。
</P>
<H5>ASP.NET Web 服务</H5>
<P>
ASP.NET 使用 .asmx 文件提供 Web 服务支持。.asmx 文件是类似于 .aspx 文件的文本文件。
这些文件是包含 .aspx 文件的 ASP.NET 应用程序的一部分。与 .aspx 一样,这些文件是
URI 可寻址的。
</P>
<P>
以下示例说明了一个非常简单的 .asmx 文件。
</P>

<p><Acme:TabControl runat="server">
<Tab Name="C#">
&lt;%@ WebService Language=&quot;C#&quot; Class=&quot;HelloWorld&quot; %&gt;

using System;
using System.Web.Services;

public class HelloWorld : WebService {

     [WebMethod] public String SayHelloWorld() {
          return &quot;Hello World&quot;;
     }

}
</Tab>

<Tab Name="VB">
&lt;%@ WebService Language=&quot;VB&quot; Class=&quot;HelloWorld&quot; %&gt;

Imports System
Imports System.Web.Services

Public Class HelloWorld :Inherits WebService

     &lt;WebMethod()&gt; Public Function SayHelloWorld() As String
          Return(&quot;Hello World&quot;)
     End Function

End Class
</Tab>

<Tab Name="JScript">
&lt;%@ WebService Language=&quot;JScript&quot; Class=&quot;HelloWorld&quot; %&gt;

import System;
import System.Web.Services;

public class HelloWorld extends WebService {

     WebMethodAttribute public function SayHelloWorld() : String {
          return &quot;Hello World&quot;;
     }

}
</Tab>

</Acme:TabControl><p>

<P>
此文件的开始是一条 ASP.NET 指令 <b>WebService</b>,然后将语言设置为 C#、Visual Basic 
或 JScript。接着,它导入命名空间 <b>System.Web.Services</b>。您必须包括此命名空间。接下来,
声明 HelloWorld 类。此类是从基类 <B>WebService</B> 派生的(说明:从 <B>WebService</B> 基类派生
是可选的)。最后,使可以作为服务的一部分进行访问的所有方法都在其签名的前面设置属性(在 C# 中
为 <B>[WebMethod]</B>,在 Visual Basic 中为 <B>&lt;WebMethod()&gt;</B>,在 JScript 中为 
<B>WebMethodAttribute</B>)。
</P>
<P>
为使此服务可用,我们可以将该文件命名为 <b>HelloWorld.asmx</b>, 并将其放置到名为 
<B>SomeDomain.com</B> 的服务器上名为 <B>someFolder</B> 的虚拟目录内。使用 Web 浏览器,
然后就可以输入 URL <B>http://SomeDomain.com/someFolder/HelloWorld.asmx</B>,生成的页
将显示此 Web 服务(用 <b>WebMethod</b> 属性标记的服务)的公共方法,以及可用来调用这些方法
的协议(例如 SOAP 或 HTTP GET)。
</P>
<P>
将地址 <B>http://SomeDomain.com/someFolder/HelloWorld.asmx?WSDL</B> 输入到
浏览器中,这将返回一个 Web 服务描述语言 (WSDL) 文档。此 WSDL 文档非常重要,并且不能
由访问该服务的客户端使用。
</P>
<H5>访问 Web 服务</H5>
<P>
除了 ASP.NET 服务器端的技术允许开发人员创建 Web 服务之外,.NET 框架还提供了一组高级的工具和代码
来使用 Web 服务。因为 Web 服务基于开放式协议(如简单对象访问控件 (SOAP)),所以该客户端技术也可以
用于使用非 ASP.NET Web 服务。
</P>
<P>
在 SDK 中,有一个名为 Web 服务描述语言工具 (WSDL.exe) 的工具。此命令行工具用于从 WSDL 创建
代理类。例如,您可以输入:
</P>

<div class="code"><pre>
WSDL http://someDomain.com/someFolder/HelloWorld.asmx?WSDL
</pre></div>

<P>来创建一个名为 HelloWorld.cs 的代理类。</P>

<P>此类与在前一节中创建的类非常相似。它将包含一个返回字符串的名为 SayHelloWorld 的方法。
将此代理类编译到一个应用程序中,然后调用此代理类的方法,这样将生成一个代理类。生成的
代理类将通过 HTTP 包装 SOAP 请求并接收以 SOAP 方式编码的响应(随后将该响应作为字符串封送)。</P>

<P>从客户端的角度来看,代码简单明了,如下例所示。</p>

<p><Acme:TabControl runat="server">
<Tab Name="C#">
HelloWorld myHelloWorld = new HelloWorld();
String sReturn = myHelloWorld.SayHelloWorld();
</Tab>

<Tab Name="VB">
Dim myHelloWorld As New HelloWorld()
Dim sReturn As String = myHelloWorld.SayHelloWorld()
</Tab>

<Tab Name="JScript">
var myHelloWorld:HelloWorld = new HelloWorld();
var sReturn:String = myHelloWorld.SayHelloWorld();
</Tab>

</Acme:TabControl><p>

<P>The return would be "Hello World".</p>
<P>
本节的余下部分将讨论更高级的 Web 服务主题,例如发送和接收复杂数据类型。还有一节将讲述
文本模式匹配,这是一种针对任何 URI 的技术,它将文本作为 Web 服务返回。您还可以使用
Web 服务执行数据绑定操作,这个主题在“数据”一节中讨论。</p>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -