ServiceDescriptionImporter クラス

定義

XML Web サービスのためのクライアント プロキシ クラスの生成方法を公開します。

public ref class ServiceDescriptionImporter
public class ServiceDescriptionImporter
type ServiceDescriptionImporter = class
Public Class ServiceDescriptionImporter
継承
ServiceDescriptionImporter

次の例は、 クラスを ServiceDescriptionImporter 使用して、WSDL ファイルによって記述された XML Web サービスを呼び出すプロキシ クライアント コードを生成する方法を示しています。

#using <System.Xml.dll>
#using <System.Web.Services.dll>
#using <System.dll>

using namespace System;
using namespace System::Web::Services::Description;
using namespace System::CodeDom;
using namespace System::CodeDom::Compiler;

int main()
{
   // Get a WSDL file describing a service.
   ServiceDescription^ description = ServiceDescription::Read( "service.wsdl" );

   // Initialize a service description importer.
   ServiceDescriptionImporter^ importer = gcnew ServiceDescriptionImporter;
   importer->ProtocolName = "Soap12"; // Use SOAP 1.2.
   importer->AddServiceDescription( description, nullptr, nullptr );

   // Report on the service descriptions.
   Console::WriteLine( "Importing {0} service descriptions with {1} associated schemas.", importer->ServiceDescriptions->Count, importer->Schemas->Count );

   // Generate a proxy client.
   importer->Style = ServiceDescriptionImportStyle::Client;

   // Generate properties to represent primitive values.
   importer->CodeGenerationOptions = System::Xml::Serialization::CodeGenerationOptions::GenerateProperties;

   // Initialize a Code-DOM tree into which we will import the service.
   CodeNamespace^ nmspace = gcnew CodeNamespace;
   CodeCompileUnit^ unit = gcnew CodeCompileUnit;
   unit->Namespaces->Add( nmspace );
   
   // Import the service into the Code-DOM tree. This creates proxy code
   // that uses the service.
   ServiceDescriptionImportWarnings warning = importer->Import(nmspace,unit);
   if ( warning == (ServiceDescriptionImportWarnings)0 )
   {
      // Generate and print the proxy code in C#.
      CodeDomProvider^ provider = CodeDomProvider::CreateProvider( "CSharp" );
      ICodeGenerator^ generator = provider->CreateGenerator();
      generator->GenerateCodeFromCompileUnit( unit, Console::Out, gcnew CodeGeneratorOptions );
   }
   else
   {
      // Print an error message.
      Console::WriteLine( warning );
   }
}
using System;
using System.Web.Services.Description;
using System.CodeDom;
using System.CodeDom.Compiler;
using System.Security.Permissions;

public class Import {

    public static void Main() 
    {
        Run();
    }

    [PermissionSetAttribute(SecurityAction.Demand, Name = "Full Trust")]
    public static void Run()
    {
    // Get a WSDL file describing a service.
    ServiceDescription description = ServiceDescription.Read("service.wsdl");

    // Initialize a service description importer.
    ServiceDescriptionImporter importer = new ServiceDescriptionImporter();
    importer.ProtocolName = "Soap12";  // Use SOAP 1.2.
    importer.AddServiceDescription(description,null,null);

    // Report on the service descriptions.
    Console.WriteLine("Importing {0} service descriptions with {1} associated schemas.",
                      importer.ServiceDescriptions.Count, importer.Schemas.Count);

    // Generate a proxy client.
    importer.Style = ServiceDescriptionImportStyle.Client;

    // Generate properties to represent primitive values.
    importer.CodeGenerationOptions = System.Xml.Serialization.CodeGenerationOptions.GenerateProperties;

    // Initialize a Code-DOM tree into which we will import the service.
    CodeNamespace nmspace = new CodeNamespace();
    CodeCompileUnit unit = new CodeCompileUnit();
    unit.Namespaces.Add(nmspace);

    // Import the service into the Code-DOM tree. This creates proxy code
    // that uses the service.
    ServiceDescriptionImportWarnings warning = importer.Import(nmspace,unit);

    if (warning == 0)
    {
        // Generate and print the proxy code in C#.
        CodeDomProvider provider = CodeDomProvider.CreateProvider("CSharp");
        provider.GenerateCodeFromCompileUnit(unit, Console.Out, new CodeGeneratorOptions() );
    }
    else
    {
        // Print an error message.
        Console.WriteLine(warning); 
    }
}
}

注釈

XML Web サービスへのインターフェイスは、通常、Web サービス記述言語 (WSDL) ファイルによって記述されます。 たとえば、 で http://localhost/service.asmx公開されている ASP.NET を使用して Web サービスの WSDL の説明を取得するには、 に http://localhost/service.asmx?WSDL移動するだけです。

ServiceDescriptionImporterクラスを使用すると、WSDL 記述に含まれる情報をオブジェクトに簡単にSystem.CodeDom.CodeCompileUnitインポートできます。 パラメーターの Style 値を調整することで、透過的に呼び出すことによって Web サービスの機能を提供するクライアント プロキシ クラスを生成するか、実装せずに Web サービスの機能をカプセル化する抽象クラスを生成するようにインスタンスに指示 ServiceDescriptionImporter できます。

結果 CodeCompileUnit のオブジェクトのコードは、直接呼び出すか、任意の言語でエクスポートできます。

コンストラクター

ServiceDescriptionImporter()

ServiceDescriptionImporter クラスの新しいインスタンスを初期化します。

プロパティ

CodeGenerationOptions

コード生成のさまざまなオプションを取得または設定します。

CodeGenerator

サービスの説明インポーターによって使用されるコード ジェネレーターを取得または設定します。

ProtocolName

記述されている XML Web サービスにアクセスするために使用されるプロトコルを取得または設定します。

Schemas

XmlSchemas プロパティによって使用される ServiceDescriptions を取得します。

ServiceDescriptions

インポートされる ServiceDescription インスタンスのコレクションを取得します。

Style

ServiceDescriptions 値がインポートされるときに生成されるコードのスタイル (クライアントまたはサーバー) を決定する値を取得または設定します。

メソッド

AddServiceDescription(ServiceDescription, String, String)

指定した ServiceDescription を、インポートされる ServiceDescriptions 値のコレクションに追加します。

Equals(Object)

指定されたオブジェクトが現在のオブジェクトと等しいかどうかを判断します。

(継承元 Object)
GenerateWebReferences(WebReferenceCollection, CodeDomProvider, CodeCompileUnit, WebReferenceOptions)

Web 参照のコレクションをコンパイルして、クライアント プロキシまたはサーバー スタブを作成します。

GetHashCode()

既定のハッシュ関数として機能します。

(継承元 Object)
GetType()

現在のインスタンスの Type を取得します。

(継承元 Object)
Import(CodeNamespace, CodeCompileUnit)

指定した ServiceDescriptions 値をインポートします。これによって、Style プロパティで指定されたとおりにコードを生成します。

MemberwiseClone()

現在の Object の簡易コピーを作成します。

(継承元 Object)
ToString()

現在のオブジェクトを表す文字列を返します。

(継承元 Object)

適用対象