チュートリアル : ASP.NET を使用する基本的な XML Web サービスの構築

このトピックの対象は、レガシ テクノロジに特定されています。XML Web サービスと XML Web サービス クライアントは以下を使用して作成してください。 Windows Communication Foundation.

ASP.NET を使用して XML Web サービスを開発するには、最初に次の手順を実行します。

  1. ファイル名拡張子が .asmx のファイルを作成し、このファイル内で @WebService ディレクティブを使用して Web サービスを宣言します。

  2. Web サービスを実装するクラスを作成します。オプションとして、このクラスを WebService クラスから派生させることができます。

  3. 必要に応じて、Web サービスを実装するクラスに WebServiceAttribute 属性を適用します。

  4. Web サービスの機能を構成する Web サービス メソッドを定義します。

Web サービスの宣言

ASP.NET で XML Web サービスを作成する場合は、テキスト ファイルの先頭に必須の @ WebService ディレクティブを配置し、ファイル名の拡張子を .asmx とします。.asmx ファイルが存在し、@ WebService ディレクティブが配置されていると、XML Web サービスの URL アドレスがその実装に関連付けられます。次に、XML Web サービス クライアントで参照できるメソッドとデータ型を定義する XML Web サービス クラスを実装します。最後に、XML Web サービスの要求を処理して応答を送信するために、定義したメソッドに XML Web サービス ロジックを追加します。定義する XML Web サービス クラスは、.asmx ファイルに直接含めるか、別のファイルに含めることもできます。別のファイルを使用する場合は、ファイルをアセンブリにコンパイルする必要があります。必要に応じて、XML Web サービスを実装するクラスに WebService 属性を適用できます。XML Web サービスを実装するクラスを WebService クラスから派生させることもできます。

同一ファイルに実装が存在する Web サービスを宣言するには

  1. ファイル名拡張子が .asmx のファイルの先頭に @ WebService ディレクティブを追加し、Web サービスを実装するクラスと、実装で使用するプログラミング言語を指定します。

    Class 属性には、@ WebService ディレクティブと同じアセンブリ内にあるクラスか、別のアセンブリ内のクラスを設定できます。クラスが別のアセンブリ内に存在する場合、そのアセンブリは Web サービスが存在する Web アプリケーションの \Bin ディレクトリに配置されている必要があります。Language 属性には、C#VBJS (それぞれ、C#、Visual Basic .NET、JScript .NET を示す) を設定できます。

    次のコード例では、@ WebService ディレクティブの Language 属性を設定し、Class 属性を、同一ファイル内にある Util に設定します。**

    <%@ WebService Language="C#" Class="Util" %>
    
    <%@ WebService Language="VB" Class="Util" %>
    

アセンブリに実装が存在する Web サービスを宣言するには

  1. 拡張子が .asmx のファイルの先頭に @ WebService ディレクティブを追加し、Web サービスを実装するクラス、実装が含まれるアセンブリ、実装で使用するプログラミング言語を指定します。別のファイルを使用する場合は、ファイルをアセンブリにコンパイルする必要があります。

    次の @ WebService ディレクティブは、拡張子が .asmx のファイル内に存在する唯一のコードであり、Web サービスをホストする Web アプリケーションの \Bin ディレクトリ内にある MyAssembly アセンブリに MyName.MyWebService クラスが存在することを指定しています。

    <%@ WebService Language="C#" Class="MyName.MyWebService,MyAssembly" %>
    
    <%@ WebService Language="VB" Class="MyName.MyWebService,MyAssembly" %>
    
    7hs6sw69.note(ja-jp,VS.100).gif注 :
    @ WebService ディレクティブにアセンブリを指定しない場合、ASP.NET では、Web サービスが最初にアクセスされるときに、Web サービスをホストする Web アプリケーションの \Bin ディレクトリにあるアセンブリ一覧を検索します。したがって、アセンブリ名を指定すると、初回アクセス時のパフォーマンスを向上できます。

WebService クラスからの派生

オプションとして、ASP.NET を使用して作成した Web サービスを実装するクラスを WebService クラスから派生させて、ApplicationSessionUserContext などの共通 ASP.NET オブジェクトにアクセスできます。

WebService クラスから派生させて、共通 ASP.NET オブジェクトにアクセスするには

<%@ WebService Language="C#" Class="Util" %>
using System;
using System.Web.Services;

public class Util: WebService 
<%@ WebService Language="VB" Class="Util" %>
Imports System
Imports System.Web.Services

Public Class Util
   Inherits WebService

WebService 属性の適用

Web サービスを実装するクラスにオプションの WebService 属性を適用し、Web サービスを説明する文字列と共に、Web サービスの既定の XML 名前空間 (初期値は http://tempuri.org) を設定します。

XML Web サービスを公開する前に、既定の名前空間 http://tempuri.org を変更することを強くお勧めします。これは、誤って既定の名前空間 (<http://tempuri.org/>) を使用している他の XML Web サービスと、公開する XML Web サービスを区別する必要があるため重要です。

Web サービスがメンバーである XML 名前空間を設定するには

  1. Web サービスを実装するクラスに WebService 属性を適用し、Namespace プロパティを設定します。

次のコード例では、XML 名前空間を https://www.contoso.com/ に設定します。

<%@ WebService Language="C#" Class="Util" Debug=true%>
using System.Web.Services;
using System;

[WebService(Namespace="https://www.contoso.com/")]
public class Util: WebService 
<%@ WebService Language="VB" Class="Util"%>
Imports System.Web.Services
Imports System

<WebService(Namespace:="https://www.contoso.com/")> _
Public Class Util
    Inherits WebService

Web サービス メソッドの定義

Web サービスを実装するクラスのメソッドは、Web 上での通信機能を自動的に持つわけではありませんが、ASP.NET を使用して作成した Web サービスでは、この機能の追加は非常に簡単です。この機能を追加するには、パブリック メソッドに WebMethod 属性を適用します。Web 経由の通信が可能な Web サービスのメソッドを、Web サービス メソッドと呼びます。

Web サービス メソッドを宣言するには

  1. Web サービスを実装するクラスにパブリック メソッドを追加します。

  2. Web サービス操作に割り当てられるパブリック メソッドに、WebMethod 属性を適用します。

次のコード例には 2 つのパブリック メソッドがあり、その 1 つが Web サービス メソッドです。Multiply メソッドは、WebMethod 属性が適用されているので Web サービス メソッドです。

<%@ WebService Language="C#" Class="Util" %>
using System.Web.Services;
using System;

[WebService(Namespace="https://www.contoso.com/")]
public class Util: WebService 
{
    [ WebMethod]    public long Multiply(int a, int b) 
    {
        return a * b;
    }
}
<%@ WebService Language="VB" Class="Util" %>

Imports System.Web.Services
Imports System

<WebService(Namespace:="https://www.contoso.com/")> 
Public Class Util 
    Inherits WebService
    < WebMethod()> _    Public Function Multiply(a As Integer, b As Integer) As Long
        Return a * b
    End Function
End Class

参照

リファレンス

WebService Class
WebServiceAttribute Class
WebMethodAttribute Class

概念

ASP.NET XML Web サービスの基本

その他のリソース

ASP.NET を使用した XML Web サービス